aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2015-07-19 06:15:17 -0400
committerMark Brown <broonie@kernel.org>2015-07-20 13:15:28 -0400
commitcb2510dac7e1c5ac77652bb31e8c39ce2eef8bbe (patch)
tree76887971aae9262eb5bccc6b78161d51a32ef63e
parentb08b338253e917be45ee19924b58dd0b1265473f (diff)
ASoC: cs4349: Fix suspend/resume
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>
-rw-r--r--sound/soc/codecs/cs4349.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/sound/soc/codecs/cs4349.c b/sound/soc/codecs/cs4349.c
index f4fccc621ceb..13ccbf75207e 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)
328static int cs4349_runtime_suspend(struct device *dev) 328static int cs4349_runtime_suspend(struct device *dev)
329{ 329{
330 struct cs4349_private *cs4349 = dev_get_drvdata(dev); 330 struct cs4349_private *cs4349 = dev_get_drvdata(dev);
331 struct snd_soc_pcm_runtime *rtd = dev_get_drvdata(dev);
332 int ret; 331 int ret;
333 332
334 ret = snd_soc_update_bits(rtd->codec, CS4349_MISC, PWR_DWN, 1); 333 ret = regmap_update_bits(cs4349->regmap, CS4349_MISC, PWR_DWN, 1);
335 if (ret < 0) 334 if (ret < 0)
336 return ret; 335 return ret;
337 336
@@ -347,10 +346,9 @@ static int cs4349_runtime_suspend(struct device *dev)
347static int cs4349_runtime_resume(struct device *dev) 346static int cs4349_runtime_resume(struct device *dev)
348{ 347{
349 struct cs4349_private *cs4349 = dev_get_drvdata(dev); 348 struct cs4349_private *cs4349 = dev_get_drvdata(dev);
350 struct snd_soc_pcm_runtime *rtd = dev_get_drvdata(dev);
351 int ret; 349 int ret;
352 350
353 ret = snd_soc_update_bits(rtd->codec, CS4349_MISC, PWR_DWN, 0); 351 ret = regmap_update_bits(cs4349->regmap, CS4349_MISC, PWR_DWN, 0);
354 if (ret < 0) 352 if (ret < 0)
355 return ret; 353 return ret;
356 354