From: Peng Fan <peng.fan@xxxxxxx> There maybe more entries in driver->id_table, just like platform driver of_match_table. So iterate the id_table, not only use the 1st entry. Signed-off-by: Peng Fan <peng.fan@xxxxxxx> --- drivers/firmware/arm_scmi/bus.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/firmware/arm_scmi/bus.c b/drivers/firmware/arm_scmi/bus.c index c999edd18cd3..aeb7da841b9d 100644 --- a/drivers/firmware/arm_scmi/bus.c +++ b/drivers/firmware/arm_scmi/bus.c @@ -282,14 +282,18 @@ EXPORT_SYMBOL_GPL(scmi_bus_type); int scmi_driver_register(struct scmi_driver *driver, struct module *owner, const char *mod_name) { + const struct scmi_device_id *id_table = driver->id_table; int retval; if (!driver->probe) return -EINVAL; - retval = scmi_protocol_device_request(driver->id_table); - if (retval) - return retval; + while (id_table->name) { + retval = scmi_protocol_device_request(id_table); + if (retval) + return retval; + id_table++; + } driver->driver.bus = &scmi_bus_type; driver->driver.name = driver->name; -- 2.37.1