[U-Boot] [PATCH 3/5] zynq: Support CPU info display

Ezequiel Garcia ezequiel at vanguardiasur.com.ar
Wed Jan 17 13:56:24 UTC 2018


This commit adds CPU and silicon version information
consuming the SLCR IDCODE and DEVCFG MCTRL registers,
respectively.

Signed-off-by: Ariel D'Alessandro <ariel at vanguardiasur.com.ar>
Signed-off-by: Ezequiel Garcia <ezequiel at vanguardiasur.com.ar>
---
 arch/arm/mach-zynq/cpu.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/arch/arm/mach-zynq/cpu.c b/arch/arm/mach-zynq/cpu.c
index 53a07b0059c2..602f483c162b 100644
--- a/arch/arm/mach-zynq/cpu.c
+++ b/arch/arm/mach-zynq/cpu.c
@@ -35,6 +35,25 @@ static const struct {
 };
 #endif
 
+#ifdef CONFIG_DISPLAY_CPUINFO
+static const struct {
+	u8 idcode;
+	const char *cpuinfo;
+} zynq_cpu_info[] = {
+	{ .idcode = XILINX_ZYNQ_7007S,	.cpuinfo = XILINX_XC7Z007S_NAME },
+	{ .idcode = XILINX_ZYNQ_7010,	.cpuinfo = XILINX_XC7Z010_NAME },
+	{ .idcode = XILINX_ZYNQ_7012S,	.cpuinfo = XILINX_XC7Z012S_NAME },
+	{ .idcode = XILINX_ZYNQ_7014S,	.cpuinfo = XILINX_XC7Z014S_NAME },
+	{ .idcode = XILINX_ZYNQ_7015,	.cpuinfo = XILINX_XC7Z015_NAME },
+	{ .idcode = XILINX_ZYNQ_7020,	.cpuinfo = XILINX_XC7Z020_NAME },
+	{ .idcode = XILINX_ZYNQ_7030,	.cpuinfo = XILINX_XC7Z030_NAME },
+	{ .idcode = XILINX_ZYNQ_7035,	.cpuinfo = XILINX_XC7Z035_NAME },
+	{ .idcode = XILINX_ZYNQ_7045,	.cpuinfo = XILINX_XC7Z045_NAME },
+	{ .idcode = XILINX_ZYNQ_7100,	.cpuinfo = XILINX_XC7Z100_NAME },
+	{ /* Sentinel */ },
+};
+#endif
+
 int arch_cpu_init(void)
 {
 	zynq_slcr_unlock();
@@ -99,3 +118,30 @@ const xilinx_desc *zynq_fpga_desc(void)
 	return NULL;
 }
 #endif
+
+#ifdef CONFIG_DISPLAY_CPUINFO
+int print_cpuinfo(void)
+{
+	u32 idcode, version;
+	bool found;
+	u8 i;
+
+	idcode = zynq_slcr_get_idcode();
+	found = false;
+	for (i = 0; zynq_cpu_info[i].idcode; i++) {
+		if (zynq_cpu_info[i].idcode == idcode) {
+			found = true;
+			break;
+		}
+	}
+
+	version = zynq_get_silicon_version() << 1;
+	if (version > (PCW_SILICON_VERSION_3 << 1))
+		version += 1;
+	if (found) {
+		printf("CPU:   Zynq %s\n", zynq_cpu_info[i].cpuinfo);
+		printf("Silicon: v%d.%d\n", version >> 1, version & 1);
+	}
+	return 0;
+}
+#endif
-- 
2.15.1



More information about the U-Boot mailing list