ASoC: Intel: Add support for PM ops in bxt-rt298

We need card to be early suspended and late resumed, so use prepare and
complete for card suspend and resume.

Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
Signed-off-by: Senthilnathan Veppur <senthilnathanx.veppur@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Jeeja KP 2016-06-13 17:59:04 +05:30 committed by Mark Brown
parent 2f74053bea
commit 3513798ca4
1 changed files with 23 additions and 0 deletions

View File

@ -454,10 +454,33 @@ static int broxton_audio_probe(struct platform_device *pdev)
return devm_snd_soc_register_card(&pdev->dev, &broxton_rt298);
}
/*
* we want the card to be suspend first and then platform driver. This
* allows the DAPM to tear down pipelines on suspend and then platform shuts
* down the DSP. For this use .prepare for suspending card
*
* Similarly, use complete to let DSP download firmware first and then sync
* DAPM and restore pipelines to DSP
*/
static void broxton_rt298_complete(struct device *dev)
{
snd_soc_resume(dev);
}
static const struct dev_pm_ops broxton_pm_ops = {
.prepare = snd_soc_suspend,
.complete = broxton_rt298_complete,
.freeze = snd_soc_suspend,
.thaw = snd_soc_resume,
.poweroff = snd_soc_poweroff,
.restore = snd_soc_resume,
};
static struct platform_driver broxton_audio = {
.probe = broxton_audio_probe,
.driver = {
.name = "bxt_alc298s_i2s",
.pm = &broxton_pm_ops,
},
};
module_platform_driver(broxton_audio)