[U-Boot] [PATCH v2 05/17] dm: Add a function to bind a device by driver name

Jagan Teki
2014-11-11T18:23:59Z

On 11 November 2014 23:16, Simon Glass <sjg@chromium.org> wrote:
> 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>
> ---
>
> Changes in v2:
> - Add new patch to add a function to bind a device by driver name
>
> drivers/core/lists.c | 21 +++++++++++++++++++++
> include/dm/lists.h | 13 +++++++++++++
> 2 files changed, 34 insertions(+)
>
> diff --git a/drivers/core/lists.c b/drivers/core/lists.c
> index 9f33dde..32f2242 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
> diff --git a/include/dm/lists.h b/include/dm/lists.h
> index 704e33e..1b50af9 100644
> --- a/include/dm/lists.h
> +++ b/include/dm/lists.h
> @@ -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
> --
> 2.1.0.rc2.206.gedb03e5
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot

Reviewed-by: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com>

thanks!
--
Jagan.