diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index df6e4c924b353a24db62d5b222572135f0240816..e44438f7917bb880dd95027c75542fa6de1a7d59 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -1977,6 +1977,9 @@ static bool acpi_scan_handler_matching(struct acpi_scan_handler *handler, { const struct acpi_device_id *devid; + if (handler->match) + return handler->match(idstr, matchid); + for (devid = handler->ids; devid->id[0]; devid++) if (!strcmp((char *)devid->id, idstr)) { if (matchid) diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h index 7417a16c8d86a94ea1d64101e020dba006a681c1..c241c7594bbc48ad39bb2aeba8e8983bac099213 100644 --- a/include/acpi/acpi_bus.h +++ b/include/acpi/acpi_bus.h @@ -131,6 +131,7 @@ static inline struct acpi_hotplug_profile *to_acpi_hotplug_profile( struct acpi_scan_handler { const struct acpi_device_id *ids; struct list_head list_node; + bool (*match)(char *idstr, const struct acpi_device_id **matchid); int (*attach)(struct acpi_device *dev, const struct acpi_device_id *id); void (*detach)(struct acpi_device *dev); void (*bind)(struct device *phys_dev);