The hardware UniqueID, typically enabled with pin-strapping, is required during enumeration to avoid conflicts between devices of the same type.
When there are no devices of the same type, using the UniqueID is overkill and results in a lot of probe errors due to mismatches between ACPI tables and hardware capabilities. For example it's not uncommon for BIOS vendors to copy/paste the same settings between platforms but the hardware pin-strapping is different. This is perfectly legit and permitted by MIPI specs.
With this patchset, the UniqueID is only used when multiple devices of the same type are detected. The loop to detect multiple identical devices is not super efficient but with typically fewer than 4 devices per link there's no real incentive to be smarter.
This change is only implemented for ACPI platforms, for DeviceTree there is no change.
Pierre-Louis Bossart (3): soundwire: remove bitfield for unique_id, use u8 soundwire: slave: add helper to extract slave ID soundwire: ignore uniqueID when irrelevant
drivers/soundwire/bus.c | 7 +-- drivers/soundwire/slave.c | 98 +++++++++++++++++++++++++++-------- include/linux/soundwire/sdw.h | 4 +- 3 files changed, 84 insertions(+), 25 deletions(-)