Commit 0aa263bb authored by Charles Keepax's avatar Charles Keepax Committed by Greg Kroah-Hartman

ASoC: wm5110: Fix PGA clear when disabling DRE

commit 24338722 upstream.

We don't want to use a bypassed write in wm5110_clear_pga_volume,
we might disable the DRE whilst the CODEC is powered down. A
normal regmap_write will always go to the hardware (when not on
cache_only) even if the written value matches the cache. As using
a normal write will still achieve the desired behaviour of bring
the cache and hardware in sync, this patch updates the function
to use a normal write, which avoids issues when the CODEC is
powered down.
Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b1d1b88c
...@@ -360,15 +360,13 @@ static int wm5110_hp_ev(struct snd_soc_dapm_widget *w, ...@@ -360,15 +360,13 @@ static int wm5110_hp_ev(struct snd_soc_dapm_widget *w,
static int wm5110_clear_pga_volume(struct arizona *arizona, int output) static int wm5110_clear_pga_volume(struct arizona *arizona, int output)
{ {
struct reg_sequence clear_pga = { unsigned int reg = ARIZONA_OUTPUT_PATH_CONFIG_1L + output * 4;
ARIZONA_OUTPUT_PATH_CONFIG_1L + output * 4, 0x80
};
int ret; int ret;
ret = regmap_multi_reg_write_bypassed(arizona->regmap, &clear_pga, 1); ret = regmap_write(arizona->regmap, reg, 0x80);
if (ret) if (ret)
dev_err(arizona->dev, "Failed to clear PGA (0x%x): %d\n", dev_err(arizona->dev, "Failed to clear PGA (0x%x): %d\n",
clear_pga.reg, ret); reg, ret);
return ret; return ret;
} }
......
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