]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ASoC: cs4349: Fix suspend/resume
authorLars-Peter Clausen <lars@metafoo.de>
Sun, 19 Jul 2015 10:15:17 +0000 (12:15 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 20 Jul 2015 17:15:28 +0000 (18:15 +0100)
dev_get_drvdata() will not return the snd_soc_runtime to which this CODEC
is attached, so the current code will result in undefined behavior.
To fix this just use regmap_update_bits(cs4349->regmap, ...) directly
instead of snd_soc_update_bits(rtd->codec, ...).

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cs4349.c

index f4fccc621ceb0715a6cb7273c0ff450b42ef349f..13ccbf75207ea646cc7b074ebd1f5dc045258468 100644 (file)
@@ -328,10 +328,9 @@ static int cs4349_i2c_remove(struct i2c_client *client)
 static int cs4349_runtime_suspend(struct device *dev)
 {
        struct cs4349_private *cs4349 = dev_get_drvdata(dev);
-       struct snd_soc_pcm_runtime *rtd = dev_get_drvdata(dev);
        int ret;
 
-       ret = snd_soc_update_bits(rtd->codec, CS4349_MISC, PWR_DWN, 1);
+       ret = regmap_update_bits(cs4349->regmap, CS4349_MISC, PWR_DWN, 1);
        if (ret < 0)
                return ret;
 
@@ -347,10 +346,9 @@ static int cs4349_runtime_suspend(struct device *dev)
 static int cs4349_runtime_resume(struct device *dev)
 {
        struct cs4349_private *cs4349 = dev_get_drvdata(dev);
-       struct snd_soc_pcm_runtime *rtd = dev_get_drvdata(dev);
        int ret;
 
-       ret = snd_soc_update_bits(rtd->codec, CS4349_MISC, PWR_DWN, 0);
+       ret = regmap_update_bits(cs4349->regmap, CS4349_MISC, PWR_DWN, 0);
        if (ret < 0)
                return ret;