Assuming the calibration state gets lost after system suspend. Re-calibrates again when resuming.
The rt1015_priv is alloced by kzalloc. No need to initialize cali_done to 0 in component probe callback.
Signed-off-by: Tzung-Bi Shih tzungbi@google.com --- The idea is inspired from previous discussion: https://mailman.alsa-project.org/pipermail/alsa-devel/2020-December/178229.h...
The patch applies after the series: https://mailman.alsa-project.org/pipermail/alsa-devel/2020-December/178608.h...
v1 attempt: https://mailman.alsa-project.org/pipermail/alsa-devel/2020-December/178614.h...
sound/soc/codecs/rt1015.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/sound/soc/codecs/rt1015.c b/sound/soc/codecs/rt1015.c index 4a9e2eaebe30..3b06eaddccaf 100644 --- a/sound/soc/codecs/rt1015.c +++ b/sound/soc/codecs/rt1015.c @@ -1055,7 +1055,6 @@ static int rt1015_probe(struct snd_soc_component *component)
rt1015->component = component; rt1015->bclk_ratio = 0; - rt1015->cali_done = 0;
INIT_DELAYED_WORK(&rt1015->flush_work, rt1015_flush_work);
@@ -1113,6 +1112,10 @@ static int rt1015_resume(struct snd_soc_component *component)
regcache_cache_only(rt1015->regmap, false); regcache_sync(rt1015->regmap); + + if (rt1015->cali_done) + rt1015_calibrate(rt1015); + return 0; } #else