]>
git.ipfire.org Git - people/ms/u-boot.git/blob - test/dm/cmd_dm.c
2 * Copyright (c) 2013 Google, Inc
5 * Marek Vasut <marex@denx.de>
7 * SPDX-License-Identifier: GPL-2.0+
17 #include <dm/uclass-internal.h>
19 static int display_succ(struct udevice
*in
, char *buf
)
24 struct udevice
*pos
, *n
, *prev
= NULL
;
26 printf("%s- %s @ %08lx", buf
, in
->name
, (ulong
)map_to_sysmem(in
));
27 if (in
->flags
& DM_FLAG_ACTIVATED
)
31 if (list_empty(&in
->child_head
))
35 strncpy(local
, buf
, sizeof(local
));
36 snprintf(local
+ len
, 2, "|");
37 if (len
&& local
[len
- 1] == '`')
40 list_for_each_entry_safe(pos
, n
, &in
->child_head
, sibling_node
) {
42 display_succ(prev
, local
);
46 snprintf(local
+ len
, 2, "`");
47 display_succ(prev
, local
);
52 static int dm_dump(struct udevice
*dev
)
56 return display_succ(dev
, "");
59 static int do_dm_dump_all(cmd_tbl_t
*cmdtp
, int flag
, int argc
,
65 printf("ROOT %08lx\n", (ulong
)map_to_sysmem(root
));
69 static int do_dm_dump_uclass(cmd_tbl_t
*cmdtp
, int flag
, int argc
,
76 for (id
= 0; id
< UCLASS_COUNT
; id
++) {
79 ret
= uclass_get(id
, &uc
);
83 printf("uclass %d: %s\n", id
, uc
->uc_drv
->name
);
84 for (ret
= uclass_first_device(id
, &dev
);
86 ret
= uclass_next_device(&dev
)) {
87 printf(" %s @ %08lx:\n", dev
->name
,
88 (ulong
)map_to_sysmem(dev
));
97 static int do_dm_test(cmd_tbl_t
*cmdtp
, int flag
, int argc
,
100 return dm_test_main();
102 #define TEST_HELP "\ndm test Run tests"
107 static cmd_tbl_t test_commands
[] = {
108 U_BOOT_CMD_MKENT(tree
, 0, 1, do_dm_dump_all
, "", ""),
109 U_BOOT_CMD_MKENT(uclass
, 1, 1, do_dm_dump_uclass
, "", ""),
110 #ifdef CONFIG_DM_TEST
111 U_BOOT_CMD_MKENT(test
, 1, 1, do_dm_test
, "", ""),
115 static int do_dm(cmd_tbl_t
*cmdtp
, int flag
, int argc
, char * const argv
[])
121 return CMD_RET_USAGE
;
122 test_cmd
= find_cmd_tbl(argv
[1], test_commands
,
123 ARRAY_SIZE(test_commands
));
126 if (!test_cmd
|| argc
> test_cmd
->maxargs
)
127 return CMD_RET_USAGE
;
129 ret
= test_cmd
->cmd(test_cmd
, flag
, argc
, argv
);
131 return cmd_process_error(test_cmd
, ret
);
136 "Driver model low level access",
137 "tree Dump driver model tree\n"
138 "dm uclass Dump list of instances for each uclass"