ASoC: Allow writes to uncached registers in WM8990
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 17 Nov 2008 16:59:24 +0000 (16:59 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 17 Nov 2008 17:24:50 +0000 (17:24 +0000)
Only fully documented registers are cached in the WM8990 but additional
registers exist.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/wm8990.c

index 572d22b0880b5b1f1033e244cee6269831cd9216..5c84f02c4579b044d4bd55869c3d1b5c289275dd 100644 (file)
@@ -106,6 +106,7 @@ static const u16 wm8990_reg[] = {
        0x0008,     /* R60 - PLL1 */
        0x0031,     /* R61 - PLL2 */
        0x0026,     /* R62 - PLL3 */
+       0x0000,     /* R63 - Driver internal */
 };
 
 /*
@@ -126,10 +127,9 @@ static inline void wm8990_write_reg_cache(struct snd_soc_codec *codec,
        unsigned int reg, unsigned int value)
 {
        u16 *cache = codec->reg_cache;
-       BUG_ON(reg > (ARRAY_SIZE(wm8990_reg)) - 1);
 
-       /* Reset register is uncached */
-       if (reg == 0)
+       /* Reset register and reserved registers are uncached */
+       if (reg == 0 || reg > ARRAY_SIZE(wm8990_reg) - 1)
                return;
 
        cache[reg] = value;