[PATCH 07/17] ASoC: rt712: Use new SoundWire enumeration helper

From: Charles Keepax

Date: Tue May 05 2026 - 12:49:19 EST


Update the driver to use the new core helper that waits for the device
to enumerate on SoundWire and be initialised by the SoundWire core.

Signed-off-by: Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>
---
sound/soc/codecs/rt712-sdca-dmic.c | 19 ++++---------------
sound/soc/codecs/rt712-sdca-sdw.c | 16 ++++------------
2 files changed, 8 insertions(+), 27 deletions(-)

diff --git a/sound/soc/codecs/rt712-sdca-dmic.c b/sound/soc/codecs/rt712-sdca-dmic.c
index 4d83544ef2049..4c5c2f5ba5edf 100644
--- a/sound/soc/codecs/rt712-sdca-dmic.c
+++ b/sound/soc/codecs/rt712-sdca-dmic.c
@@ -905,26 +905,15 @@ static int rt712_sdca_dmic_dev_resume(struct device *dev)
{
struct sdw_slave *slave = dev_to_sdw_dev(dev);
struct rt712_sdca_dmic_priv *rt712 = dev_get_drvdata(dev);
- unsigned long time;
+ int ret;

if (!rt712->first_hw_init)
return 0;

- if (!slave->unattach_request)
- goto regmap_sync;
-
- time = wait_for_completion_timeout(&slave->initialization_complete,
- msecs_to_jiffies(RT712_PROBE_TIMEOUT));
- if (!time) {
- dev_err(&slave->dev, "%s: Initialization not complete, timed out\n",
- __func__);
- sdw_show_ping_status(slave->bus, true);
-
- return -ETIMEDOUT;
- }
+ ret = sdw_slave_wait_for_init(slave, RT712_PROBE_TIMEOUT);
+ if (ret)
+ return ret;

-regmap_sync:
- slave->unattach_request = 0;
regcache_cache_only(rt712->regmap, false);
regcache_sync(rt712->regmap);
regcache_cache_only(rt712->mbq_regmap, false);
diff --git a/sound/soc/codecs/rt712-sdca-sdw.c b/sound/soc/codecs/rt712-sdca-sdw.c
index 8c82887174db2..5817321804736 100644
--- a/sound/soc/codecs/rt712-sdca-sdw.c
+++ b/sound/soc/codecs/rt712-sdca-sdw.c
@@ -450,7 +450,7 @@ static int rt712_sdca_dev_resume(struct device *dev)
{
struct sdw_slave *slave = dev_to_sdw_dev(dev);
struct rt712_sdca_priv *rt712 = dev_get_drvdata(dev);
- unsigned long time;
+ int ret;

if (!rt712->first_hw_init)
return 0;
@@ -464,20 +464,12 @@ static int rt712_sdca_dev_resume(struct device *dev)
rt712->disable_irq = false;
}
mutex_unlock(&rt712->disable_irq_lock);
- goto regmap_sync;
}

- time = wait_for_completion_timeout(&slave->initialization_complete,
- msecs_to_jiffies(RT712_PROBE_TIMEOUT));
- if (!time) {
- dev_err(&slave->dev, "%s: Initialization not complete, timed out\n", __func__);
- sdw_show_ping_status(slave->bus, true);
+ ret = sdw_slave_wait_for_init(slave, RT712_PROBE_TIMEOUT);
+ if (ret)
+ return ret;

- return -ETIMEDOUT;
- }
-
-regmap_sync:
- slave->unattach_request = 0;
regcache_cache_only(rt712->regmap, false);
regcache_sync(rt712->regmap);
regcache_cache_only(rt712->mbq_regmap, false);
--
2.47.3