diff options
author | Bard Liao <bardliao@realtek.com> | 2016-04-26 06:07:10 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-04-26 06:11:08 -0400 |
commit | 3c9e014c442caefa14c71494ca4473121007f60f (patch) | |
tree | f35b47dfb9c3aeeb14afbed3fe14005b7dbe7e49 | |
parent | f55532a0c0b8bb6148f4e07853b876ef73bc69ca (diff) |
ASoC: rt298: reset AD dilter is there is no MCLK
rt298 need to reset AD filter and the ADC settings will take effort.
Signed-off-by: Bard Liao <bardliao@realtek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/codecs/rt298.c | 20 | ||||
-rw-r--r-- | sound/soc/codecs/rt298.h | 2 |
2 files changed, 22 insertions, 0 deletions
diff --git a/sound/soc/codecs/rt298.c b/sound/soc/codecs/rt298.c index f0e6c06e89ac..178b1cc22e05 100644 --- a/sound/soc/codecs/rt298.c +++ b/sound/soc/codecs/rt298.c | |||
@@ -481,6 +481,26 @@ static int rt298_adc_event(struct snd_soc_dapm_widget *w, | |||
481 | snd_soc_update_bits(codec, | 481 | snd_soc_update_bits(codec, |
482 | VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, nid, 0), | 482 | VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, nid, 0), |
483 | 0x7080, 0x7000); | 483 | 0x7080, 0x7000); |
484 | /* If MCLK doesn't exist, reset AD filter */ | ||
485 | if (!(snd_soc_read(codec, RT298_VAD_CTRL) & 0x200)) { | ||
486 | pr_info("NO MCLK\n"); | ||
487 | switch (nid) { | ||
488 | case RT298_ADC_IN1: | ||
489 | snd_soc_update_bits(codec, | ||
490 | RT298_D_FILTER_CTRL, 0x2, 0x2); | ||
491 | mdelay(10); | ||
492 | snd_soc_update_bits(codec, | ||
493 | RT298_D_FILTER_CTRL, 0x2, 0x0); | ||
494 | break; | ||
495 | case RT298_ADC_IN2: | ||
496 | snd_soc_update_bits(codec, | ||
497 | RT298_D_FILTER_CTRL, 0x4, 0x4); | ||
498 | mdelay(10); | ||
499 | snd_soc_update_bits(codec, | ||
500 | RT298_D_FILTER_CTRL, 0x4, 0x0); | ||
501 | break; | ||
502 | } | ||
503 | } | ||
484 | break; | 504 | break; |
485 | case SND_SOC_DAPM_PRE_PMD: | 505 | case SND_SOC_DAPM_PRE_PMD: |
486 | snd_soc_update_bits(codec, | 506 | snd_soc_update_bits(codec, |
diff --git a/sound/soc/codecs/rt298.h b/sound/soc/codecs/rt298.h index d66f8847b676..3638f3d61209 100644 --- a/sound/soc/codecs/rt298.h +++ b/sound/soc/codecs/rt298.h | |||
@@ -137,6 +137,7 @@ | |||
137 | #define RT298_A_BIAS_CTRL2 0x02 | 137 | #define RT298_A_BIAS_CTRL2 0x02 |
138 | #define RT298_POWER_CTRL1 0x03 | 138 | #define RT298_POWER_CTRL1 0x03 |
139 | #define RT298_A_BIAS_CTRL3 0x04 | 139 | #define RT298_A_BIAS_CTRL3 0x04 |
140 | #define RT298_D_FILTER_CTRL 0x05 | ||
140 | #define RT298_POWER_CTRL2 0x08 | 141 | #define RT298_POWER_CTRL2 0x08 |
141 | #define RT298_I2S_CTRL1 0x09 | 142 | #define RT298_I2S_CTRL1 0x09 |
142 | #define RT298_I2S_CTRL2 0x0a | 143 | #define RT298_I2S_CTRL2 0x0a |
@@ -148,6 +149,7 @@ | |||
148 | #define RT298_IRQ_CTRL 0x33 | 149 | #define RT298_IRQ_CTRL 0x33 |
149 | #define RT298_WIND_FILTER_CTRL 0x46 | 150 | #define RT298_WIND_FILTER_CTRL 0x46 |
150 | #define RT298_PLL_CTRL1 0x49 | 151 | #define RT298_PLL_CTRL1 0x49 |
152 | #define RT298_VAD_CTRL 0x4e | ||
151 | #define RT298_CBJ_CTRL1 0x4f | 153 | #define RT298_CBJ_CTRL1 0x4f |
152 | #define RT298_CBJ_CTRL2 0x50 | 154 | #define RT298_CBJ_CTRL2 0x50 |
153 | #define RT298_PLL_CTRL 0x63 | 155 | #define RT298_PLL_CTRL 0x63 |