ASoC: wm8994: Unsuspend the device while reading GPIO statuses
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 6 Feb 2012 18:42:14 +0000 (18:42 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 6 Feb 2012 19:06:18 +0000 (19:06 +0000)
Otherwise we might get an error if the GPIO is configured as an input
since that makes the register volatile and a suspended device can't be
read from.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>

sound/soc/codecs/wm8994.c

index 6b12f5d..6a47c75 100644 (file)
@@ -3539,6 +3539,9 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
                        wm8994->fll_locked_irq = false;
        }
 
+       /* Make sure we can read from the GPIOs if they're inputs */
+       pm_runtime_get_sync(codec->dev);
+
        /* Remember if AIFnLRCLK is configured as a GPIO.  This should be
         * configured on init - if a system wants to do this dynamically
         * at runtime we can deal with that then.
@@ -3567,6 +3570,8 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
                wm8994->lrclk_shared[1] = 0;
        }
 
+       pm_runtime_put(codec->dev);
+
        /* Latch volume updates (right only; we always do left then right). */
        snd_soc_update_bits(codec, WM8994_AIF1_DAC1_LEFT_VOLUME,
                            WM8994_AIF1DAC1_VU, WM8994_AIF1DAC1_VU);