]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
zynq: efuse: 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>
Fri, 29 Nov 2013 14:04:28 +0000 (15:04 +0100)
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 20bf71e2c74bbee294cabfb9c90dfdf81df0bb27..cd96862f2adb078b803ce2a38268796ce1085806 100644 (file)
@@ -10,6 +10,9 @@
 #include <asm/arch/hardware.h>
 #include <asm/arch/clk.h>
 
+#define ZYNQ_SILICON_VER_MASK  0xF0000000
+#define ZYNQ_SILICON_VER_SHIFT 28
+
 int arch_cpu_init(void)
 {
        zynq_slcr_unlock();
@@ -38,6 +41,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 d354d9643e2ddb34fd0dc6d2070a6e742a79d352..58bdcfcc9d3fb442e9012df350dde79675b407b3 100644 (file)
@@ -25,6 +25,7 @@
 #define ZYNQ_SMC_BASEADDR              0xE000E000
 #define ZYNQ_NAND_BASEADDR             0xE1000000
 #define ZYNQ_DDRC_BASEADDR             0xF8006000
+#define ZYNQ_EFUSE_BASEADDR            0xF800D000
 
 /* Reflect slcr offsets */
 struct slcr_regs {
@@ -127,4 +128,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 cff3c51e0a2504d21b0200dc013acdd9cdd27cf3..06aab71b571d8dea11b6ea86aeb57dbeb03bae02 100644 (file)
@@ -19,6 +19,7 @@ extern u32 zynq_slcr_get_boot_mode(void);
 extern u32 zynq_slcr_get_idcode(void);
 extern int zynq_slcr_get_mio_pin_status(const char *periph);
 extern void zynq_ddrc_init(void);
+extern unsigned int zynq_get_silicon_version(void);
 
 /* Driver extern functions */
 extern int zynq_sdhci_init(u32 regbase);