From 1a1095927d224403af8ad57c354cc64521bf3081 Mon Sep 17 00:00:00 2001 From: Paul Cercueil Date: Sat, 16 Jun 2012 19:36:31 +0200 Subject: [PATCH 4/7] ASoC: JZ4740: delay activation of the DAC to work around a sound bug. A proper fix of that bug would require a big rewrite of the driver, which (I hope) will be done eventually. --- sound/soc/codecs/jz4740.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sound/soc/codecs/jz4740.c b/sound/soc/codecs/jz4740.c index df7c01c..6939444 100644 --- a/sound/soc/codecs/jz4740.c +++ b/sound/soc/codecs/jz4740.c @@ -249,12 +249,15 @@ static int jz4740_codec_set_bias_level(struct snd_soc_codec *codec, case SND_SOC_BIAS_ON: break; case SND_SOC_BIAS_PREPARE: - mask = JZ4740_CODEC_1_VREF_DISABLE | - JZ4740_CODEC_1_VREF_AMP_DISABLE | - JZ4740_CODEC_1_HEADPHONE_POWERDOWN_M; + mask = JZ4740_CODEC_1_HEADPHONE_POWERDOWN_M; value = 0; regmap_update_bits(regmap, JZ4740_REG_CODEC_1, mask, value); + + msleep(500); + mask = JZ4740_CODEC_1_VREF_DISABLE | + JZ4740_CODEC_1_VREF_AMP_DISABLE; + regmap_update_bits(regmap, JZ4740_REG_CODEC_1, mask, 0); break; case SND_SOC_BIAS_STANDBY: /* The only way to clear the suspend flag is to reset the codec */ -- 1.7.10.4