zynqmp: Introduce zynqmp_get_bootmode
authorSoren Brinkmann <soren.brinkmann@xilinx.com>
Mon, 18 Apr 2016 18:49:42 +0000 (11:49 -0700)
committerSoren Brinkmann <soren.brinkmann@xilinx.com>
Mon, 25 Apr 2016 16:49:59 +0000 (09:49 -0700)
Provide a function to retrieve the bootmode.

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Acked-by: Michal Simek <michal.simek@xilinx.com>
plat/xilinx/zynqmp/aarch64/zynqmp_common.c
plat/xilinx/zynqmp/zynqmp_def.h
plat/xilinx/zynqmp/zynqmp_private.h

index 87e47a5f9f34e17d10691d9194b986d3d231f7a5..21d62570f31729cbf9595ef56cdb001062e57a22 100644 (file)
@@ -271,6 +271,13 @@ int zynqmp_is_pmu_up(void)
        return zynqmp_pmufw_present;
 }
 
+unsigned int zynqmp_get_bootmode(void)
+{
+       uint32_t r = mmio_read_32(CRL_APB_BOOT_MODE_USER);
+
+       return r & CRL_APB_BOOT_MODE_MASK;
+}
+
 void zynqmp_config_setup(void)
 {
        zynqmp_discover_pmufw();
index 504517dbf367c3c912397e4b5131eead427f0401..9496ec4999f6578290549069a571408e765f6f12 100644 (file)
@@ -63,6 +63,7 @@
 #define CRL_APB_BASE                   0xFF5E0000
 #define CRL_APB_RPLL_CTRL              (CRL_APB_BASE + 0x30)
 #define CRL_APB_TIMESTAMP_REF_CTRL     (CRL_APB_BASE + 0x128)
+#define CRL_APB_BOOT_MODE_USER         (CRL_APB_BASE + 0x200)
 #define CRL_APB_RESET_CTRL             (CRL_APB_BASE + 0x218)
 
 #define CRL_APB_TIMESTAMP_REF_CTRL_CLKACT_BIT  (1 << 24)
@@ -71,6 +72,9 @@
 
 #define CRL_APB_RESET_CTRL_SOFT_RESET  (1 << 4)
 
+#define CRL_APB_BOOT_MODE_MASK         (0xf << 0)
+#define ZYNQMP_BOOTMODE_JTAG           0
+
 /* system counter registers and bitfields */
 #define IOU_SCNTRS_BASE                        0xFF260000
 #define IOU_SCNTRS_CONTROL             (IOU_SCNTRS_BASE + 0)
index 1f5be39ba47daf03db56ab30675ecb05c02cc48d..228d8dce46a797b4623733e60e5b5a6fc0ebe065 100644 (file)
@@ -38,5 +38,6 @@ void zynqmp_config_setup(void);
 /* ZynqMP specific functions */
 unsigned int zynqmp_get_uart_clk(void);
 int zynqmp_is_pmu_up(void);
+unsigned int zynqmp_get_bootmode(void);
 
 #endif /* __ZYNQMP_PRIVATE_H__ */