ASoC: wm8991: Fix wrong bit setting for WM8991_POWER_MANAGEMENT_2
Subsystems (3)
PATCH 1/2 ASoC: wm8991: Fix wrong bit setting for WM8991_POWER_MANAGEMENT_2
If (fakepower & ((1 << WM8991_INMIXR_PWR_BIT)|(1 << WM8991_AINRMUX_PWR_BIT)))) is false, we should clear WM8991_AINR_ENA bits instead of WM8991_AINL_ENA.
Signed-off-by Axel Lin <[email protected]>
--- sound/soc/codecs/wm8991.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
sound/soc/codecs/wm8991.c +1 -1
@@ -393,7 +393,7 @@ static int inmixer_event(struct snd_soc_dapm_widget *w, (1 << WM8991_AINRMUX_PWR_BIT))) reg |=WM8991_AINR_ENA ; else - reg &= ~WM8991_AINL_ENA; + reg &= ~WM8991_AINR_ENA;snd_soc_write (w->codec,WM8991_POWER_MANAGEMENT_2 , reg);return 0 ;
Signature · 1 line
1.7.4.1
PATCH 2/2 ASoC: wm8991: Use snd_soc_update_bits for read-modify-write
Use snd_soc_update_bits for read-modify-write register access instead of open-coding it using snd_soc_read and snd_soc_write
Signed-off-by Axel Lin <[email protected]>
--- sound/soc/codecs/wm8991.c | 20 +++++++++----------- 1 files changed, 9 insertions(+), 11 deletions(-)
sound/soc/codecs/wm8991.c +9 -11
@@ -1264,7 +1264,6 @@ static int wm8991_probe(struct snd_soc_codec *codec) {struct wm8991_priv *wm8991;int ret; -unsigned int reg; wm8991 =snd_soc_codec_get_drvdata (codec);
@@ -1282,19 +1281,18 @@ static int wm8991_probe(struct snd_soc_codec *codec)wm8991_set_bias_level (codec,SND_SOC_BIAS_STANDBY ); - reg =snd_soc_read (codec,WM8991_AUDIO_INTERFACE_4 ); -snd_soc_write (codec,WM8991_AUDIO_INTERFACE_4 , reg |WM8991_ALRCGPIO1 ); +snd_soc_update_bits (codec,WM8991_AUDIO_INTERFACE_4 , +WM8991_ALRCGPIO1 ,WM8991_ALRCGPIO1 ); - reg =snd_soc_read (codec,WM8991_GPIO1_GPIO2 ) & - ~WM8991_GPIO1_SEL_MASK ; -snd_soc_write (codec,WM8991_GPIO1_GPIO2 , reg |1 ); +snd_soc_update_bits (codec,WM8991_GPIO1_GPIO2 , +WM8991_GPIO1_SEL_MASK ,1 ); - reg =snd_soc_read (codec,WM8991_POWER_MANAGEMENT_1 ); -snd_soc_write (codec,WM8991_POWER_MANAGEMENT_1 , reg |WM8991_VREF_ENA | -WM8991_VMID_MODE_MASK ); +snd_soc_update_bits (codec,WM8991_POWER_MANAGEMENT_1 , +WM8991_VREF_ENA |WM8991_VMID_MODE_MASK , +WM8991_VREF_ENA |WM8991_VMID_MODE_MASK ); - reg =snd_soc_read (codec,WM8991_POWER_MANAGEMENT_2 ); -snd_soc_write (codec,WM8991_POWER_MANAGEMENT_2 , reg |WM8991_OPCLK_ENA ); +snd_soc_update_bits (codec,WM8991_POWER_MANAGEMENT_2 , +WM8991_OPCLK_ENA ,WM8991_OPCLK_ENA );snd_soc_write (codec,WM8991_DAC_CTRL ,0 );snd_soc_write (codec,WM8991_LEFT_OUTPUT_VOLUME ,0x50 | (1 <<8 ));
Signature · 1 line
1.7.4.1
Mark Brown
AppliedQuoted 4 lines · Axel Lin
If (fakepower & ((1 << WM8991_INMIXR_PWR_BIT)|(1 <<
WM8991_AINRMUX_PWR_BIT)))) is false, we should clearWM8991_AINR_ENAbits instead ofWM8991_AINL_ENA.Signed-off-by Axel Lin <[email protected]>
Applied both, thanks.