[alsa-devel] [PATCH 1/2] ASoC: cs4349: Fix suspend/resume
Lars-Peter Clausen
lars at metafoo.de
Sun Jul 19 12:15:17 CEST 2015
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 at metafoo.de>
---
sound/soc/codecs/cs4349.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
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;
--
2.1.4
More information about the Alsa-devel
mailing list