summaryrefslogtreecommitdiffstats
path: root/drivers/base/bus.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/base/bus.c')
-rw-r--r--drivers/base/bus.c38
1 files changed, 14 insertions, 24 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index 1038d20a12..a5c9c930da 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -1,7 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
- *
- * Under GPLv2
*/
#include <common.h>
@@ -48,9 +47,9 @@ int bus_register(struct bus_type *bus)
return 0;
}
-int device_match(struct device_d *dev, struct driver_d *drv)
+int device_match(struct device *dev, struct driver *drv)
{
- if (IS_ENABLED(CONFIG_OFDEVICE) && dev->device_node &&
+ if (IS_ENABLED(CONFIG_OFDEVICE) && dev->of_node &&
drv->of_compatible)
return of_match(dev, drv);
@@ -71,38 +70,29 @@ int device_match(struct device_d *dev, struct driver_d *drv)
return -1;
}
-int device_match_of_modalias(struct device_d *dev, struct driver_d *drv)
+int device_match_of_modalias(struct device *dev, struct driver *drv)
{
const struct platform_device_id *id = drv->id_table;
const char *of_modalias = NULL, *p;
- int cplen;
+ const struct property *prop;
const char *compat;
if (!device_match(dev, drv))
return 0;
- if (!id || !IS_ENABLED(CONFIG_OFDEVICE) || !dev->device_node)
+ if (!id || !IS_ENABLED(CONFIG_OFDEVICE) || !dev->of_node)
return -1;
- compat = of_get_property(dev->device_node, "compatible", &cplen);
- if (!compat)
- return -1;
-
- p = strchr(compat, ',');
- of_modalias = p ? p + 1 : compat;
-
- while (id->name) {
- if (!strcmp(id->name, dev->name)) {
- dev->id_entry = id;
- return 0;
- }
+ of_property_for_each_string(dev->of_node, "compatible", prop, compat) {
+ p = strchr(compat, ',');
+ of_modalias = p ? p + 1 : compat;
- if (of_modalias && !strcmp(id->name, of_modalias)) {
- dev->id_entry = id;
- return 0;
+ for (id = drv->id_table; id->name; id++) {
+ if (!strcmp(id->name, dev->name) || !strcmp(id->name, of_modalias)) {
+ dev->id_entry = id;
+ return 0;
+ }
}
-
- id++;
}
return -1;