From: Charles Keepax <ckeepax@opensource.cirrus.com>
To: broonie@kernel.org, vkoul@kernel.org
Cc: lgirdwood@gmail.com, yung-chuan.liao@linux.intel.com,
pierre-louis.bossart@linux.dev, peter.ujfalusi@linux.intel.com,
oder_chiou@realtek.com, jack.yu@realtek.com,
shumingf@realtek.com, shenghao-ding@ti.com, niranjan.hy@ti.com,
kevin-lu@ti.com, baojun.xu@ti.com, sen@ti.com,
linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org,
patches@opensource.cirrus.com
Subject: Re: [PATCH 01/17] soundwire: Add a helper function to wait for device initialisation
Date: Tue, 5 May 2026 17:57:05 +0100 [thread overview]
Message-ID: <afohYUQLPLjRXjd4@opensource.cirrus.com> (raw)
In-Reply-To: <20260505164807.4108684-2-ckeepax@opensource.cirrus.com>
On Tue, May 05, 2026 at 05:47:51PM +0100, Charles Keepax wrote:
> Add a new helper function to wait for the device to enumerate
> and be initialised by the SoundWire core. Most of the SoundWire
> drivers have very similar boiler plate code in their runtime
> resume, and that boiler plate tends to access various internals
> of the SoundWire structs which is a mild layering violation.
>
> Adding a new core helper function greatly eases both of these
> issues.
>
> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> ---
Sorry Vinod, it appears I somehow completely forgot to CC you on
this series. Let me know if you got it through the mailing list,
and if not I will do a resend.
Thanks,
Charles
> drivers/soundwire/bus.c | 21 +++++++++++++++++++++
> include/linux/soundwire/sdw.h | 2 ++
> 2 files changed, 23 insertions(+)
>
> diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c
> index fe5316d93fefe..b9ca35e530a3b 100644
> --- a/drivers/soundwire/bus.c
> +++ b/drivers/soundwire/bus.c
> @@ -1372,6 +1372,27 @@ int sdw_slave_get_current_bank(struct sdw_slave *slave)
> }
> EXPORT_SYMBOL_GPL(sdw_slave_get_current_bank);
>
> +int sdw_slave_wait_for_init(struct sdw_slave *slave, int timeout)
> +{
> + unsigned long time;
> +
> + if (!slave->unattach_request)
> + return 0;
> +
> + time = wait_for_completion_timeout(&slave->initialization_complete,
> + msecs_to_jiffies(timeout));
> + if (!time) {
> + dev_err(&slave->dev, "Initialization not complete\n");
> + sdw_show_ping_status(slave->bus, true);
> + return -ETIMEDOUT;
> + }
> +
> + slave->unattach_request = 0;
> +
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(sdw_slave_wait_for_init);
> +
> static int sdw_slave_set_frequency(struct sdw_slave *slave)
> {
> int scale_index;
> diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h
> index 6147eb1fb210d..847b001d1a774 100644
> --- a/include/linux/soundwire/sdw.h
> +++ b/include/linux/soundwire/sdw.h
> @@ -1093,6 +1093,8 @@ int sdw_slave_get_current_bank(struct sdw_slave *sdev);
>
> int sdw_slave_get_scale_index(struct sdw_slave *slave, u8 *base);
>
> +int sdw_slave_wait_for_init(struct sdw_slave *slave, int timeout);
> +
> /* messaging and data APIs */
> int sdw_read(struct sdw_slave *slave, u32 addr);
> int sdw_write(struct sdw_slave *slave, u32 addr, u8 value);
> --
> 2.47.3
>
next prev parent reply other threads:[~2026-05-05 16:57 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-05 16:47 [PATCH 00/17] Add a new SoundWire enumeration helper Charles Keepax
2026-05-05 16:47 ` [PATCH 01/17] soundwire: Add a helper function to wait for device initialisation Charles Keepax
2026-05-05 16:57 ` Charles Keepax [this message]
2026-05-06 10:53 ` Charles Keepax
2026-05-05 16:47 ` [PATCH 02/17] ASoC: cs42l42: Use new SoundWire enumeration helper Charles Keepax
2026-05-06 0:13 ` Mark Brown
2026-05-06 8:26 ` Charles Keepax
2026-05-05 16:47 ` [PATCH 03/17] ASoC: max98363: " Charles Keepax
2026-05-05 16:47 ` [PATCH 04/17] ASoC: max98373: " Charles Keepax
2026-05-05 16:47 ` [PATCH 05/17] ASoC: rt700: " Charles Keepax
2026-05-05 16:47 ` [PATCH 06/17] ASoC: rt711: " Charles Keepax
2026-05-05 16:47 ` [PATCH 07/17] ASoC: rt712: " Charles Keepax
2026-05-05 16:47 ` [PATCH 08/17] ASoC: rt715: " Charles Keepax
2026-05-05 16:47 ` [PATCH 09/17] ASoc: rt721: " Charles Keepax
2026-05-05 16:48 ` [PATCH 10/17] ASoC: rt722: " Charles Keepax
2026-05-05 16:48 ` [PATCH 11/17] ASoC: rt1017: " Charles Keepax
2026-05-05 16:48 ` [PATCH 12/17] ASoC: rt1308: " Charles Keepax
2026-05-05 16:48 ` [PATCH 13/17] ASoC: rt1316: " Charles Keepax
2026-05-05 16:48 ` [PATCH 14/17] ASoC: rt1318: " Charles Keepax
2026-05-05 16:48 ` [PATCH 15/17] ASoC: rt1320: " Charles Keepax
2026-05-05 16:48 ` [PATCH 16/17] ASoC: rt5682: " Charles Keepax
2026-05-05 16:48 ` [PATCH 17/17] ASoC: tas2783: " Charles Keepax
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=afohYUQLPLjRXjd4@opensource.cirrus.com \
--to=ckeepax@opensource.cirrus.com \
--cc=baojun.xu@ti.com \
--cc=broonie@kernel.org \
--cc=jack.yu@realtek.com \
--cc=kevin-lu@ti.com \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=niranjan.hy@ti.com \
--cc=oder_chiou@realtek.com \
--cc=patches@opensource.cirrus.com \
--cc=peter.ujfalusi@linux.intel.com \
--cc=pierre-louis.bossart@linux.dev \
--cc=sen@ti.com \
--cc=shenghao-ding@ti.com \
--cc=shumingf@realtek.com \
--cc=vkoul@kernel.org \
--cc=yung-chuan.liao@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox