Re: [REGRESSION 7.2-rc3] ASoC: cs35l56: compo nent probe waits for an init_completion that cannot be signalle d until the wait ends — whole sof_sdw card fails

Richard Fitzgerald <[email protected]> Thu, 16 Jul 2026 10:12:56 +0100
Newsgroups org.alsa-project.alsa-devel,org.kernel.vger.linux-sound
Message-ID <[email protected]>
On 16/07/2026 9:06 am, Salman S. Tahir wrote:
> Hi Richard,
> 
> Thanks for the diagnosis and the complete() -> complete_all() suggestion. I
> tested it before replying, and I'm sorry to report it does not fix the 
> failure
> on this machine (Lenovo Yoga 9i 14ILL10, two SPI CS35L56 B0 amps, 7.2-rc3).
> 

Yeah, I think I see what is going on.
This amp is normally used on SoundWire, and probing is weird on
SoundWire. The probe() must return before hardware is accessible, but it
must call snd_soc_register_component() during probe() because that might
return -EPROBE_DEFER. So we have to start in this strange state where
the ASoC component is created but the hardware isn't accessible.

We don't need this 2-stage startup on SPI or I2C so those call both
stages within probe(). The problem with this is it still calls
snd_soc_register_component() early. If that triggers ASoC to build the
soundcard it will call component_probe() to wait on
init_completion. But that would be running within the cs35l56 driver
probe() so it is blocking probe() from continuing to the point where it
signals the completion.