]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
zynqmp: Provide function for reading implementation platform
authorMichal Simek <michal.simek@xilinx.com>
Mon, 21 Jul 2014 08:39:17 +0000 (10:39 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Tue, 22 Jul 2014 07:36:42 +0000 (09:36 +0200)
Add hooks for QEMU, ep108, etc platforms.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/arm/cpu/armv8/zynqmp/Makefile
arch/arm/cpu/armv8/zynqmp/cpu.c [new file with mode: 0644]
arch/arm/include/asm/arch-zynqmp/hardware.h
arch/arm/include/asm/arch-zynqmp/sys_proto.h

index 2db71f1e25a9aaeaeb731ba5a0a89aab7c1edcfa..39568fc70aa906ed486d5091674be849ddb01fcf 100644 (file)
@@ -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 (file)
index 0000000..a908231
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * (C) Copyright 2014 Xilinx, Inc.
+ * Michal Simek <michal.simek@xilinx.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/io.h>
+
+#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;
+}
index f1c16a0092d03c348e29f782678bf569f7486f0b..d51d1a236e23547eedb844c0b49e69158b5bef20 100644 (file)
@@ -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 */
index 11fbca459d45b1d96e51f5896d17d4a4ddcb26d7..5b6305546e59191dbd2a53671abf3d02dc032ace 100644 (file)
@@ -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 */