From: Michal Simek Date: Mon, 21 Jul 2014 08:39:17 +0000 (+0200) Subject: zynqmp: Provide function for reading implementation platform X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6423b312e9195390d23f43e53a1deeb18743e9b0;p=thirdparty%2Fu-boot.git zynqmp: Provide function for reading implementation platform Add hooks for QEMU, ep108, etc platforms. Signed-off-by: Michal Simek --- diff --git a/arch/arm/cpu/armv8/zynqmp/Makefile b/arch/arm/cpu/armv8/zynqmp/Makefile index 2db71f1e25a..39568fc70aa 100644 --- a/arch/arm/cpu/armv8/zynqmp/Makefile +++ b/arch/arm/cpu/armv8/zynqmp/Makefile @@ -6,4 +6,5 @@ # obj-y += clk.o +obj-y += cpu.o obj-y += timer.o diff --git a/arch/arm/cpu/armv8/zynqmp/cpu.c b/arch/arm/cpu/armv8/zynqmp/cpu.c new file mode 100644 index 00000000000..a9082316d23 --- /dev/null +++ b/arch/arm/cpu/armv8/zynqmp/cpu.c @@ -0,0 +1,24 @@ +/* + * (C) Copyright 2014 Xilinx, Inc. + * Michal Simek + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include + +#define ZYNQ_SILICON_VER_MASK 0xF000 +#define ZYNQ_SILICON_VER_SHIFT 12 + +unsigned int zynqmp_get_silicon_version(void) +{ + unsigned int ver; + + ver = (readl(&csu_base->version) & ZYNQ_SILICON_VER_MASK) >> + ZYNQ_SILICON_VER_SHIFT; + + return ver; +} diff --git a/arch/arm/include/asm/arch-zynqmp/hardware.h b/arch/arm/include/asm/arch-zynqmp/hardware.h index f1c16a0092d..d51d1a236e2 100644 --- a/arch/arm/include/asm/arch-zynqmp/hardware.h +++ b/arch/arm/include/asm/arch-zynqmp/hardware.h @@ -39,4 +39,19 @@ struct crlapb_regs { #define SD_MODE 0x00000005 #define JTAG_MODE 0x00000000 +#define ZYNQMP_CSU_BASEADDR 0xFFCC0000 + +struct csu_regs { + u32 reserved0[24]; + u32 version; /* 0x60 will be moved to 0x24 */ +}; + +#define csu_base ((struct csu_regs *)ZYNQMP_CSU_BASEADDR) + +/* Board version value */ +#define ZYNQMP_CSU_VERSION_SILICON 0x0 +#define ZYNQMP_CSU_VERSION_EP108 0x1 +#define ZYNQMP_CSU_VERSION_VELOCE 0x2 +#define ZYNQMP_CSU_VERSION_QEMU 0x3 + #endif /* _ASM_ARCH_HARDWARE_H */ diff --git a/arch/arm/include/asm/arch-zynqmp/sys_proto.h b/arch/arm/include/asm/arch-zynqmp/sys_proto.h index 11fbca459d4..5b6305546e5 100644 --- a/arch/arm/include/asm/arch-zynqmp/sys_proto.h +++ b/arch/arm/include/asm/arch-zynqmp/sys_proto.h @@ -15,4 +15,6 @@ static inline void zynq_slcr_gem_clk_setup(u32 gem_id, unsigned long clk_rate) extern int zynq_sdhci_init(u32 regbase); +extern unsigned int zynqmp_get_silicon_version(void); + #endif /* _ASM_ARCH_SYS_PROTO_H */