Hi, Now only storing the crc hash to a new member in struct acpi_device, just like proposed by Rafael. In port-mapper.c I'm then scanning the acpi bus separately with every port in order to find the matching devices. v3 cover letter: The _PLD buffer is no longer stored as requested by Rafael, so the drivers will need to continue to evaluate the _PLD if they need it. The stored locations will therefore only contain the list of other devices that share the location, but that is most important, and in practice the main goal of the series in any case. v2 cover letter: I'm now using the helpers device_match_acpi_dev() and device_match_fwnode() like Andy suggested. No other changes. The original cover letter: This removes the need for the drivers to always separately evaluate the _PLD. With the USB Type-C connector and USB port mapping this allows us to start using the component framework and remove the custom APIs. So far the only users of the _PLD information have been the USB drivers, but it seems it will be used also at least in some camera drivers later. These nevertheless touch mostly USB drivers. thanks, Heikki Krogerus (5): acpi: Export acpi_bus_type acpi: Store CRC-32 hash of the _PLD in struct acpi_device usb: Link the ports to the connectors they are attached to usb: typec: port-mapper: Convert to the component framework usb: Remove usb_for_each_port() Documentation/ABI/testing/sysfs-bus-usb | 9 + drivers/acpi/bus.c | 1 + drivers/acpi/scan.c | 16 ++ drivers/usb/core/port.c | 32 +++ drivers/usb/core/usb.c | 46 ---- drivers/usb/typec/Makefile | 3 +- drivers/usb/typec/class.c | 2 - drivers/usb/typec/class.h | 10 +- drivers/usb/typec/port-mapper.c | 279 ++++-------------------- include/acpi/acpi_bus.h | 14 +- include/linux/usb.h | 9 - include/linux/usb/typec.h | 12 - 12 files changed, 117 insertions(+), 316 deletions(-) -- 2.34.1