From a67770e1b9c2c474fc05934b339fe4d0ce294351 Mon Sep 17 00:00:00 2001 From: Phani Kumar Uppalapati Date: Fri, 26 Feb 2016 17:10:21 -0800 Subject: [PATCH] ASoC: wcd9335: Update TX gain correctly after decimator enable Gain for TX decimator block needs to be set after the corresponding decimator is enabled. Otherwise, gain will not take affect. Apply the gain by reading from regmap cache to the codec decimator hardware after decimator is enabled. CRs-fixed: 982473 Change-Id: Ib2d189b56e58b038a343fc974e6e3b8ef29f982d Signed-off-by: Phani Kumar Uppalapati --- sound/soc/codecs/wcd9335.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sound/soc/codecs/wcd9335.c b/sound/soc/codecs/wcd9335.c index b2d4e08a55cc..9119a75f763b 100644 --- a/sound/soc/codecs/wcd9335.c +++ b/sound/soc/codecs/wcd9335.c @@ -5792,6 +5792,7 @@ static int tasha_codec_enable_dec(struct snd_soc_dapm_widget *w, char *wname; int ret = 0, amic_n; u16 tx_vol_ctl_reg, pwr_level_reg = 0, dec_cfg_reg, hpf_gate_reg; + u16 tx_gain_ctl_reg; char *dec; u8 hpf_cut_off_freq; struct tasha_priv *tasha = snd_soc_codec_get_drvdata(codec); @@ -5834,6 +5835,7 @@ static int tasha_codec_enable_dec(struct snd_soc_dapm_widget *w, tx_vol_ctl_reg = WCD9335_CDC_TX0_TX_PATH_CTL + 16 * decimator; hpf_gate_reg = WCD9335_CDC_TX0_TX_PATH_SEC2 + 16 * decimator; dec_cfg_reg = WCD9335_CDC_TX0_TX_PATH_CFG0 + 16 * decimator; + tx_gain_ctl_reg = WCD9335_CDC_TX0_TX_VOL_CTL + 16 * decimator; switch (event) { case SND_SOC_DAPM_PRE_PMU: @@ -5896,6 +5898,9 @@ static int tasha_codec_enable_dec(struct snd_soc_dapm_widget *w, schedule_delayed_work( &tasha->tx_hpf_work[decimator].dwork, msecs_to_jiffies(300)); + /* apply gain after decimator is enabled */ + snd_soc_write(codec, tx_gain_ctl_reg, + snd_soc_read(codec, tx_gain_ctl_reg)); break; case SND_SOC_DAPM_PRE_PMD: hpf_cut_off_freq =