[U-Boot] [PATCH v2 4/5] drivers: uclass: Add dev_get_uclass_index() to get the uclass/index of a device
Jean-Jacques Hiblot
jjhiblot at ti.com
Mon Jun 18 13:56:51 UTC 2018
Signed-off-by: Jean-Jacques Hiblot <jjhiblot at ti.com>
---
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);
+
+/**
* 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
More information about the U-Boot
mailing list