diff options
author | Jarkko Nikula <jarkko.nikula@linux.intel.com> | 2014-08-11 07:15:37 -0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-08-11 08:40:23 -0400 |
commit | 9246539bdda4206c53be1045778b642f1c8137e4 (patch) | |
tree | a63d992efab421442ba51c6989d94649e20ddaad /sound | |
parent | 27d3f02689cce5c4063a4f8dd88ce19d08a33fe6 (diff) |
ASoC: Intel: Wait Baytrail ADSP boot at resume_early stage
Remove sst_byt_pcm_dev_resume() and move waiting of firmware boot into
sst_byt_pcm_dev_resume_early(). Now suspend_late and resume_early phases are
in sync with each other so that we know that ADSP was put into reset and was
unpowered after suspend_late and is ready to resume IO after resume_early
during resume stage in sst_byt_pcm_trigger().
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Tested-by: Borun Fu <borun.fu@intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/intel/sst-baytrail-pcm.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/sound/soc/intel/sst-baytrail-pcm.c b/sound/soc/intel/sst-baytrail-pcm.c index ba7ed9720732..eb7b31e13565 100644 --- a/sound/soc/intel/sst-baytrail-pcm.c +++ b/sound/soc/intel/sst-baytrail-pcm.c | |||
@@ -423,18 +423,14 @@ static int sst_byt_pcm_dev_suspend_late(struct device *dev) | |||
423 | static int sst_byt_pcm_dev_resume_early(struct device *dev) | 423 | static int sst_byt_pcm_dev_resume_early(struct device *dev) |
424 | { | 424 | { |
425 | struct sst_pdata *sst_pdata = dev_get_platdata(dev); | 425 | struct sst_pdata *sst_pdata = dev_get_platdata(dev); |
426 | int ret; | ||
426 | 427 | ||
427 | dev_dbg(dev, "resume early\n"); | 428 | dev_dbg(dev, "resume early\n"); |
428 | 429 | ||
429 | /* load fw and boot DSP */ | 430 | /* load fw and boot DSP */ |
430 | return sst_byt_dsp_boot(dev, sst_pdata); | 431 | ret = sst_byt_dsp_boot(dev, sst_pdata); |
431 | } | 432 | if (ret) |
432 | 433 | return ret; | |
433 | static int sst_byt_pcm_dev_resume(struct device *dev) | ||
434 | { | ||
435 | struct sst_pdata *sst_pdata = dev_get_platdata(dev); | ||
436 | |||
437 | dev_dbg(dev, "resume\n"); | ||
438 | 434 | ||
439 | /* wait for FW to finish booting */ | 435 | /* wait for FW to finish booting */ |
440 | return sst_byt_dsp_wait_for_ready(dev, sst_pdata); | 436 | return sst_byt_dsp_wait_for_ready(dev, sst_pdata); |
@@ -443,7 +439,6 @@ static int sst_byt_pcm_dev_resume(struct device *dev) | |||
443 | static const struct dev_pm_ops sst_byt_pm_ops = { | 439 | static const struct dev_pm_ops sst_byt_pm_ops = { |
444 | .suspend_late = sst_byt_pcm_dev_suspend_late, | 440 | .suspend_late = sst_byt_pcm_dev_suspend_late, |
445 | .resume_early = sst_byt_pcm_dev_resume_early, | 441 | .resume_early = sst_byt_pcm_dev_resume_early, |
446 | .resume = sst_byt_pcm_dev_resume, | ||
447 | }; | 442 | }; |
448 | 443 | ||
449 | #define SST_BYT_PM_OPS (&sst_byt_pm_ops) | 444 | #define SST_BYT_PM_OPS (&sst_byt_pm_ops) |