| From 433897f7408b556f7dfbb98c94deea02e634d2a7 Mon Sep 17 00:00:00 2001 |
| From: Mark Brown <broonie@opensource.wolfsonmicro.com> |
| Date: Sat, 9 Jun 2012 11:38:12 +0800 |
| Subject: ASoC: wm8904: Fix GPIO and MICBIAS initialisation for regmap conversion |
| |
| From: Mark Brown <broonie@opensource.wolfsonmicro.com> |
| |
| commit 433897f7408b556f7dfbb98c94deea02e634d2a7 upstream. |
| |
| We no longer have a flat ASoC cache so can't peer directly into the array |
| any more but should instead use the register I/O functions to update the |
| cache. |
| |
| Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/soc/codecs/wm8904.c | 13 ++++++++----- |
| 1 file changed, 8 insertions(+), 5 deletions(-) |
| |
| --- a/sound/soc/codecs/wm8904.c |
| +++ b/sound/soc/codecs/wm8904.c |
| @@ -2084,7 +2084,6 @@ static int wm8904_probe(struct snd_soc_c |
| { |
| struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec); |
| struct wm8904_pdata *pdata = wm8904->pdata; |
| - u16 *reg_cache = codec->reg_cache; |
| int ret, i; |
| |
| codec->cache_sync = 1; |
| @@ -2180,14 +2179,18 @@ static int wm8904_probe(struct snd_soc_c |
| if (!pdata->gpio_cfg[i]) |
| continue; |
| |
| - reg_cache[WM8904_GPIO_CONTROL_1 + i] |
| - = pdata->gpio_cfg[i] & 0xffff; |
| + regmap_update_bits(wm8904->regmap, |
| + WM8904_GPIO_CONTROL_1 + i, |
| + 0xffff, |
| + pdata->gpio_cfg[i]); |
| } |
| |
| /* Zero is the default value for these anyway */ |
| for (i = 0; i < WM8904_MIC_REGS; i++) |
| - reg_cache[WM8904_MIC_BIAS_CONTROL_0 + i] |
| - = pdata->mic_cfg[i]; |
| + regmap_update_bits(wm8904->regmap, |
| + WM8904_MIC_BIAS_CONTROL_0 + i, |
| + 0xffff, |
| + pdata->mic_cfg[i]); |
| } |
| |
| /* Set Class W by default - this will be managed by the Class |