public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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
> 

  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