[alsa-devel] [PATCH] ASoC: core: Don't schedule deferred_resume_work twice

Liam Girdwood lrg at ti.com
Thu May 26 12:56:46 CEST 2011

On 25/05/11 21:06, Stephen Warren wrote:
> For cards that have two or more DAIs, snd_soc_resume's loop over all
> DAIs ends up calling schedule_work(deferred_resume_work) once per DAI.
> Since this is the same work item each time, the 2nd and subsequent
> calls return 0 (work item already queued), and trigger the dev_err
> message below stating that a work item may have been lost.
> Solve this by adjusting the loop to simply calculate whether to run the
> resume work immediately or defer it, and then call schedule work (or not)
> one time based on that.
> Note: This has not been tested in mainline, but only in chromeos-2.6.38;
> mainline doesn't support suspend/resume on Tegra, nor does the mainline
> Tegra ASoC driver contain multiple DAIs. It has been compile-checked in
> mainline.
> Signed-off-by: Stephen Warren <swarren at nvidia.com>
> ---
>  sound/soc/soc-core.c |   19 ++++++++++---------
>  1 files changed, 10 insertions(+), 9 deletions(-)

This looks fine for 2.6.41. 

Acked-by: Liam girdwood <lrg at ti.com>

More information about the Alsa-devel mailing list