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.