X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=test%2Fdm%2Fcmd_dm.c;h=caff49aa4f6201aa4358968d21aca6bf37689f4d;hb=40b6f2d020ca8074ed38a1b6bfa170aead1a170e;hp=26980d209f4e8dede78d0d861f95a10ce0dd8232;hpb=f2c8d7f591e28d3437155c7a6eae8c8d9e3fe552;p=oweals%2Fu-boot.git diff --git a/test/dm/cmd_dm.c b/test/dm/cmd_dm.c index 26980d209f..caff49aa4f 100644 --- a/test/dm/cmd_dm.c +++ b/test/dm/cmd_dm.c @@ -10,120 +10,40 @@ #include #include #include +#include #include #include #include -#include -#include - -/** - * 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; - int ip = 0; - char local[16]; - struct udevice *pos, *n, *prev = NULL; - - dm_display_line(in, buf); - - if (list_empty(&in->child_head)) - return 0; - - len = strlen(buf); - strncpy(local, buf, sizeof(local)); - snprintf(local + len, 2, "|"); - if (len && local[len - 1] == '`') - local[len - 1] = ' '; - - list_for_each_entry_safe(pos, n, &in->child_head, sibling_node) { - if (ip++) - display_succ(prev, local); - prev = pos; - } - - snprintf(local + len, 2, "`"); - display_succ(prev, local); - - return 0; -} - -static int dm_dump(struct udevice *dev) -{ - if (!dev) - return -EINVAL; - return display_succ(dev, ""); -} +#include static int do_dm_dump_all(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { - struct udevice *root; + dm_dump_all(); - root = dm_root(); - printf("ROOT %08lx\n", (ulong)map_to_sysmem(root)); - return dm_dump(root); + return 0; } static int do_dm_dump_uclass(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { - struct uclass *uc; - int ret; - int id; - - for (id = 0; id < UCLASS_COUNT; id++) { - struct udevice *dev; - - ret = uclass_get(id, &uc); - if (ret) - continue; - - printf("uclass %d: %s\n", id, uc->uc_drv->name); - if (list_empty(&uc->dev_head)) - continue; - list_for_each_entry(dev, &uc->dev_head, uclass_node) { - dm_display_line(dev, ""); - } - puts("\n"); - } + dm_dump_uclass(); return 0; } -#ifdef CONFIG_DM_TEST -static int do_dm_test(cmd_tbl_t *cmdtp, int flag, int argc, - char * const argv[]) +static int do_dm_dump_devres(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) { - return dm_test_main(); + dm_dump_devres(); + + return 0; } -#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 + U_BOOT_CMD_MKENT(devres, 1, 1, do_dm_dump_devres, "", ""), }; static int do_dm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) @@ -131,7 +51,7 @@ static int do_dm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) cmd_tbl_t *test_cmd; int ret; - if (argc != 2) + if (argc < 2) return CMD_RET_USAGE; test_cmd = find_cmd_tbl(argv[1], test_commands, ARRAY_SIZE(test_commands)); @@ -146,9 +66,9 @@ static int do_dm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) } U_BOOT_CMD( - dm, 2, 1, do_dm, + dm, 3, 1, do_dm, "Driver model low level access", "tree Dump driver model tree ('*' = activated)\n" - "dm uclass Dump list of instances for each uclass" - TEST_HELP + "dm uclass Dump list of instances for each uclass\n" + "dm devres Dump list of device resources for each device" );