aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/soc/codecs/cs42l51.c13
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[] = {
175static int cs42l51_pdn_event(struct snd_soc_dapm_widget *w, 175static 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}