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.