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 <jjhib...@ti.com>

---

Changes in v3:
- update commit log
- fixed problem with the function name

Changes in v2: None

 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..3af973c 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_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;
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);
+
+/**
  * 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

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to