Browse Source

ASoC: Disable automatic volume control in the CS4270 sound driver

Disable the automatic volume control feature of the CS4270 audio codec.  This
feature, which is enabled by default, causes volume change commands to be
delayed.  Sometimes the volume change happens after playback is started.

Signed-off-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Timur Tabi 17 years ago
parent
commit
0c235d1e83
1 changed files with 13 additions and 0 deletions
  1. 13 0
      sound/soc/codecs/cs4270.c

+ 13 - 0
sound/soc/codecs/cs4270.c

@@ -450,6 +450,19 @@ static int cs4270_hw_params(struct snd_pcm_substream *substream,
 		return ret;
 		return ret;
 	}
 	}
 
 
+	/* Disable automatic volume control.  It's enabled by default, and
+	 * it causes volume change commands to be delayed, sometimes until
+	 * after playback has started.
+	 */
+
+	reg = cs4270_read_reg_cache(codec, CS4270_TRANS);
+	reg &= ~(CS4270_TRANS_SOFT | CS4270_TRANS_ZERO);
+	ret = cs4270_i2c_write(codec, CS4270_TRANS, reg);
+	if (ret < 0) {
+		printk(KERN_ERR "I2C write failed\n");
+		return ret;
+	}
+
 	/* Thaw and power-up the codec */
 	/* Thaw and power-up the codec */
 
 
 	ret = snd_soc_write(codec, CS4270_PWRCTL, 0);
 	ret = snd_soc_write(codec, CS4270_PWRCTL, 0);