Unverified Commit 0b50b3b1 authored by Keyon Jie's avatar Keyon Jie Committed by Mark Brown
Browse files

ASoC: SOF: PM: implement prepare/complete callbacks



Implement the prepare() and complete() callbacks for power management,
initialize s0_suspend flag at prepare(), and reset it at complete().

Signed-off-by: default avatarKeyon Jie <yang.jie@linux.intel.com>
Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20191025224122.7718-22-pierre-louis.bossart@linux.intel.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 4cd933ab
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -439,3 +439,26 @@ int snd_sof_suspend(struct device *dev)
	return sof_suspend(dev, false);
}
EXPORT_SYMBOL(snd_sof_suspend);

int snd_sof_prepare(struct device *dev)
{
	struct snd_sof_dev *sdev = dev_get_drvdata(dev);

#if defined(CONFIG_ACPI)
	sdev->s0_suspend = acpi_target_system_state() == ACPI_STATE_S0;
#else
	/* will suspend to S3 by default */
	sdev->s0_suspend = false;
#endif

	return 0;
}
EXPORT_SYMBOL(snd_sof_prepare);

void snd_sof_complete(struct device *dev)
{
	struct snd_sof_dev *sdev = dev_get_drvdata(dev);

	sdev->s0_suspend = false;
}
EXPORT_SYMBOL(snd_sof_complete);
+2 −0
Original line number Diff line number Diff line
@@ -492,6 +492,8 @@ int snd_sof_runtime_resume(struct device *dev);
int snd_sof_runtime_idle(struct device *dev);
int snd_sof_resume(struct device *dev);
int snd_sof_suspend(struct device *dev);
int snd_sof_prepare(struct device *dev);
void snd_sof_complete(struct device *dev);
int snd_sof_set_d0_substate(struct snd_sof_dev *sdev,
			    enum sof_d0_substate d0_substate);