From patchwork Thu Nov 26 10:22:31 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Brown X-Patchwork-Id: 63124 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id nAQAMXpb006774 for ; Thu, 26 Nov 2009 10:22:34 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760144AbZKZKW0 (ORCPT ); Thu, 26 Nov 2009 05:22:26 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1760120AbZKZKW0 (ORCPT ); Thu, 26 Nov 2009 05:22:26 -0500 Received: from opensource.wolfsonmicro.com ([80.75.67.52]:57529 "EHLO opensource2.wolfsonmicro.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754569AbZKZKWZ (ORCPT ); Thu, 26 Nov 2009 05:22:25 -0500 Received: from rakim.wolfsonmicro.main (lumison.wolfsonmicro.com [87.246.78.27]) by opensource2.wolfsonmicro.com (Postfix) with ESMTPSA id 77C0D769663; Thu, 26 Nov 2009 10:22:31 +0000 (GMT) Received: from broonie by rakim.wolfsonmicro.main with local (Exim 4.69) (envelope-from ) id 1NDbUd-0007F4-0u; Thu, 26 Nov 2009 10:22:31 +0000 Date: Thu, 26 Nov 2009 10:22:31 +0000 From: Mark Brown To: "Aggarwal, Anuj" Cc: "'Troy Kisky'" , "alsa-devel@alsa-project.org" , "linux-omap@vger.kernel.org" , Arun KS Subject: Re: [alsa-devel] [PATCH] ASoC: AM3517: Fix AIC23 suspend/resume hang Message-ID: <20091126102230.GB27562@rakim.wolfsonmicro.main> References: <1259154631-15251-1-git-send-email-anuj.aggarwal@ti.com> <4B0D9212.1060805@boundarydevices.com> <5A47E75E594F054BAF48C5E4FC4B92AB030AAC2F86@dbde02.ent.ti.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <5A47E75E594F054BAF48C5E4FC4B92AB030AAC2F86@dbde02.ent.ti.com> X-Cookie: 40 isn't old. If you're a tree. User-Agent: Mutt/1.5.20 (2009-06-14) Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index d89f6dc..66d4c16 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -973,9 +973,19 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event) if (!w->power_check) continue; - power = w->power_check(w); - if (power) - sys_power = 1; + /* If we're suspending then pull down all the + * power. */ + switch (event) { + case SND_SOC_DAPM_STREAM_SUSPEND: + power = 0; + break; + + default: + power = w->power_check(w); + if (power) + sys_power = 1; + break; + } if (w->power == power) continue; @@ -999,8 +1009,12 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event) case SND_SOC_DAPM_STREAM_RESUME: sys_power = 1; break; + case SND_SOC_DAPM_STREAM_SUSPEND: + sys_power = 0; + break; case SND_SOC_DAPM_STREAM_NOP: sys_power = codec->bias_level != SND_SOC_BIAS_STANDBY; + break; default: break; }