From d3aa6797cbe56fe357bd052249b59aaa02f17d4a Mon Sep 17 00:00:00 2001 From: Stephen Warren Date: Wed, 25 May 2011 14:06:41 -0600 Subject: [PATCH] --- yaml --- r: 257470 b: refs/heads/master c: 82e14e8bdd88b69018fe757192b01dd98582905e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/sound/soc/soc-core.c | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index becb148dc59e..61a4081be46b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b6f7d7c8bf40800ac68e16302bb7627c59ea9168 +refs/heads/master: 82e14e8bdd88b69018fe757192b01dd98582905e diff --git a/trunk/sound/soc/soc-core.c b/trunk/sound/soc/soc-core.c index a477e218aa28..c261eeb835b4 100644 --- a/trunk/sound/soc/soc-core.c +++ b/trunk/sound/soc/soc-core.c @@ -1256,7 +1256,7 @@ static void soc_resume_deferred(struct work_struct *work) int snd_soc_resume(struct device *dev) { struct snd_soc_card *card = dev_get_drvdata(dev); - int i; + int i, ac97_control = 0; /* AC97 devices might have other drivers hanging off them so * need to resume immediately. Other drivers don't have that @@ -1265,14 +1265,15 @@ int snd_soc_resume(struct device *dev) */ for (i = 0; i < card->num_rtd; i++) { struct snd_soc_dai *cpu_dai = card->rtd[i].cpu_dai; - if (cpu_dai->driver->ac97_control) { - dev_dbg(dev, "Resuming AC97 immediately\n"); - soc_resume_deferred(&card->deferred_resume_work); - } else { - dev_dbg(dev, "Scheduling resume work\n"); - if (!schedule_work(&card->deferred_resume_work)) - dev_err(dev, "resume work item may be lost\n"); - } + ac97_control |= cpu_dai->driver->ac97_control; + } + if (ac97_control) { + dev_dbg(dev, "Resuming AC97 immediately\n"); + soc_resume_deferred(&card->deferred_resume_work); + } else { + dev_dbg(dev, "Scheduling resume work\n"); + if (!schedule_work(&card->deferred_resume_work)) + dev_err(dev, "resume work item may be lost\n"); } return 0;