diff options
author | Axel Lin <axel.lin@gmail.com> | 2011-10-20 21:54:43 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-10-22 05:35:20 -0400 |
commit | 33cb92cff9568dd9feb2825bd3605bf099bc6b63 (patch) | |
tree | 07beb04d24815918578e9c2e5523396bba031c6f /sound/soc | |
parent | 3205e6629bc0eb747fb7d1b4b8fec00b7b919e58 (diff) |
ASoC: sgtl5000: Fix wrong mask in some snd_soc_update_bits calls
Ensure all mask bits are clear before setting new value.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Dong Aisheng <b29396@freescale.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/codecs/sgtl5000.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c index 32b5bbdae523..d15695d1c273 100644 --- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c | |||
@@ -723,7 +723,9 @@ static int sgtl5000_pcm_hw_params(struct snd_pcm_substream *substream, | |||
723 | return -EINVAL; | 723 | return -EINVAL; |
724 | } | 724 | } |
725 | 725 | ||
726 | snd_soc_update_bits(codec, SGTL5000_CHIP_I2S_CTRL, i2s_ctl, i2s_ctl); | 726 | snd_soc_update_bits(codec, SGTL5000_CHIP_I2S_CTRL, |
727 | SGTL5000_I2S_DLEN_MASK | SGTL5000_I2S_SCLKFREQ_MASK, | ||
728 | i2s_ctl); | ||
727 | 729 | ||
728 | return 0; | 730 | return 0; |
729 | } | 731 | } |
@@ -1146,8 +1148,7 @@ static int sgtl5000_set_power_regs(struct snd_soc_codec *codec) | |||
1146 | vag = (vag - SGTL5000_ANA_GND_BASE) / SGTL5000_ANA_GND_STP; | 1148 | vag = (vag - SGTL5000_ANA_GND_BASE) / SGTL5000_ANA_GND_STP; |
1147 | 1149 | ||
1148 | snd_soc_update_bits(codec, SGTL5000_CHIP_REF_CTRL, | 1150 | snd_soc_update_bits(codec, SGTL5000_CHIP_REF_CTRL, |
1149 | vag << SGTL5000_ANA_GND_SHIFT, | 1151 | SGTL5000_ANA_GND_MASK, vag << SGTL5000_ANA_GND_SHIFT); |
1150 | vag << SGTL5000_ANA_GND_SHIFT); | ||
1151 | 1152 | ||
1152 | /* set line out VAG to vddio / 2, in range (0.8v, 1.675v) */ | 1153 | /* set line out VAG to vddio / 2, in range (0.8v, 1.675v) */ |
1153 | vag = vddio / 2; | 1154 | vag = vddio / 2; |
@@ -1161,9 +1162,8 @@ static int sgtl5000_set_power_regs(struct snd_soc_codec *codec) | |||
1161 | SGTL5000_LINE_OUT_GND_STP; | 1162 | SGTL5000_LINE_OUT_GND_STP; |
1162 | 1163 | ||
1163 | snd_soc_update_bits(codec, SGTL5000_CHIP_LINE_OUT_CTRL, | 1164 | snd_soc_update_bits(codec, SGTL5000_CHIP_LINE_OUT_CTRL, |
1164 | vag << SGTL5000_LINE_OUT_GND_SHIFT | | 1165 | SGTL5000_LINE_OUT_CURRENT_MASK | |
1165 | SGTL5000_LINE_OUT_CURRENT_360u << | 1166 | SGTL5000_LINE_OUT_GND_MASK, |
1166 | SGTL5000_LINE_OUT_CURRENT_SHIFT, | ||
1167 | vag << SGTL5000_LINE_OUT_GND_SHIFT | | 1167 | vag << SGTL5000_LINE_OUT_GND_SHIFT | |
1168 | SGTL5000_LINE_OUT_CURRENT_360u << | 1168 | SGTL5000_LINE_OUT_CURRENT_360u << |
1169 | SGTL5000_LINE_OUT_CURRENT_SHIFT); | 1169 | SGTL5000_LINE_OUT_CURRENT_SHIFT); |