106811959SSimon Glass /* 206811959SSimon Glass * Copyright (c) 2013 Google, Inc 306811959SSimon Glass * 406811959SSimon Glass * (C) Copyright 2012 506811959SSimon Glass * Marek Vasut <marex@denx.de> 606811959SSimon Glass * 706811959SSimon Glass * SPDX-License-Identifier: GPL-2.0+ 806811959SSimon Glass */ 906811959SSimon Glass 1006811959SSimon Glass #include <common.h> 1106811959SSimon Glass #include <dm.h> 1206811959SSimon Glass #include <malloc.h> 130eb25b61SJoe Hershberger #include <mapmem.h> 1406811959SSimon Glass #include <errno.h> 1506811959SSimon Glass #include <asm/io.h> 1606811959SSimon Glass #include <dm/root.h> 17*304fbef1SSimon Glass #include <dm/util.h> 1806811959SSimon Glass 1906811959SSimon Glass static int do_dm_dump_all(cmd_tbl_t *cmdtp, int flag, int argc, 2006811959SSimon Glass char * const argv[]) 2106811959SSimon Glass { 22*304fbef1SSimon Glass dm_dump_all(); 23a56642c7SMasahiro Yamada 24a56642c7SMasahiro Yamada return 0; 25a56642c7SMasahiro Yamada } 26a56642c7SMasahiro Yamada 2706811959SSimon Glass static int do_dm_dump_uclass(cmd_tbl_t *cmdtp, int flag, int argc, 2806811959SSimon Glass char * const argv[]) 2906811959SSimon Glass { 30*304fbef1SSimon Glass dm_dump_uclass(); 3106811959SSimon Glass 3206811959SSimon Glass return 0; 3306811959SSimon Glass } 3406811959SSimon Glass 3506811959SSimon Glass static cmd_tbl_t test_commands[] = { 3606811959SSimon Glass U_BOOT_CMD_MKENT(tree, 0, 1, do_dm_dump_all, "", ""), 3706811959SSimon Glass U_BOOT_CMD_MKENT(uclass, 1, 1, do_dm_dump_uclass, "", ""), 3806811959SSimon Glass }; 3906811959SSimon Glass 4006811959SSimon Glass static int do_dm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 4106811959SSimon Glass { 4206811959SSimon Glass cmd_tbl_t *test_cmd; 4306811959SSimon Glass int ret; 4406811959SSimon Glass 4557f54d55SSimon Glass if (argc < 2) 4606811959SSimon Glass return CMD_RET_USAGE; 4706811959SSimon Glass test_cmd = find_cmd_tbl(argv[1], test_commands, 4806811959SSimon Glass ARRAY_SIZE(test_commands)); 4906811959SSimon Glass argc -= 2; 5006811959SSimon Glass argv += 2; 5106811959SSimon Glass if (!test_cmd || argc > test_cmd->maxargs) 5206811959SSimon Glass return CMD_RET_USAGE; 5306811959SSimon Glass 5406811959SSimon Glass ret = test_cmd->cmd(test_cmd, flag, argc, argv); 5506811959SSimon Glass 5606811959SSimon Glass return cmd_process_error(test_cmd, ret); 5706811959SSimon Glass } 5806811959SSimon Glass 5906811959SSimon Glass U_BOOT_CMD( 6057f54d55SSimon Glass dm, 3, 1, do_dm, 6106811959SSimon Glass "Driver model low level access", 62fffa24d7SSimon Glass "tree Dump driver model tree ('*' = activated)\n" 63b6a49a7aSSimon Glass "dm uclass Dump list of instances for each uclass" 6406811959SSimon Glass ); 65