Blame view
cmd/cpu.c
2.44 KB
83d290c56 SPDX: Convert all... |
1 |
// SPDX-License-Identifier: GPL-2.0+ |
8e2fac051 Add a 'cpu' comma... |
2 3 4 |
/* * Copyright (c) 2015 Google, Inc * Written by Simon Glass <sjg@chromium.org> |
320eca5cf cmd: cpu: refacto... |
5 |
* Copyright (c) 2017 Álvaro Fernández Rojas <noltari@gmail.com> |
8e2fac051 Add a 'cpu' comma... |
6 7 8 9 10 11 |
*/ #include <common.h> #include <command.h> #include <cpu.h> #include <dm.h> |
166c3984e dm: cpu: Fix unde... |
12 |
#include <errno.h> |
8e2fac051 Add a 'cpu' comma... |
13 14 15 16 |
static const char *cpu_feature_name[CPU_FEAT_COUNT] = { "L1 cache", "MMU", |
740d5d34b cpu: Add support ... |
17 |
"Microcode", |
22c2c1791 cmd: cpu: fix NUL... |
18 |
"Device ID", |
8e2fac051 Add a 'cpu' comma... |
19 20 21 22 23 |
}; static int print_cpu_list(bool detail) { struct udevice *dev; |
8e2fac051 Add a 'cpu' comma... |
24 |
char buf[100]; |
8e2fac051 Add a 'cpu' comma... |
25 |
|
320eca5cf cmd: cpu: refacto... |
26 27 28 |
for (uclass_first_device(UCLASS_CPU, &dev); dev; uclass_next_device(&dev)) { |
8e2fac051 Add a 'cpu' comma... |
29 30 |
struct cpu_platdata *plat = dev_get_parent_platdata(dev); struct cpu_info info; |
320eca5cf cmd: cpu: refacto... |
31 32 |
bool first = true; int ret, i; |
8e2fac051 Add a 'cpu' comma... |
33 34 35 36 37 38 39 40 41 42 43 |
ret = cpu_get_desc(dev, buf, sizeof(buf)); printf("%3d: %-10s %s ", dev->seq, dev->name, ret ? "<no description>" : buf); if (!detail) continue; ret = cpu_get_info(dev, &info); if (ret) { printf("\t(no detail available"); if (ret != -ENOSYS) |
320eca5cf cmd: cpu: refacto... |
44 |
printf(": err=%d", ret); |
8e2fac051 Add a 'cpu' comma... |
45 46 47 48 49 50 |
printf(") "); continue; } printf("\tID = %d, freq = ", plat->cpu_id); print_freq(info.cpu_freq, ""); |
8e2fac051 Add a 'cpu' comma... |
51 52 53 54 55 56 57 58 59 |
for (i = 0; i < CPU_FEAT_COUNT; i++) { if (info.features & (1 << i)) { printf("%s%s", first ? ": " : ", ", cpu_feature_name[i]); first = false; } } printf(" "); |
320eca5cf cmd: cpu: refacto... |
60 |
if (info.features & (1 << CPU_FEAT_UCODE)) |
740d5d34b cpu: Add support ... |
61 62 63 |
printf("\tMicrocode version %#x ", plat->ucode_version); |
740d5d34b cpu: Add support ... |
64 65 66 |
if (info.features & (1 << CPU_FEAT_DEVICE_ID)) printf("\tDevice ID %#lx ", plat->device_id); |
8e2fac051 Add a 'cpu' comma... |
67 68 69 70 |
} return 0; } |
320eca5cf cmd: cpu: refacto... |
71 72 |
static int do_cpu_list(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) |
8e2fac051 Add a 'cpu' comma... |
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
{ if (print_cpu_list(false)) return CMD_RET_FAILURE; return 0; } static int do_cpu_detail(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) { if (print_cpu_list(true)) return CMD_RET_FAILURE; return 0; } static cmd_tbl_t cmd_cpu_sub[] = { U_BOOT_CMD_MKENT(list, 2, 1, do_cpu_list, "", ""), U_BOOT_CMD_MKENT(detail, 4, 0, do_cpu_detail, "", ""), }; /* * Process a cpu sub-command */ static int do_cpu(cmd_tbl_t *cmdtp, int flag, int argc, |
320eca5cf cmd: cpu: refacto... |
98 |
char * const argv[]) |
8e2fac051 Add a 'cpu' comma... |
99 100 101 102 103 104 105 106 |
{ cmd_tbl_t *c = NULL; /* Strip off leading 'cpu' command argument */ argc--; argv++; if (argc) |
320eca5cf cmd: cpu: refacto... |
107 108 |
c = find_cmd_tbl(argv[0], cmd_cpu_sub, ARRAY_SIZE(cmd_cpu_sub)); |
8e2fac051 Add a 'cpu' comma... |
109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
if (c) return c->cmd(cmdtp, flag, argc, argv); else return CMD_RET_USAGE; } U_BOOT_CMD( cpu, 2, 1, do_cpu, "display information about CPUs", "list - list available CPUs " "cpu detail - show CPU detail" ); |