arm64: zynqmp: Print multiboot register value in EL3
authorMichal Simek <michal.simek@xilinx.com>
Tue, 11 Feb 2020 11:43:14 +0000 (12:43 +0100)
committerMichal Simek <michal.simek@xilinx.com>
Mon, 6 Apr 2020 10:51:30 +0000 (12:51 +0200)
Multi boot register can be used for using different boot images and design
better boot strategy. Let EL3 SPL or U-Boot to read it and print it.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/arm/mach-zynqmp/include/mach/hardware.h
board/xilinx/zynqmp/zynqmp.c

index fd361c5ce8a58d3dd7548a0a2b86a34f38205590..a0acfa2ff1ed96ea85f7fa11bfecf4e9e36a8778 100644 (file)
@@ -128,7 +128,9 @@ struct apu_regs {
 #define ZYNQMP_SILICON_VER_SHIFT       12
 
 struct csu_regs {
-       u32 reserved0[17];
+       u32 reserved0[4];
+       u32 multi_boot;
+       u32 reserved1[12];
        u32 version;
 };
 
index 8bdc67748ec2c55635859fc9cfefb81715d2851c..ba1a126fbf887b6b45a01190e6f87b49c33bc83b 100644 (file)
@@ -328,6 +328,17 @@ int board_early_init_f(void)
        return ret;
 }
 
+static int multi_boot(void)
+{
+       u32 multiboot;
+
+       multiboot = readl(&csu_base->multi_boot);
+
+       printf("Multiboot:\t%x\n", multiboot);
+
+       return 0;
+}
+
 int board_init(void)
 {
        struct udevice *dev;
@@ -356,6 +367,9 @@ int board_init(void)
        }
 #endif
 
+       if (current_el() == 3)
+               multi_boot();
+
        return 0;
 }