This commit adds CPU and silicon version information consuming the SLCR IDCODE and DEVCFG MCTRL registers, respectively.
Signed-off-by: Ariel D'Alessandro <[email protected]> Signed-off-by: Ezequiel Garcia <[email protected]> --- arch/arm/mach-zynq/Makefile | 1 + arch/arm/mach-zynq/cpu_info.c | 49 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 arch/arm/mach-zynq/cpu_info.c diff --git a/arch/arm/mach-zynq/Makefile b/arch/arm/mach-zynq/Makefile index e3f0117da563..31f1e0d5a8ad 100644 --- a/arch/arm/mach-zynq/Makefile +++ b/arch/arm/mach-zynq/Makefile @@ -14,5 +14,6 @@ obj-y += ddrc.o obj-y += slcr.o obj-y += clk.o obj-y += lowlevel_init.o +obj-$(CONFIG_DISPLAY_CPUINFO) += cpu_info.o AFLAGS_lowlevel_init.o := -mfpu=neon obj-$(CONFIG_SPL_BUILD) += spl.o ps7_spl_init.o diff --git a/arch/arm/mach-zynq/cpu_info.c b/arch/arm/mach-zynq/cpu_info.c new file mode 100644 index 000000000000..730ccccb73da --- /dev/null +++ b/arch/arm/mach-zynq/cpu_info.c @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2018 VanguardiaSur - www.vanguardiasur.com.ar + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <stdio.h> +#include <zynqpl.h> +#include <asm/arch/sys_proto.h> +#include <asm/arch/ps7_init_gpl.h> + +static const struct { + u8 idcode; + const char *cpuinfo; +} zynq_cpu_info[] = { + { .idcode = XILINX_ZYNQ_7007S, .cpuinfo = "7007S" }, + { .idcode = XILINX_ZYNQ_7010, .cpuinfo = "7010" }, + { .idcode = XILINX_ZYNQ_7012S, .cpuinfo = "7012S" }, + { .idcode = XILINX_ZYNQ_7014S, .cpuinfo = "7014S" }, + { .idcode = XILINX_ZYNQ_7015, .cpuinfo = "7015" }, + { .idcode = XILINX_ZYNQ_7020, .cpuinfo = "7020" }, + { .idcode = XILINX_ZYNQ_7030, .cpuinfo = "7030" }, + { .idcode = XILINX_ZYNQ_7035, .cpuinfo = "7035" }, + { .idcode = XILINX_ZYNQ_7045, .cpuinfo = "7045" }, + { .idcode = XILINX_ZYNQ_7100, .cpuinfo = "7100"}, + { /* Sentinel */ }, +}; + +int print_cpuinfo(void) +{ + u32 idcode, version; + u8 i; + + idcode = zynq_slcr_get_idcode(); + + for (i = 0; zynq_cpu_info[i].idcode; i++) { + if (zynq_cpu_info[i].idcode == idcode) { + printf("CPU: Zynq %s\n", zynq_cpu_info[i].cpuinfo); + break; + } + } + + version = zynq_get_silicon_version() << 1; + if (version > (PCW_SILICON_VERSION_3 << 1)) + version += 1; + printf("Silicon: v%d.%d\n", version >> 1, version & 1); + return 0; +} -- 2.15.1 _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

