Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cb2510da authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Mark Brown
Browse files

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: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent b08b3382
Loading
Loading
Loading
Loading
+2 −4
Original line number Original line Diff line number Diff line
@@ -328,10 +328,9 @@ static int cs4349_i2c_remove(struct i2c_client *client)
static int cs4349_runtime_suspend(struct device *dev)
static int cs4349_runtime_suspend(struct device *dev)
{
{
	struct cs4349_private *cs4349 = dev_get_drvdata(dev);
	struct cs4349_private *cs4349 = dev_get_drvdata(dev);
	struct snd_soc_pcm_runtime *rtd = dev_get_drvdata(dev);
	int ret;
	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)
	if (ret < 0)
		return ret;
		return ret;


@@ -347,10 +346,9 @@ static int cs4349_runtime_suspend(struct device *dev)
static int cs4349_runtime_resume(struct device *dev)
static int cs4349_runtime_resume(struct device *dev)
{
{
	struct cs4349_private *cs4349 = dev_get_drvdata(dev);
	struct cs4349_private *cs4349 = dev_get_drvdata(dev);
	struct snd_soc_pcm_runtime *rtd = dev_get_drvdata(dev);
	int ret;
	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)
	if (ret < 0)
		return ret;
		return ret;