[alsa-devel] [PATCH] ASoC: UDA134X Codec: Fix mute/unmute code mistake and add ADC/DAC power control support

Mark Brown broonie at opensource.wolfsonmicro.com
Mon Aug 17 13:27:57 CEST 2009


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 at 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 at 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)) {


More information about the Alsa-devel mailing list