ASoC: max98090: Fix reset at resume time
authorLiam Girdwood <liam.r.girdwood@linux.intel.com>
Fri, 16 May 2014 13:55:20 +0000 (16:55 +0300)
committerMark Brown <broonie@linaro.org>
Fri, 16 May 2014 18:56:23 +0000 (19:56 +0100)
Reset needs to wait 20ms before other codec IO is performed. This wait
was not being performed. Fix this by making sure the reset register is not
restored with the cache, but use the manual reset method in resume with
the wait.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org
sound/soc/codecs/max98090.c

index 7980784d1e335f0cfd6b15047044bb9b3e89babf..be86094817eb859e5b83e3e40ac9ff7b49429b40 100644 (file)
@@ -255,6 +255,7 @@ static struct reg_default max98090_reg[] = {
 static bool max98090_volatile_register(struct device *dev, unsigned int reg)
 {
        switch (reg) {
+       case M98090_REG_SOFTWARE_RESET:
        case M98090_REG_DEVICE_STATUS:
        case M98090_REG_JACK_STATUS:
        case M98090_REG_REVISION_ID:
@@ -2374,6 +2375,8 @@ static int max98090_runtime_resume(struct device *dev)
 
        regcache_cache_only(max98090->regmap, false);
 
+       max98090_reset(max98090);
+
        regcache_sync(max98090->regmap);
 
        return 0;