Skip to content
Snippets Groups Projects
Commit 5b9000dd authored by Simon Glass's avatar Simon Glass
Browse files

dm: core: Add a function to bind a driver for a device tree node


Some device tree nodes do not have compatible strings but do require
drivers. This is pretty rare, and somewhat unfortunate. Add a function
to permit creation of a driver for any device tree node.

Signed-off-by: default avatarSimon Glass <sjg@chromium.org>
parent 4c509343
No related branches found
No related tags found
No related merge requests found
......@@ -73,6 +73,13 @@ int lists_bind_drivers(struct udevice *parent, bool pre_reloc_only)
int device_bind_driver(struct udevice *parent, const char *drv_name,
const char *dev_name, struct udevice **devp)
{
return device_bind_driver_to_node(parent, drv_name, dev_name, -1, devp);
}
int device_bind_driver_to_node(struct udevice *parent, const char *drv_name,
const char *dev_name, int node,
struct udevice **devp)
{
struct driver *drv;
int ret;
......@@ -82,7 +89,7 @@ int device_bind_driver(struct udevice *parent, const char *drv_name,
printf("Cannot find driver '%s'\n", drv_name);
return -ENOENT;
}
ret = device_bind(parent, drv, dev_name, NULL, -1, devp);
ret = device_bind(parent, drv, dev_name, NULL, node, devp);
if (ret) {
printf("Cannot create device named '%s' (err=%d)\n",
dev_name, ret);
......
......@@ -73,4 +73,20 @@ int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
int device_bind_driver(struct udevice *parent, const char *drv_name,
const char *dev_name, struct udevice **devp);
/**
* device_bind_driver_to_node() - bind a device to a driver for a node
*
* This binds a new device to a driver for a given device tree node. This
* should only be needed if the node lacks a compatible strings.
*
* @parent: Parent device
* @drv_name: Name of driver to attach to this parent
* @dev_name: Name of the new device thus created
* @node: Device tree node
* @devp: Returns the newly bound device
*/
int device_bind_driver_to_node(struct udevice *parent, const char *drv_name,
const char *dev_name, int node,
struct udevice **devp);
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment