arm: k3: Add support for printing CPUINFO
authorLokesh Vutla <lokeshvutla@ti.com>
Fri, 27 Sep 2019 08:02:11 +0000 (13:32 +0530)
committerTom Rini <trini@konsulko.com>
Fri, 11 Oct 2019 17:31:18 +0000 (13:31 -0400)
Add support for printing CPU info for all K3 devices.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
arch/arm/mach-k3/common.c
arch/arm/mach-k3/common.h
arch/arm/mach-k3/include/mach/hardware.h

index 6c453b9af43fc62caf5cc5edf8f5047da14444bf..97aa15d6a68e5955b7696b43bc445739cfc0cad0 100644 (file)
@@ -14,6 +14,8 @@
 #include <linux/soc/ti/ti_sci_protocol.h>
 #include <fdt_support.h>
 #include <asm/arch/sys_proto.h>
+#include <asm/hardware.h>
+#include <asm/io.h>
 
 struct ti_sci_handle *get_ti_sci_handle(void)
 {
@@ -190,3 +192,43 @@ void reset_cpu(ulong ignored)
 {
 }
 #endif
+
+#if defined(CONFIG_DISPLAY_CPUINFO)
+int print_cpuinfo(void)
+{
+       u32 soc, rev;
+       char *name;
+
+       soc = (readl(CTRLMMR_WKUP_JTAG_DEVICE_ID) &
+               DEVICE_ID_FAMILY_MASK) >> DEVICE_ID_FAMILY_SHIFT;
+       rev = (readl(CTRLMMR_WKUP_JTAG_ID) &
+               JTAG_ID_VARIANT_MASK) >> JTAG_ID_VARIANT_SHIFT;
+
+       printf("SoC:   ");
+       switch (soc) {
+       case AM654:
+               name = "AM654";
+               break;
+       case J721E:
+               name = "J721E";
+               break;
+       default:
+               name = "Unknown Silicon";
+       };
+
+       printf("%s PG ", name);
+       switch (rev) {
+       case REV_PG1_0:
+               name = "1.0";
+               break;
+       case REV_PG2_0:
+               name = "2.0";
+               break;
+       default:
+               name = "Unknown Revision";
+       };
+       printf("%s\n", name);
+
+       return 0;
+}
+#endif
index ab68e14de8bef6b4ff9b2a482af75751787f3a21..8f9a023921b0d6079f6171e19d69ffcdc4089409 100644 (file)
@@ -8,5 +8,11 @@
 
 #include <asm/armv7_mpu.h>
 
+#define AM654  2
+#define J721E  4
+
+#define REV_PG1_0      0
+#define REV_PG2_0      1
+
 void setup_k3_mpu_regions(void);
 int early_console_init(void);
index 4e629822aa1892057edc63ef593a8da3bafbff5e..d670d5a56eca4b2ce76ef0e1482bac3e625f0280 100644 (file)
 #ifdef CONFIG_SOC_K3_J721E
 #include "j721e_hardware.h"
 #endif
+
+/* Assuming these addresses and definitions stay common across K3 devices */
+#define CTRLMMR_WKUP_JTAG_DEVICE_ID    0x43000018
+#define DEVICE_ID_FAMILY_SHIFT 26
+#define DEVICE_ID_FAMILY_MASK  (0x3f << 26)
+#define DEVICE_ID_BASE_SHIFT   11
+#define DEVICE_ID_BASE_MASK    (0x1fff << 11)
+#define DEVICE_ID_SPEED_SHIFT  6
+#define DEVICE_ID_SPEED_MASK   (0x1f << 6)
+#define DEVICE_ID_TEMP_SHIFT   3
+#define DEVICE_ID_TEMP_MASK    (0x7 << 3)
+
+#define CTRLMMR_WKUP_JTAG_ID           0x43000014
+#define JTAG_ID_VARIANT_SHIFT  28
+#define JTAG_ID_VARIANT_MASK   (0xf << 28)
+#define JTAG_ID_PARTNO_SHIFT   12
+#define JTAG_ID_PARTNO_MASK    (0x7ff << 1)
+
 #endif /* _ASM_ARCH_HARDWARE_H_ */