In case we have an ACPI driver, check its ID table for matching, This allows to use some generic device property APIs in such drivers. Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> --- drivers/acpi/bus.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 3c0f2d050d47..17c98e826bde 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -1049,14 +1049,30 @@ static const void *acpi_of_device_get_match_data(const struct device *dev) return match->data; } +static const struct acpi_device_id *acpi_device_get_ids(const struct device *dev) +{ + if (dev->driver->acpi_match_table) + return dev->driver->acpi_match_table; + + if (dev_is_acpi(dev)) { + struct acpi_driver *drv = to_acpi_driver(dev->driver); + + if (drv->ids) + return drv->ids; + } + + return NULL; +} + const void *acpi_device_get_match_data(const struct device *dev) { + const struct acpi_device_id *ids = acpi_device_get_ids(dev); const struct acpi_device_id *match; - if (!dev->driver->acpi_match_table) + if (!ids) return acpi_of_device_get_match_data(dev); - match = acpi_match_device(dev->driver->acpi_match_table, dev); + match = acpi_match_device(ids, dev); if (!match) return NULL; -- 2.35.1