Commit 48e3cbb3 authored by Eric Millbrandt's avatar Eric Millbrandt Committed by Mark Brown

ASoC: Do not write to invalid registers on the wm9712.

This patch fixes a bug where "virtual" registers were being written to the ac97
bus.  This was causing unrelated registers to become corrupted (headphone 0x04,
touchscreen 0x78, etc).

This patch duplicates protection that was included in the wm9713 driver.
Signed-off-by: default avatarEric Millbrandt <emillbrandt@dekaresearch.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
parent 1628af5a
...@@ -463,6 +463,7 @@ static int ac97_write(struct snd_soc_codec *codec, unsigned int reg, ...@@ -463,6 +463,7 @@ static int ac97_write(struct snd_soc_codec *codec, unsigned int reg,
{ {
u16 *cache = codec->reg_cache; u16 *cache = codec->reg_cache;
if (reg < 0x7c)
soc_ac97_ops.write(codec->ac97, reg, val); soc_ac97_ops.write(codec->ac97, reg, val);
reg = reg >> 1; reg = reg >> 1;
if (reg < (ARRAY_SIZE(wm9712_reg))) if (reg < (ARRAY_SIZE(wm9712_reg)))
......
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