diff options
author | Tom Rini <trini@konsulko.com> | 2018-12-07 19:00:39 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2018-12-15 11:49:19 -0500 |
commit | 6df41b1cf3f22c8baa3e2919d7607f96c5385c57 (patch) | |
tree | a95f1390ec922adc1de6b9fab927a0f76999edc2 /cmd/dm.c | |
parent | 4bca32497c09ef53ad669dfa4c413c00321ad7ca (diff) | |
download | u-boot-6df41b1cf3f22c8baa3e2919d7607f96c5385c57.tar.gz u-boot-6df41b1cf3f22c8baa3e2919d7607f96c5385c57.tar.bz2 u-boot-6df41b1cf3f22c8baa3e2919d7607f96c5385c57.zip |
cmd: Move the "dm" command from test/dm/ to cmd/
The "dm" command under CONFIG_CMD_DM should live under cmd/ rather than
test/dm/ so move it.
Signed-off-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'cmd/dm.c')
-rw-r--r-- | cmd/dm.c | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/cmd/dm.c b/cmd/dm.c new file mode 100644 index 0000000000..7b271db0bb --- /dev/null +++ b/cmd/dm.c @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Google, Inc + * + * (C) Copyright 2012 + * Marek Vasut <marex@denx.de> + */ + +#include <common.h> +#include <command.h> +#include <dm.h> +#include <malloc.h> +#include <mapmem.h> +#include <errno.h> +#include <asm/io.h> +#include <dm/root.h> +#include <dm/util.h> + +static int do_dm_dump_all(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + dm_dump_all(); + + return 0; +} + +static int do_dm_dump_uclass(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + dm_dump_uclass(); + + return 0; +} + +static int do_dm_dump_devres(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + dm_dump_devres(); + + return 0; +} + +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, "", ""), + U_BOOT_CMD_MKENT(devres, 1, 1, do_dm_dump_devres, "", ""), +}; + +static __maybe_unused void dm_reloc(void) +{ + static int relocated; + + if (!relocated) { + fixup_cmdtable(test_commands, ARRAY_SIZE(test_commands)); + relocated = 1; + } +} + +static int do_dm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + cmd_tbl_t *test_cmd; + int ret; + +#ifdef CONFIG_NEEDS_MANUAL_RELOC + dm_reloc(); +#endif + + if (argc < 2) + return CMD_RET_USAGE; + test_cmd = find_cmd_tbl(argv[1], test_commands, + ARRAY_SIZE(test_commands)); + argc -= 2; + argv += 2; + if (!test_cmd || argc > test_cmd->maxargs) + return CMD_RET_USAGE; + + ret = test_cmd->cmd(test_cmd, flag, argc, argv); + + return cmd_process_error(test_cmd, ret); +} + +U_BOOT_CMD( + 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\n" + "dm devres Dump list of device resources for each device" +); |