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>
This commit is contained in:
parent
a88340dfcf
commit
e33dc221f4
@ -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
|
||||
|
@ -60,4 +60,17 @@ int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only);
|
||||
int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
|
||||
struct udevice **devp);
|
||||
|
||||
/**
|
||||
* device_bind_driver() - bind a device to a driver
|
||||
*
|
||||
* This binds a new device to a driver.
|
||||
*
|
||||
* @parent: Parent device
|
||||
* @drv_name: Name of driver to attach to this parent
|
||||
* @dev_name: Name of the new device thus created
|
||||
* @devp: Returns the newly bound device
|
||||
*/
|
||||
int device_bind_driver(struct udevice *parent, const char *drv_name,
|
||||
const char *dev_name, struct udevice **devp);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user