diff options
author | Simon Glass | 2016-03-06 19:27:49 -0700 |
---|---|---|
committer | Bin Meng | 2016-03-17 10:27:22 +0800 |
commit | 740d5d34b12f49b5e6c48e06dd8f519d9563a7e3 (patch) | |
tree | a303a6b6ecd24167d18784f59221a91ab274a138 | |
parent | e23c6c28b01785547e0356667ab435ef904af531 (diff) |
cpu: Add support for microcode version and CPU ID
Some CPUs use microcode and each core can have a different version of
microcode loaded. Also some CPUs support the concept of an integer ID used
for identification purposes. Add support for these in the CPU uclass.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
-rw-r--r-- | cmd/cpu.c | 7 | ||||
-rw-r--r-- | include/cpu.h | 5 |
2 files changed, 12 insertions, 0 deletions
diff --git a/cmd/cpu.c b/cmd/cpu.c index b4af64f54f9..bc4dc5c529b 100644 --- a/cmd/cpu.c +++ b/cmd/cpu.c @@ -14,6 +14,7 @@ static const char *cpu_feature_name[CPU_FEAT_COUNT] = { "L1 cache", "MMU", + "Microcode", }; static int print_cpu_list(bool detail) @@ -58,6 +59,12 @@ static int print_cpu_list(bool detail) } } printf("\n"); + if (info.features & (1 << CPU_FEAT_UCODE)) { + printf("\tMicrocode version %#x\n", + plat->ucode_version); + } + if (info.features & (1 << CPU_FEAT_DEVICE_ID)) + printf("\tDevice ID %#lx\n", plat->device_id); } return 0; diff --git a/include/cpu.h b/include/cpu.h index bfb0db2e2c6..bda53150a6f 100644 --- a/include/cpu.h +++ b/include/cpu.h @@ -15,15 +15,20 @@ * device. * * @cpu_id: Platform-specific way of identifying the CPU. + * @ucode_version: Microcode version, if CPU_FEAT_UCODE is set */ struct cpu_platdata { int cpu_id; + int ucode_version; + ulong device_id; }; /* CPU features - mostly just a placeholder for now */ enum { CPU_FEAT_L1_CACHE = 0, /* Supports level 1 cache */ CPU_FEAT_MMU = 1, /* Supports virtual memory */ + CPU_FEAT_UCODE = 2, /* Requires/uses microcode */ + CPU_FEAT_DEVICE_ID = 3, /* Provides a device ID */ CPU_FEAT_COUNT, }; |