Set power bits in output stage control registers to reflect the "!muted" bits. The codec needs them set in order to operate correctly. Signed-off-by: Daniel Mack <daniel@xxxxxxxx>
From: Daniel Mack <daniel@xxxxxxxx> Set power bits in output stage control registers to reflect the "!muted" bits. The codec needs them set in order to operate correctly. Signed-off-by: Daniel Mack <daniel@xxxxxxxx> diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c index 6e4bc69..c4c50b7 100644 --- a/sound/soc/codecs/tlv320aic3x.c +++ b/sound/soc/codecs/tlv320aic3x.c @@ -93,6 +93,28 @@ static const u8 aic3x_reg[AIC3X_CACHEREGNUM] = { }; /* + * power up/down aic3x functions + */ +static inline void aic3x_handle_pwr_bits(unsigned int reg, unsigned int *val) +{ + switch (reg) { + case HPLOUT_CTRL: + case HPROUT_CTRL: + case HPLCOM_CTRL: + case HPRCOM_CTRL: + case LLOPM_CTRL: + case RLOPM_CTRL: + case MONOLOPM_CTRL: + if (*val & 0x08) + *val |= 0x01; + else + *val &= ~0x01; + + break; + } +} + +/* * read aic3x register cache */ static inline unsigned int aic3x_read_reg_cache(struct snd_soc_codec *codec, @@ -124,6 +146,8 @@ static int aic3x_write(struct snd_soc_codec *codec, unsigned int reg, { u8 data[2]; + aic3x_handle_pwr_bits(reg, &value); + /* data is * D15..D8 aic3x register offset * D7...D0 register data
_______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel