On Mon, Aug 17, 2009 at 07:22:34PM +0800, Shine Liu wrote:
When I play a wav file using aplay, I found there's no sound. After some debug work, I noticed that the DAC power control bit keeps zero since the system started up.
Please try the patch below.
commit 6294523841a61cd1ad24f220daf6e73e9cc83184 Author: Mark Brown broonie@opensource.wolfsonmicro.com Date: Mon Aug 17 11:55:38 2009 +0100
ASoC: Fix handling of bias levels for non-DAPM codecs
If the system doesn't have any DAPM widgets then we can't use their state to check if the bias level for the codec should be up.
Signed-off-by: Mark Brown broonie@opensource.wolfsonmicro.com
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index c68c204..4a21a5e 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -966,6 +966,22 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event) } }
+ /* If there are no DAPM widgets then try to figure out power from the + * event type. + */ + if (list_empty(&codec->dapm_widgets)) { + switch (event) { + case SND_SOC_DAPM_STREAM_START: + case SND_SOC_DAPM_STREAM_RESUME: + sys_power = 1; + break; + case SND_SOC_DAPM_STREAM_NOP: + sys_power == codec->bias_level != SND_SOC_BIAS_STANDBY; + default: + break; + } + } + /* If we're changing to all on or all off then prepare */ if ((sys_power && codec->bias_level == SND_SOC_BIAS_STANDBY) || (!sys_power && codec->bias_level == SND_SOC_BIAS_ON)) {