summaryrefslogtreecommitdiffstats
path: root/arch/arm/cpu/cpuinfo.c
diff options
context:
space:
mode:
authorJan Luebbe <jlu@pengutronix.de>2013-07-14 15:45:03 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2013-08-27 07:12:33 +0200
commit34e4910b7a27a4c763d846a7e27366ef435fe420 (patch)
treee8360550c22bb754ca58ebb6abad23da6febda71 /arch/arm/cpu/cpuinfo.c
parenta0b68873ecb90bd42862b67410011262e893253e (diff)
downloadbarebox-34e4910b7a27a4c763d846a7e27366ef435fe420.tar.gz
barebox-34e4910b7a27a4c763d846a7e27366ef435fe420.tar.xz
ARM: cpuinfo: display the core name and version
Signed-off-by: Jan Luebbe <jlu@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/cpu/cpuinfo.c')
-rw-r--r--arch/arm/cpu/cpuinfo.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/arch/arm/cpu/cpuinfo.c b/arch/arm/cpu/cpuinfo.c
index 8aea4b472d..260d47b02a 100644
--- a/arch/arm/cpu/cpuinfo.c
+++ b/arch/arm/cpu/cpuinfo.c
@@ -31,6 +31,12 @@
#define CPU_ARCH_ARMv6 8
#define CPU_ARCH_ARMv7 9
+#define ARM_CPU_PART_CORTEX_A5 0xC050
+#define ARM_CPU_PART_CORTEX_A7 0xC070
+#define ARM_CPU_PART_CORTEX_A8 0xC080
+#define ARM_CPU_PART_CORTEX_A9 0xC090
+#define ARM_CPU_PART_CORTEX_A15 0xC0F0
+
static void decode_cache(unsigned long size)
{
int linelen = 1 << ((size & 0x3) + 3);
@@ -154,6 +160,33 @@ static int do_cpuinfo(int argc, char *argv[])
printf("implementer: %s\narchitecture: %s\n",
implementer, architecture);
+ if (cpu_arch == CPU_ARCH_ARMv7) {
+ unsigned int major, minor;
+ char *part;
+ major = (mainid >> 20) & 0xf;
+ minor = mainid & 0xf;
+ switch (mainid & 0xfff0) {
+ case ARM_CPU_PART_CORTEX_A5:
+ part = "Cortex-A5";
+ break;
+ case ARM_CPU_PART_CORTEX_A7:
+ part = "Cortex-A7";
+ break;
+ case ARM_CPU_PART_CORTEX_A8:
+ part = "Cortex-A8";
+ break;
+ case ARM_CPU_PART_CORTEX_A9:
+ part = "Cortex-A9";
+ break;
+ case ARM_CPU_PART_CORTEX_A15:
+ part = "Cortex-A15";
+ break;
+ default:
+ part = "unknown";
+ }
+ printf("core: %s r%up%u\n", part, major, minor);
+ }
+
if (cache & (1 << 24)) {
/* separate I/D cache */
printf("I-cache: ");