dm: print the index of the device when dumping the dm tree
authorJean-Jacques Hiblot <jjhiblot@ti.com>
Thu, 9 Aug 2018 14:17:43 +0000 (16:17 +0200)
committerMarek Vasut <marex@denx.de>
Tue, 21 Aug 2018 14:21:37 +0000 (16:21 +0200)
Command "dm tree" dumps the devices with class, driver, name information.
Add the index of the device in the class too, because the information is
useful for the bind/unbind commands.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/core/dump.c

index 58820cdb2f457e08adaca364ea233c08cdf97ceb..d7cdb1475d7cb0daadd549f4a667468354b55595 100644 (file)
@@ -8,6 +8,7 @@
 #include <mapmem.h>
 #include <dm/root.h>
 #include <dm/util.h>
+#include <dm/uclass-internal.h>
 
 static void show_devices(struct udevice *dev, int depth, int last_flag)
 {
@@ -15,7 +16,8 @@ static void show_devices(struct udevice *dev, int depth, int last_flag)
        struct udevice *child;
 
        /* print the first 11 characters to not break the tree-format. */
-       printf(" %-10.10s [ %c ]   %-10.10s  ", dev->uclass->uc_drv->name,
+       printf(" %-10.10s  %d  [ %c ]   %-10.10s  ", dev->uclass->uc_drv->name,
+              dev_get_uclass_index(dev, NULL),
               dev->flags & DM_FLAG_ACTIVATED ? '+' : ' ', dev->driver->name);
 
        for (i = depth; i >= 0; i--) {
@@ -47,8 +49,8 @@ void dm_dump_all(void)
 
        root = dm_root();
        if (root) {
-               printf(" Class      Probed  Driver      Name\n");
-               printf("----------------------------------------\n");
+               printf(" Class    index  Probed  Driver      Name\n");
+               printf("-----------------------------------------\n");
                show_devices(root, -1, 0);
        }
 }
@@ -60,9 +62,9 @@ void dm_dump_all(void)
  *
  * @dev:       Device to display
  */
-static void dm_display_line(struct udevice *dev)
+static void dm_display_line(struct udevice *dev, int index)
 {
-       printf("- %c %s @ %08lx",
+       printf("%i %c %s @ %08lx", index,
               dev->flags & DM_FLAG_ACTIVATED ? '*' : ' ',
               dev->name, (ulong)map_to_sysmem(dev));
        if (dev->seq != -1 || dev->req_seq != -1)
@@ -78,6 +80,7 @@ void dm_dump_uclass(void)
 
        for (id = 0; id < UCLASS_COUNT; id++) {
                struct udevice *dev;
+               int i = 0;
 
                ret = uclass_get(id, &uc);
                if (ret)
@@ -87,7 +90,8 @@ void dm_dump_uclass(void)
                if (list_empty(&uc->dev_head))
                        continue;
                list_for_each_entry(dev, &uc->dev_head, uclass_node) {
-                       dm_display_line(dev);
+                       dm_display_line(dev, i);
+                       i++;
                }
                puts("\n");
        }