summaryrefslogtreecommitdiffstats
path: root/drivers/base/bus.c
diff options
context:
space:
mode:
authorAlexander Shiyan <shc_work@mail.ru>2013-07-12 00:23:28 +0400
committerSascha Hauer <s.hauer@pengutronix.de>2013-07-15 10:08:10 +0200
commit7bc400d14ccfeae112de106ffe6c3ba57e41b11e (patch)
tree48fa8ab81cdcb38325143d0ddcf281c64553eb64 /drivers/base/bus.c
parent10920b6fe283b1d4c57b09597ad888bfdfdd663e (diff)
downloadbarebox-7bc400d14ccfeae112de106ffe6c3ba57e41b11e.tar.gz
barebox-7bc400d14ccfeae112de106ffe6c3ba57e41b11e.tar.xz
base: Transform "platform_match" into "device_match" and make this function public
This change will allow reuse this function for other buses. Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/base/bus.c')
-rw-r--r--drivers/base/bus.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index 5251be6b2e..4357020241 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -46,3 +46,27 @@ int bus_register(struct bus_type *bus)
return 0;
}
+
+int device_match(struct device_d *dev, struct driver_d *drv)
+{
+ if (IS_ENABLED(CONFIG_OFDEVICE) && dev->device_node &&
+ drv->of_compatible)
+ return of_match(dev, drv);
+
+ if (!strcmp(dev->name, drv->name))
+ return 0;
+
+ if (drv->id_table) {
+ struct platform_device_id *id = drv->id_table;
+
+ while (id->name) {
+ if (!strcmp(id->name, dev->name)) {
+ dev->id_entry = id;
+ return 0;
+ }
+ id++;
+ }
+ }
+
+ return -1;
+}