aboutsummaryrefslogtreecommitdiff
path: root/drivers/core/lists.c
diff options
context:
space:
mode:
authorSimon Glass2014-11-11 10:46:21 -0700
committerSimon Glass2014-11-22 10:16:47 +0100
commite33dc221f45ca501319f5aebd1c88574238261be (patch)
tree1be16d0d508c305b89757063d0c2e939ea226714 /drivers/core/lists.c
parenta88340dfcf8a34cf7fe000c619d01e1d0f0a442a (diff)
dm: Add a function to bind a device by driver name
In some cases we need to manually bind a device to a particular driver. Add a function to do this. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com> Acked-by: Heiko Schocher <hs@denx.de>
Diffstat (limited to 'drivers/core/lists.c')
-rw-r--r--drivers/core/lists.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/core/lists.c b/drivers/core/lists.c
index 24d2864924b..7a1d6604d42 100644
--- a/drivers/core/lists.c
+++ b/drivers/core/lists.c
@@ -77,6 +77,27 @@ int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only)
return result;
}
+int device_bind_driver(struct udevice *parent, const char *drv_name,
+ const char *dev_name, struct udevice **devp)
+{
+ struct driver *drv;
+ int ret;
+
+ drv = lists_driver_lookup_name(drv_name);
+ if (!drv) {
+ printf("Cannot find driver '%s'\n", drv_name);
+ return -ENOENT;
+ }
+ ret = device_bind(parent, drv, dev_name, NULL, -1, devp);
+ if (ret) {
+ printf("Cannot create device named '%s' (err=%d)\n",
+ dev_name, ret);
+ return ret;
+ }
+
+ return 0;
+}
+
#ifdef CONFIG_OF_CONTROL
/**
* driver_check_compatible() - Check if a driver is compatible with this node