ASoC: SOF: PM: add helpers for setting D0 substate for ADSP
authorKeyon Jie <yang.jie@linux.intel.com>
Fri, 25 Oct 2019 22:41:13 +0000 (17:41 -0500)
committerMark Brown <broonie@kernel.org>
Mon, 28 Oct 2019 14:44:17 +0000 (14:44 +0000)
Add snd_sof_set_d0_substate() helper for setting ADSP to a specific D0
substate, it will call into the platform specific implementation, and
update the d0_substate at success.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20191025224122.7718-18-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/pm.c
sound/soc/sof/sof-priv.h

index ac900fb..584241e 100644 (file)
@@ -411,6 +411,23 @@ int snd_sof_runtime_resume(struct device *dev)
 }
 EXPORT_SYMBOL(snd_sof_runtime_resume);
 
+int snd_sof_set_d0_substate(struct snd_sof_dev *sdev,
+                           enum sof_d0_substate d0_substate)
+{
+       int ret;
+
+       /* do platform specific set_state */
+       ret = snd_sof_dsp_set_power_state(sdev, d0_substate);
+       if (ret < 0)
+               return ret;
+
+       /* update dsp D0 sub-state */
+       sdev->d0_substate = d0_substate;
+
+       return 0;
+}
+EXPORT_SYMBOL(snd_sof_set_d0_substate);
+
 int snd_sof_resume(struct device *dev)
 {
        return sof_resume(dev, false);
index 7a21a45..2231c67 100644 (file)
@@ -485,6 +485,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_set_d0_substate(struct snd_sof_dev *sdev,
+                           enum sof_d0_substate d0_substate);
 
 void snd_sof_new_platform_drv(struct snd_sof_dev *sdev);