[alsa-devel] [PATCH 0/3] ASoC: Intel: Baytrail: Fix stream restore after aborted suspend

Jarkko Nikula jarkko.nikula at linux.intel.com
Mon Aug 11 13:15:35 CEST 2014


It was found that resuming active stream fails on Baytrail ADSP in case
of aborted suspend or when testing only partial suspend. Reason for
this is that in those cases ADSP doesn't reach reset even though resume
path is expecting so and fails to restart stream.

This revealed that suspend and resume phases do not go together:
Operating state is not the same after returning certain resume phase
than it was prior entering into corresponding suspend phase. Also we
unload firmware in suspend_late before putting ADSP into reset in
suspend_noirq when ADSP is actually already powered down.

Fix these by first rearranging and simplifying suspend/resume: Put ADSP
into reset in suspend_late and bring it back in resume_late. Now only
these will take care of ADSP reset and reboot and
SNDRV_PCM_TRIGGER_SUSPEND/SNDRV_PCM_TRIGGER_RESUME callbacks will take
care of stream stop/restart during suspend and resume phases.

Then modify stream resume so that full stream reallocation and restart
is done only if suspend_late was reached. Otherwise resume it by using
the IPC that resumes paused stream.

Jarkko Nikula (3):
  ASoC: Intel: Merge Baytrail ADSP suspend_noirq into suspend_late
  ASoC: Intel: Wait Baytrail ADSP boot at resume_early stage
  ASoC: Intel: Restore Baytrail ADSP streams only when ADSP was in reset

 sound/soc/intel/sst-baytrail-ipc.c | 10 +--------
 sound/soc/intel/sst-baytrail-ipc.h |  1 -
 sound/soc/intel/sst-baytrail-pcm.c | 43 +++++++++++++-------------------------
 3 files changed, 16 insertions(+), 38 deletions(-)

-- 
2.0.1



More information about the Alsa-devel mailing list