diff mbox

[1/2] ASoC: cs4349: Fix suspend/resume

Message ID 1437300918-4612-1-git-send-email-lars@metafoo.de (mailing list archive)
State Accepted
Commit cb2510dac7e1c5ac77652bb31e8c39ce2eef8bbe
Headers show

Commit Message

Lars-Peter Clausen July 19, 2015, 10:15 a.m. UTC
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>
---
 sound/soc/codecs/cs4349.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

Comments

Howe, Tim July 30, 2015, 9:23 p.m. UTC | #1
On Sun, 19 Jul 2015, Lars-Peter Clausen wrote:

> 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>
> ---
>  sound/soc/codecs/cs4349.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
For both patches
Thank you!
Acked-by: Tim Howe <tim.howe@cirrus.com>
diff mbox

Patch

diff --git a/sound/soc/codecs/cs4349.c b/sound/soc/codecs/cs4349.c
index a8df8a74..db18799 100644
--- a/sound/soc/codecs/cs4349.c
+++ b/sound/soc/codecs/cs4349.c
@@ -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;