Commit 2e7ee15c authored by Nicolin Chen's avatar Nicolin Chen Committed by Mark Brown

ASoC: wm8962: Remove remaining direct register cache accesses

Also fix return values for headphone switch updates.
Signed-off-by: default avatarNicolin Chen <b42378@freescale.com>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org
parent 317ddd25
...@@ -1600,7 +1600,6 @@ static int wm8962_put_hp_sw(struct snd_kcontrol *kcontrol, ...@@ -1600,7 +1600,6 @@ static int wm8962_put_hp_sw(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol) struct snd_ctl_elem_value *ucontrol)
{ {
struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
u16 *reg_cache = codec->reg_cache;
int ret; int ret;
/* Apply the update (if any) */ /* Apply the update (if any) */
...@@ -1609,16 +1608,19 @@ static int wm8962_put_hp_sw(struct snd_kcontrol *kcontrol, ...@@ -1609,16 +1608,19 @@ static int wm8962_put_hp_sw(struct snd_kcontrol *kcontrol,
return 0; return 0;
/* If the left PGA is enabled hit that VU bit... */ /* If the left PGA is enabled hit that VU bit... */
if (snd_soc_read(codec, WM8962_PWR_MGMT_2) & WM8962_HPOUTL_PGA_ENA) ret = snd_soc_read(codec, WM8962_PWR_MGMT_2);
return snd_soc_write(codec, WM8962_HPOUTL_VOLUME, if (ret & WM8962_HPOUTL_PGA_ENA) {
reg_cache[WM8962_HPOUTL_VOLUME]); snd_soc_write(codec, WM8962_HPOUTL_VOLUME,
snd_soc_read(codec, WM8962_HPOUTL_VOLUME));
return 1;
}
/* ...otherwise the right. The VU is stereo. */ /* ...otherwise the right. The VU is stereo. */
if (snd_soc_read(codec, WM8962_PWR_MGMT_2) & WM8962_HPOUTR_PGA_ENA) if (ret & WM8962_HPOUTR_PGA_ENA)
return snd_soc_write(codec, WM8962_HPOUTR_VOLUME, snd_soc_write(codec, WM8962_HPOUTR_VOLUME,
reg_cache[WM8962_HPOUTR_VOLUME]); snd_soc_read(codec, WM8962_HPOUTR_VOLUME));
return 0; return 1;
} }
/* The VU bits for the speakers are in a different register to the mute /* The VU bits for the speakers are in a different register to the mute
...@@ -3374,7 +3376,6 @@ static int wm8962_probe(struct snd_soc_codec *codec) ...@@ -3374,7 +3376,6 @@ static int wm8962_probe(struct snd_soc_codec *codec)
int ret; int ret;
struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec); struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
struct wm8962_pdata *pdata = dev_get_platdata(codec->dev); struct wm8962_pdata *pdata = dev_get_platdata(codec->dev);
u16 *reg_cache = codec->reg_cache;
int i, trigger, irq_pol; int i, trigger, irq_pol;
bool dmicclk, dmicdat; bool dmicclk, dmicdat;
...@@ -3432,8 +3433,9 @@ static int wm8962_probe(struct snd_soc_codec *codec) ...@@ -3432,8 +3433,9 @@ static int wm8962_probe(struct snd_soc_codec *codec)
/* Put the speakers into mono mode? */ /* Put the speakers into mono mode? */
if (pdata->spk_mono) if (pdata->spk_mono)
reg_cache[WM8962_CLASS_D_CONTROL_2] snd_soc_update_bits(codec, WM8962_CLASS_D_CONTROL_2,
|= WM8962_SPK_MONO; WM8962_SPK_MONO_MASK, WM8962_SPK_MONO);
/* Micbias setup, detection enable and detection /* Micbias setup, detection enable and detection
* threasholds. */ * threasholds. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment