|
|
|
@ -15,6 +15,9 @@ static void do_print_stats(void) |
|
|
|
|
iotrace_get_buffer(&start, &size, &offset, &count); |
|
|
|
|
printf("Start: %08lx\n", start); |
|
|
|
|
printf("Size: %08lx\n", size); |
|
|
|
|
iotrace_get_region(&start, &size); |
|
|
|
|
printf("Region: %08lx\n", start); |
|
|
|
|
printf("Size: %08lx\n", size); |
|
|
|
|
printf("Offset: %08lx\n", offset); |
|
|
|
|
printf("Output: %08lx\n", start + offset); |
|
|
|
|
printf("Count: %08lx\n", count); |
|
|
|
@ -37,6 +40,22 @@ static int do_set_buffer(int argc, char * const argv[]) |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int do_set_region(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_region(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]; |
|
|
|
@ -46,6 +65,8 @@ int do_iotrace(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) |
|
|
|
|
switch (*cmd) { |
|
|
|
|
case 'b': |
|
|
|
|
return do_set_buffer(argc - 2, argv + 2); |
|
|
|
|
case 'l': |
|
|
|
|
return do_set_region(argc - 2, argv + 2); |
|
|
|
|
case 'p': |
|
|
|
|
iotrace_set_enabled(0); |
|
|
|
|
break; |
|
|
|
@ -67,6 +88,7 @@ U_BOOT_CMD( |
|
|
|
|
"iotrace utility commands", |
|
|
|
|
"stats - display iotrace stats\n" |
|
|
|
|
"iotrace buffer <address> <size> - set iotrace buffer\n" |
|
|
|
|
"iotrace limit <address> <size> - set iotrace region limit\n" |
|
|
|
|
"iotrace pause - pause tracing\n" |
|
|
|
|
"iotrace resume - resume tracing" |
|
|
|
|
); |
|
|
|
|