]> git.sur5r.net Git - u-boot/blobdiff - test/dm/cmd_dm.c
nitrogen6x: config: add CONFIG_CMD_MEMTEST
[u-boot] / test / dm / cmd_dm.c
index 083f15c31d137c6456ba457c9d2a6cab820653b6..26980d209f4e8dede78d0d861f95a10ce0dd8232 100644 (file)
 #include <dm/test.h>
 #include <dm/uclass-internal.h>
 
+/**
+ * dm_display_line() - Display information about a single device
+ *
+ * Displays a single line of information with an option prefix
+ *
+ * @dev:       Device to display
+ * @buf:       Prefix to display at the start of the line
+ */
+static void dm_display_line(struct udevice *dev, char *buf)
+{
+       printf("%s- %c %s @ %08lx", buf,
+              dev->flags & DM_FLAG_ACTIVATED ? '*' : ' ',
+              dev->name, (ulong)map_to_sysmem(dev));
+       if (dev->req_seq != -1)
+               printf(", %d", dev->req_seq);
+       puts("\n");
+}
+
 static int display_succ(struct udevice *in, char *buf)
 {
        int len;
@@ -23,10 +41,7 @@ static int display_succ(struct udevice *in, char *buf)
        char local[16];
        struct udevice *pos, *n, *prev = NULL;
 
-       printf("%s- %s @ %08x", buf, in->name, map_to_sysmem(in));
-       if (in->flags & DM_FLAG_ACTIVATED)
-               puts(" - activated");
-       puts("\n");
+       dm_display_line(in, buf);
 
        if (list_empty(&in->child_head))
                return 0;
@@ -62,7 +77,7 @@ static int do_dm_dump_all(cmd_tbl_t *cmdtp, int flag, int argc,
        struct udevice *root;
 
        root = dm_root();
-       printf("ROOT %08x\n", map_to_sysmem(root));
+       printf("ROOT %08lx\n", (ulong)map_to_sysmem(root));
        return dm_dump(root);
 }
 
@@ -81,11 +96,10 @@ static int do_dm_dump_uclass(cmd_tbl_t *cmdtp, int flag, int argc,
                        continue;
 
                printf("uclass %d: %s\n", id, uc->uc_drv->name);
-               for (ret = uclass_first_device(id, &dev);
-                    dev;
-                    ret = uclass_next_device(&dev)) {
-                       printf("  %s @  %08x:\n", dev->name,
-                              map_to_sysmem(dev));
+               if (list_empty(&uc->dev_head))
+                       continue;
+               list_for_each_entry(dev, &uc->dev_head, uclass_node) {
+                       dm_display_line(dev, "");
                }
                puts("\n");
        }
@@ -93,16 +107,23 @@ static int do_dm_dump_uclass(cmd_tbl_t *cmdtp, int flag, int argc,
        return 0;
 }
 
+#ifdef CONFIG_DM_TEST
 static int do_dm_test(cmd_tbl_t *cmdtp, int flag, int argc,
                          char * const argv[])
 {
        return dm_test_main();
 }
+#define TEST_HELP "\ndm test         Run tests"
+#else
+#define TEST_HELP
+#endif
 
 static cmd_tbl_t test_commands[] = {
        U_BOOT_CMD_MKENT(tree, 0, 1, do_dm_dump_all, "", ""),
        U_BOOT_CMD_MKENT(uclass, 1, 1, do_dm_dump_uclass, "", ""),
+#ifdef CONFIG_DM_TEST
        U_BOOT_CMD_MKENT(test, 1, 1, do_dm_test, "", ""),
+#endif
 };
 
 static int do_dm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
@@ -127,7 +148,7 @@ static int do_dm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 U_BOOT_CMD(
        dm,     2,      1,      do_dm,
        "Driver model low level access",
-       "tree         Dump driver model tree\n"
-       "dm uclass        Dump list of instances for each uclass\n"
-       "dm test         Run tests"
+       "tree         Dump driver model tree ('*' = activated)\n"
+       "dm uclass        Dump list of instances for each uclass"
+       TEST_HELP
 );