Blame view
cmd/iotrace.c
1.57 KB
d41ce506b Initial Release, ... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
/* * 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 ", iotrace_get_enabled() ? "en" : "dis"); iotrace_get_buffer(&start, &size, &offset, &count); printf("Start: %08lx ", start); printf("Size: %08lx ", size); printf("Offset: %08lx ", offset); printf("Output: %08lx ", start + offset); printf("Count: %08lx ", count); printf("CRC32: %08lx ", (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 " "iotrace buffer <address> <size> - set iotrace buffer " "iotrace pause - pause tracing " "iotrace resume - resume tracing" ); |