Unverified Commit 4bac47a7 authored by Zhu Ning's avatar Zhu Ning Committed by Mark Brown
Browse files

ASoC: codecs: add suspend and resume for ES8316



The registers may be lost after suspend due to powerdown.
regcache_sync solves this issue.

Signed-off-by: default avatarZhu Ning <zhuning@everest-semi.com>
Link: https://lore.kernel.org/r/20220825014952.1038508-1-zhuning0077@gmail.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 906aaf38
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -767,9 +767,31 @@ static void es8316_remove(struct snd_soc_component *component)
	clk_disable_unprepare(es8316->mclk);
}

static int es8316_resume(struct snd_soc_component *component)
{
	struct es8316_priv *es8316 = snd_soc_component_get_drvdata(component);

	regcache_cache_only(es8316->regmap, false);
	regcache_sync(es8316->regmap);

	return 0;
}

static int es8316_suspend(struct snd_soc_component *component)
{
	struct es8316_priv *es8316 = snd_soc_component_get_drvdata(component);

	regcache_cache_only(es8316->regmap, true);
	regcache_mark_dirty(es8316->regmap);

	return 0;
}

static const struct snd_soc_component_driver soc_component_dev_es8316 = {
	.probe			= es8316_probe,
	.remove			= es8316_remove,
	.resume			= es8316_resume,
	.suspend		= es8316_suspend,
	.set_jack		= es8316_set_jack,
	.controls		= es8316_snd_controls,
	.num_controls		= ARRAY_SIZE(es8316_snd_controls),