diff options
author | Tom Rini <trini@ti.com> | 2014-06-20 20:03:51 -0400 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2014-06-20 20:03:51 -0400 |
commit | 39b6d07fd7e692736cdb05a000b1c84ab43de4fb (patch) | |
tree | 72b3530f77de13dab378b5be9789edd952bc9e03 /common/cmd_iotrace.c | |
parent | 45f0ad9545578b4436fdf04ba25a10173bcb75ef (diff) | |
parent | 22ec136325fdfc805b1e48e5ac8e17f23b4e9fc6 (diff) | |
download | u-boot-imx-39b6d07fd7e692736cdb05a000b1c84ab43de4fb.zip u-boot-imx-39b6d07fd7e692736cdb05a000b1c84ab43de4fb.tar.gz u-boot-imx-39b6d07fd7e692736cdb05a000b1c84ab43de4fb.tar.bz2 |
Merge branch 'master' of git://git.denx.de/u-boot-dm
Diffstat (limited to 'common/cmd_iotrace.c')
-rw-r--r-- | common/cmd_iotrace.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/common/cmd_iotrace.c b/common/cmd_iotrace.c new file mode 100644 index 0000000..f54276d --- /dev/null +++ b/common/cmd_iotrace.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2014 Google, Inc + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <command.h> +#include <iotrace.h> + +static void do_print_stats(void) +{ + ulong start, size, offset, count; + + printf("iotrace is %sabled\n", iotrace_get_enabled() ? "en" : "dis"); + iotrace_get_buffer(&start, &size, &offset, &count); + printf("Start: %08lx\n", start); + printf("Size: %08lx\n", size); + printf("Offset: %08lx\n", offset); + printf("Output: %08lx\n", start + offset); + printf("Count: %08lx\n", count); + printf("CRC32: %08lx\n", (ulong)iotrace_get_checksum()); +} + +static int do_set_buffer(int argc, char * const argv[]) +{ + ulong addr = 0, size = 0; + + if (argc == 2) { + addr = simple_strtoul(*argv++, NULL, 16); + size = simple_strtoul(*argv++, NULL, 16); + } else if (argc != 0) { + return CMD_RET_USAGE; + } + + iotrace_set_buffer(addr, size); + + return 0; +} + +int do_iotrace(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + const char *cmd = argc < 2 ? NULL : argv[1]; + + if (!cmd) + return cmd_usage(cmdtp); + switch (*cmd) { + case 'b': + return do_set_buffer(argc - 2, argv + 2); + case 'p': + iotrace_set_enabled(0); + break; + case 'r': + iotrace_set_enabled(1); + break; + case 's': + do_print_stats(); + break; + default: + return CMD_RET_USAGE; + } + + return 0; +} + +U_BOOT_CMD( + iotrace, 4, 1, do_iotrace, + "iotrace utility commands", + "stats - display iotrace stats\n" + "iotrace buffer <address> <size> - set iotrace buffer\n" + "iotrace pause - pause tracing\n" + "iotrace resume - resume tracing" +); |