diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2015-07-19 06:15:17 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-07-20 13:15:28 -0400 |
commit | cb2510dac7e1c5ac77652bb31e8c39ce2eef8bbe (patch) | |
tree | 76887971aae9262eb5bccc6b78161d51a32ef63e | |
parent | b08b338253e917be45ee19924b58dd0b1265473f (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.c | 6 |
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) | |||
328 | static int cs4349_runtime_suspend(struct device *dev) | 328 | static 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) | |||
347 | static int cs4349_runtime_resume(struct device *dev) | 346 | static 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 | ||