uboot/cmd/iotrace.c
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2014 Google, Inc
   3 *
   4 * SPDX-License-Identifier:     GPL-2.0+
   5 */
   6
   7#include <common.h>
   8#include <command.h>
   9#include <iotrace.h>
  10
  11static void do_print_stats(void)
  12{
  13        ulong start, size, offset, count;
  14
  15        printf("iotrace is %sabled\n", iotrace_get_enabled() ? "en" : "dis");
  16        iotrace_get_buffer(&start, &size, &offset, &count);
  17        printf("Start:  %08lx\n", start);
  18        printf("Size:   %08lx\n", size);
  19        printf("Offset: %08lx\n", offset);
  20        printf("Output: %08lx\n", start + offset);
  21        printf("Count:  %08lx\n", count);
  22        printf("CRC32:  %08lx\n", (ulong)iotrace_get_checksum());
  23}
  24
  25static int do_set_buffer(int argc, char * const argv[])
  26{
  27        ulong addr = 0, size = 0;
  28
  29        if (argc == 2) {
  30                addr = simple_strtoul(*argv++, NULL, 16);
  31                size = simple_strtoul(*argv++, NULL, 16);
  32        } else if (argc != 0) {
  33                return CMD_RET_USAGE;
  34        }
  35
  36        iotrace_set_buffer(addr, size);
  37
  38        return 0;
  39}
  40
  41int do_iotrace(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  42{
  43        const char *cmd = argc < 2 ? NULL : argv[1];
  44
  45        if (!cmd)
  46                return cmd_usage(cmdtp);
  47        switch (*cmd) {
  48        case 'b':
  49                return do_set_buffer(argc - 2, argv + 2);
  50        case 'p':
  51                iotrace_set_enabled(0);
  52                break;
  53        case 'r':
  54                iotrace_set_enabled(1);
  55                break;
  56        case 's':
  57                do_print_stats();
  58                break;
  59        default:
  60                return CMD_RET_USAGE;
  61        }
  62
  63        return 0;
  64}
  65
  66U_BOOT_CMD(
  67        iotrace,        4,      1,      do_iotrace,
  68        "iotrace utility commands",
  69        "stats                        - display iotrace stats\n"
  70        "iotrace buffer <address> <size>      - set iotrace buffer\n"
  71        "iotrace pause                        - pause tracing\n"
  72        "iotrace resume                       - resume tracing"
  73);
  74