Re: [PATCH 2/3] ASoC: sdw_utils: skip endpoints of a peripheral that is not on the bus
Pierre-Louis Bossart <[email protected]> Wed, 5 Aug 2026 10:22:42 +0200
| Newsgroups | gmane.linux.kernel,gmane.linux.sound |
|---|---|
| Message-ID | <[email protected]> |
>> asoc_sdw_parse_sdw_endpoints() builds DAI links for every endpoint of >> every _ADR entry the firmware declares. If a declared peripheral never >> enumerates, its links are still created and later fail to prepare, which >> takes the whole link down rather than degrading it: >> >> sof_sdw sof_sdw: ASoC: error at snd_soc_link_startup on >> SDW0-Playback-SmartAmp: -61 >> >> The Microsoft Surface Pro 11 (Intel) declares one physical RT1320 twice, >> as two _ADR entries on link 0 differing only in SDCA class id: >> >> SWRA _ADR 0x000030025D132000 class 0 >> SWRB _ADR 0x000030025D132001 class 1 >> >> Same link, same manufacturer, part and version, same unique id 0. The >> part reports class 1, so only SWRB enumerates. SWRA is a phantom and >> stays UNATTACHED across every boot and every firmware version tested, >> including the November 2025 bundle. > > Why not just remove SWRA from the BIOS? Or add a quirk in drivers/soundwire/dmi-quirks.c to skip this SWRA device entirely, this has been the direction so far to ignore 'ghost' devices. It's much safer IMHO than trying to detect if a device is physically present or not.