[PATCH 6/6] ASoC: rt722-sdca: always cancel jack work on remove
From: Jiale Yao
Date: Fri Sep 25 2026 - 11:03:50 EST
rt722_sdca_sdw_remove() cancels the jack work only when hw_init is true.
rt722_sdca_update_status() clears hw_init when the SoundWire slave
becomes unattached, but jack work may already have been queued by
rt722_sdca_interrupt_callback() or the jack initialization path.
A remove after that status update can therefore skip the cancellation and
leave delayed work pending after the codec private data has been freed.
The work objects are initialized during probe, so cancel them
unconditionally instead of relying on the mutable hw_init state.
Fixes: 7f5d6036ca00 ("ASoC: rt722-sdca: Add RT722 SDCA driver")
Signed-off-by: Jiale Yao <yaojiale02@xxxxxxx>
---
sound/soc/codecs/rt722-sdca-sdw.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/sound/soc/codecs/rt722-sdca-sdw.c b/sound/soc/codecs/rt722-sdca-sdw.c
index 5bc9aed58d14..078255fbe1fc 100644
--- a/sound/soc/codecs/rt722-sdca-sdw.c
+++ b/sound/soc/codecs/rt722-sdca-sdw.c
@@ -471,10 +471,8 @@ static void rt722_sdca_sdw_remove(struct sdw_slave *slave)
{
struct rt722_sdca_priv *rt722 = dev_get_drvdata(&slave->dev);
- if (rt722->hw_init) {
- cancel_delayed_work_sync(&rt722->jack_detect_work);
- cancel_delayed_work_sync(&rt722->jack_btn_check_work);
- }
+ cancel_delayed_work_sync(&rt722->jack_detect_work);
+ cancel_delayed_work_sync(&rt722->jack_btn_check_work);
if (rt722->first_hw_init)
pm_runtime_disable(&slave->dev);
--
2.34.1