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>
This commit is contained in:
Родитель
b08b338253
Коммит
cb2510dac7
|
@ -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;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче