uclass: Add dev_get_uclass_index() to get the uclass/index of a device

This function is the reciprocal of uclass_find_device().
It will be used to print the index information in dm tree dump.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
lime2-spi
Jean-Jacques Hiblot 6 years ago committed by Marek Vasut
parent c3211708cf
commit e7c865620e
  1. 21
      drivers/core/uclass.c
  2. 11
      include/dm/uclass-internal.h

@ -171,6 +171,27 @@ enum uclass_id uclass_get_by_name(const char *name)
return UCLASS_INVALID;
}
int dev_get_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;

@ -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);
/**
* uclass_find_device() - Return n-th child of uclass
* @id: Id number of the uclass
* @index: Position of the child in uclass's list

Loading…
Cancel
Save