Re: [PATCH v2 01/10] soundwire: Always wait for initialisation of unattached devices
From: Srinivas Kandagatla
Date: Fri Jun 05 2026 - 07:50:33 EST
some minor typos in commit msg.
On 6/5/26 9:48 AM, Charles Keepax wrote:
> Currently in sdw_slave_wait_for_init() the waiting can be skipped
> if unattach_request is not set. Doing so was added in [1] likely
> because the core used to do a complete() on the completion so
> waiting in the case an unattach hadn't actually happened would
> block for the full timeout. However patch [2] updated the core to
> use complete_all() which means that the wait_for_completion() will
> now simply return if the device is already attached skipping the
> completion doesn't add much.
>
> Additionally, unatttach_request is only set if the host initiates
s/unatttach/unattach
> a bus reset. However, the host doing a bus reset is not the only
> reason a device may be unattached from the bus. Other options
> could include the driver probing before the device enumerates, a
> sync-loss, or the device itself powering down.
>
> Removing the skip using unattached_request, doesn't cost much in
> terms of efficiency and allows the sdw_slave_wiat_for_init() helper
s/wiat/wait
> to be used outside of runtime resume.
>
> [1] b2bd75f806c4 ("soundwire: sdw_slave: track unattach_request to handle all init sequences")
> [2] c40d6b3249b1 ("soundwire: fix enumeration completion")
>
> Acked-by: Vinod Koul <vkoul@xxxxxxxxxx>
> Signed-off-by: Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>
> ---
>
> No change since v1.
>
> drivers/soundwire/bus.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c
> index ea3a24f805c00..b7bdf19ebb42e 100644
> --- a/drivers/soundwire/bus.c
> +++ b/drivers/soundwire/bus.c
> @@ -1386,9 +1386,6 @@ int sdw_slave_wait_for_init(struct sdw_slave *slave, int timeout_ms)
> {
> unsigned long time;
>
> - if (!slave->unattach_request)
> - return 0;
> -
> time = wait_for_completion_timeout(&slave->initialization_complete,
> msecs_to_jiffies(timeout_ms));
> if (!time) {