ASoC: rt711/5682: check if bus is active before deferred jack detection
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Wed, 6 Apr 2022 19:20:05 +0000 (14:20 -0500)
committerMark Brown <broonie@kernel.org>
Thu, 7 Apr 2022 17:29:34 +0000 (18:29 +0100)
commit770f3d992a3f7330f801dfeee98429b2885c9fdb
tree3bcc7e33416ae1edbcb122b0d382d5d01c6bf0c5
parentfcd1e39cca6e3a262f2badfcd5edd76c910ad3bc
ASoC: rt711/5682: check if bus is active before deferred jack detection

This patch takes a defensive programming and paranoid approach in case
the parent device (SoundWire) is pm_runtime resumed but the rt711
device is not. In that case, during the attachment and initialization,
a jack detection workqueue can be scheduled. Since the pm_runtime
suspend routines will not be invoked, the sequence to cancel all
deferred work is not executed, and the jack detection could happen
after the bus stops operating, leading to a timeout.

This patch applies the same solution to rt5682, based on the
similarities between codec drivers. The race condition with rt5682 was
not detected experimentally though.

BugLink: https://github.com/thesofproject/linux/issues/3459
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20220406192005.262996-1-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/rt5682.c
sound/soc/codecs/rt711.c