[U-Boot] [PATCH v2 4/5] drivers: uclass: Add dev_get_uclass_index() to get the uclass/index of a device
Simon Glass
sjg at chromium.org
Wed Jun 20 17:52:05 UTC 2018
Hi Jean-Jacques,
On 18 June 2018 at 07:56, Jean-Jacques Hiblot <jjhiblot at ti.com> wrote:
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot at ti.com>
> ---
Please add a commit message with motivation and purpose.
Also please add a test for this (e.g. in test/dm/core.c
>
> Changes in v2: New
>
> drivers/core/uclass.c | 21 +++++++++++++++++++++
> include/dm/uclass-internal.h | 11 +++++++++++
> 2 files changed, 32 insertions(+)
>
> diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c
> index 0085d3f..6efce20 100644
> --- a/drivers/core/uclass.c
> +++ b/drivers/core/uclass.c
> @@ -171,6 +171,27 @@ enum uclass_id uclass_get_by_name(const char *name)
> return UCLASS_INVALID;
> }
>
> +int dev_find_uclass_index(struct udevice *dev, struct uclass **ucp)
> +{
> + struct udevice *iter;
> + struct uclass *uc = dev->uclass;
> + int i = 0;
> +
> + if (list_empty(&uc->dev_head))
> + return -ENODEV;
> +
> + list_for_each_entry(iter, &uc->dev_head, uclass_node) {
> + if (iter == dev) {
> + if (ucp)
> + *ucp = uc;
> + return i;
> + }
> + i++;
> + }
> +
> + return -ENODEV;
> +}
> +
> int uclass_find_device(enum uclass_id id, int index, struct udevice **devp)
> {
> struct uclass *uc;
> diff --git a/include/dm/uclass-internal.h b/include/dm/uclass-internal.h
> index 7ba064b..30d5a4f 100644
> --- a/include/dm/uclass-internal.h
> +++ b/include/dm/uclass-internal.h
> @@ -24,6 +24,17 @@
> int uclass_get_device_tail(struct udevice *dev, int ret, struct udevice **devp);
>
> /**
> + * dev_get_uclass_index() - Get uclass and index of device
> + * @dev: - in - Device that we want the uclass/index of
> + * @ucp: - out - A pointer to the uclass the device belongs to
> + *
> + * The device is not prepared for use - this is an internal function.
> + *
> + * @return the index of the device in the uclass list or -ENODEV if not found.
> + */
> +int dev_get_uclass_index(struct udevice *dev, struct uclass **ucp);
find or get? It should be find, since it doesn't probe anything.
> +
> +/**
> * uclass_find_device() - Return n-th child of uclass
> * @id: Id number of the uclass
> * @index: Position of the child in uclass's list
> --
> 2.7.4
>
Regards,
Simon
More information about the U-Boot
mailing list