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;
|
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
|
#ifdef CONFIG_OF_CONTROL
|
||||||
/**
|
/**
|
||||||
* driver_check_compatible() - Check if a driver is compatible with this node
|
* 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,
|
int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
|
||||||
struct udevice **devp);
|
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
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue