[PATCH 2/2] ASoC: rt711: wait for the delayed work to finish when the system suspends
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Mon Sep 21 16:29:22 CEST 2020
On 9/21/20 4:43 AM, shumingf at realtek.com wrote:
> From: Shuming Fan <shumingf at realtek.com>
>
> To avoid the IO error, we need to cancel the delayed work and wait for it to finish.
>
> Signed-off-by: Shuming Fan <shumingf at realtek.com>
Thanks Shuming.
For more context we detected a timeout error during suspend-resume
stress tests, the problem is similar to an earlier case with interrupt
handling already fixed in the SoundWire tree: we want all workqueues to
complete before suspending.
BugLink: https://github.com/thesofproject/linux/issues/2443
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
> ---
> sound/soc/codecs/rt711-sdw.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/sound/soc/codecs/rt711-sdw.c b/sound/soc/codecs/rt711-sdw.c
> index 28d663673320..3a8ca600d1cf 100644
> --- a/sound/soc/codecs/rt711-sdw.c
> +++ b/sound/soc/codecs/rt711-sdw.c
> @@ -491,6 +491,10 @@ static int __maybe_unused rt711_dev_suspend(struct device *dev)
> if (!rt711->hw_init)
> return 0;
>
> + cancel_delayed_work_sync(&rt711->jack_detect_work);
> + cancel_delayed_work_sync(&rt711->jack_btn_check_work);
> + cancel_work_sync(&rt711->calibration_work);
> +
> regcache_cache_only(rt711->regmap, true);
>
> return 0;
>
More information about the Alsa-devel
mailing list