ARM: zynq: Added efuse status register base address
authorSiva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
Fri, 29 Nov 2013 13:31:25 +0000 (19:01 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Wed, 14 May 2014 05:43:34 +0000 (07:43 +0200)
Added efuse status register base address. This register
is used for determining whether efuse was blown or not.
Also, added the zynq_get_silicon_version() to get the
silicon version of the zynq board.

Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/arm/cpu/armv7/zynq/cpu.c
arch/arm/include/asm/arch-zynq/hardware.h
arch/arm/include/asm/arch-zynq/sys_proto.h

index 7626b5c1a3b5e85a18e8560b438cf67ad1ce75b6..816d0c5da7a5c69104c5458939bf799256e04229 100644 (file)
@@ -14,6 +14,9 @@ void lowlevel_init(void)
 {
 }
 
+#define ZYNQ_SILICON_VER_MASK  0xF0000000
+#define ZYNQ_SILICON_VER_SHIFT 28
+
 int arch_cpu_init(void)
 {
        zynq_slcr_unlock();
@@ -42,6 +45,16 @@ int arch_cpu_init(void)
        return 0;
 }
 
+unsigned int zynq_get_silicon_version(void)
+{
+       unsigned int ver;
+
+       ver = (readl(&devcfg_base->mctrl) &
+              ZYNQ_SILICON_VER_MASK) >> ZYNQ_SILICON_VER_SHIFT;
+
+       return ver;
+}
+
 void reset_cpu(ulong addr)
 {
        zynq_slcr_cpu_reset();
index 39184da40ea02530bcced9d9223f961512b92537..20f62bfc753b678bce3144c0453e867e102e46fd 100644 (file)
@@ -22,6 +22,7 @@
 #define ZYNQ_SPI_BASEADDR0             0xE0006000
 #define ZYNQ_SPI_BASEADDR1             0xE0007000
 #define ZYNQ_DDRC_BASEADDR             0xF8006000
+#define ZYNQ_EFUSE_BASEADDR            0xF800D000
 
 /* Bootmode setting values */
 #define ZYNQ_BM_MASK           0xF
@@ -130,4 +131,12 @@ struct ddrc_regs {
 };
 #define ddrc_base ((struct ddrc_regs *)ZYNQ_DDRC_BASEADDR)
 
+struct efuse_reg {
+       u32 reserved1[4];
+       u32 status;
+       u32 reserved2[3];
+};
+
+#define efuse_base ((struct efuse_reg *)ZYNQ_EFUSE_BASEADDR)
+
 #endif /* _ASM_ARCH_HARDWARE_H */
index a68e1b3d231878d6a7d5129003ec4f688137b1ca..2445a045cefdbf3f3c87fa961e83a9c90b632b16 100644 (file)
@@ -16,6 +16,7 @@ extern void zynq_slcr_devcfg_enable(void);
 extern u32 zynq_slcr_get_boot_mode(void);
 extern u32 zynq_slcr_get_idcode(void);
 extern void zynq_ddrc_init(void);
+extern unsigned int zynq_get_silicon_version(void);
 
 /* Driver extern functions */
 extern int zynq_sdhci_init(u32 regbase);