diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/codecs/wm8900.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/sound/soc/codecs/wm8900.c b/sound/soc/codecs/wm8900.c index 3c78945244b8..de99206a0103 100644 --- a/sound/soc/codecs/wm8900.c +++ b/sound/soc/codecs/wm8900.c | |||
@@ -116,6 +116,7 @@ | |||
116 | #define WM8900_REG_CLOCKING2_DAC_CLKDIV 0x1c | 116 | #define WM8900_REG_CLOCKING2_DAC_CLKDIV 0x1c |
117 | 117 | ||
118 | #define WM8900_REG_DACCTRL_MUTE 0x004 | 118 | #define WM8900_REG_DACCTRL_MUTE 0x004 |
119 | #define WM8900_REG_DACCTRL_DAC_SB_FILT 0x100 | ||
119 | #define WM8900_REG_DACCTRL_AIF_LRCLKRATE 0x400 | 120 | #define WM8900_REG_DACCTRL_AIF_LRCLKRATE 0x400 |
120 | 121 | ||
121 | #define WM8900_REG_AUDIO3_ADCLRC_DIR 0x0800 | 122 | #define WM8900_REG_AUDIO3_ADCLRC_DIR 0x0800 |
@@ -439,7 +440,6 @@ SOC_SINGLE("DAC Soft Mute Switch", WM8900_REG_DACCTRL, 6, 1, 1), | |||
439 | SOC_ENUM("DAC Mute Rate", dac_mute_rate), | 440 | SOC_ENUM("DAC Mute Rate", dac_mute_rate), |
440 | SOC_SINGLE("DAC Mono Switch", WM8900_REG_DACCTRL, 9, 1, 0), | 441 | SOC_SINGLE("DAC Mono Switch", WM8900_REG_DACCTRL, 9, 1, 0), |
441 | SOC_ENUM("DAC Deemphasis", dac_deemphasis), | 442 | SOC_ENUM("DAC Deemphasis", dac_deemphasis), |
442 | SOC_SINGLE("DAC Sloping Stopband Filter Switch", WM8900_REG_DACCTRL, 8, 1, 0), | ||
443 | SOC_SINGLE("DAC Sigma-Delta Modulator Clock Switch", WM8900_REG_DACCTRL, | 443 | SOC_SINGLE("DAC Sigma-Delta Modulator Clock Switch", WM8900_REG_DACCTRL, |
444 | 12, 1, 0), | 444 | 12, 1, 0), |
445 | 445 | ||
@@ -743,6 +743,17 @@ static int wm8900_hw_params(struct snd_pcm_substream *substream, | |||
743 | 743 | ||
744 | wm8900_write(codec, WM8900_REG_AUDIO1, reg); | 744 | wm8900_write(codec, WM8900_REG_AUDIO1, reg); |
745 | 745 | ||
746 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { | ||
747 | reg = wm8900_read(codec, WM8900_REG_DACCTRL); | ||
748 | |||
749 | if (params_rate(params) <= 24000) | ||
750 | reg |= WM8900_REG_DACCTRL_DAC_SB_FILT; | ||
751 | else | ||
752 | reg &= ~WM8900_REG_DACCTRL_DAC_SB_FILT; | ||
753 | |||
754 | wm8900_write(codec, WM8900_REG_DACCTRL, reg); | ||
755 | } | ||
756 | |||
746 | return 0; | 757 | return 0; |
747 | } | 758 | } |
748 | 759 | ||