diff options
-rw-r--r-- | sound/soc/codecs/cs42l51.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/sound/soc/codecs/cs42l51.c b/sound/soc/codecs/cs42l51.c index 8c3c8205d19e..00718b5e747b 100644 --- a/sound/soc/codecs/cs42l51.c +++ b/sound/soc/codecs/cs42l51.c | |||
@@ -175,21 +175,18 @@ static const struct snd_kcontrol_new cs42l51_snd_controls[] = { | |||
175 | static int cs42l51_pdn_event(struct snd_soc_dapm_widget *w, | 175 | static int cs42l51_pdn_event(struct snd_soc_dapm_widget *w, |
176 | struct snd_kcontrol *kcontrol, int event) | 176 | struct snd_kcontrol *kcontrol, int event) |
177 | { | 177 | { |
178 | unsigned long value; | ||
179 | |||
180 | value = snd_soc_read(w->codec, CS42L51_POWER_CTL1); | ||
181 | value &= ~CS42L51_POWER_CTL1_PDN; | ||
182 | |||
183 | switch (event) { | 178 | switch (event) { |
184 | case SND_SOC_DAPM_PRE_PMD: | 179 | case SND_SOC_DAPM_PRE_PMD: |
185 | value |= CS42L51_POWER_CTL1_PDN; | 180 | snd_soc_update_bits(w->codec, CS42L51_POWER_CTL1, |
181 | CS42L51_POWER_CTL1_PDN, | ||
182 | CS42L51_POWER_CTL1_PDN); | ||
186 | break; | 183 | break; |
187 | default: | 184 | default: |
188 | case SND_SOC_DAPM_POST_PMD: | 185 | case SND_SOC_DAPM_POST_PMD: |
186 | snd_soc_update_bits(w->codec, CS42L51_POWER_CTL1, | ||
187 | CS42L51_POWER_CTL1_PDN, 0); | ||
189 | break; | 188 | break; |
190 | } | 189 | } |
191 | snd_soc_update_bits(w->codec, CS42L51_POWER_CTL1, | ||
192 | CS42L51_POWER_CTL1_PDN, value); | ||
193 | 190 | ||
194 | return 0; | 191 | return 0; |
195 | } | 192 | } |