ARM64: zynqmp: Force certain bootmode for SPL
ZynqMP provides an option to overwrite bootmode setting which can change SPL behavior. For example: boot SPL via JTAG and then SPL loads images from SD. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
275bd6d11f
commit
7f491d7b30
|
|
@ -47,5 +47,53 @@ config ZYNQMP_USB
|
||||||
config SYS_MALLOC_F_LEN
|
config SYS_MALLOC_F_LEN
|
||||||
default 0x600
|
default 0x600
|
||||||
|
|
||||||
|
config SPL_ZYNQMP_ALT_BOOTMODE_ENABLED
|
||||||
|
bool "Overwrite SPL bootmode"
|
||||||
|
depends on SPL
|
||||||
|
help
|
||||||
|
Overwrite bootmode selected via boot mode pins to tell SPL what should
|
||||||
|
be the next boot device.
|
||||||
|
|
||||||
|
config SPL_ZYNQMP_ALT_BOOTMODE
|
||||||
|
hex
|
||||||
|
default 0x0 if JTAG_MODE
|
||||||
|
default 0x1 if QSPI_MODE_24BIT
|
||||||
|
default 0x2 if QSPI_MODE_32BIT
|
||||||
|
default 0x3 if SD_MODE
|
||||||
|
default 0x4 if NAND_MODE
|
||||||
|
default 0x5 if SD_MODE1
|
||||||
|
default 0x6 if EMMC_MODE
|
||||||
|
default 0x7 if USB_MODE
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "Boot mode"
|
||||||
|
depends on ZYNQMP_ALT_BOOTMODE_ENABLED
|
||||||
|
default JTAG
|
||||||
|
|
||||||
|
config JTAG_MODE
|
||||||
|
bool "JTAG_MODE"
|
||||||
|
|
||||||
|
config QSPI_MODE_24BIT
|
||||||
|
bool "QSPI_MODE_24BIT"
|
||||||
|
|
||||||
|
config QSPI_MODE_32BIT
|
||||||
|
bool "QSPI_MODE_32BIT"
|
||||||
|
|
||||||
|
config SD_MODE
|
||||||
|
bool "SD_MODE"
|
||||||
|
|
||||||
|
config SD_MODE1
|
||||||
|
bool "SD_MODE1"
|
||||||
|
|
||||||
|
config NAND_MODE
|
||||||
|
bool "NAND_MODE"
|
||||||
|
|
||||||
|
config EMMC_MODE
|
||||||
|
bool "EMMC_MODE"
|
||||||
|
|
||||||
|
config USB_MODE
|
||||||
|
bool "USB"
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,13 @@ u32 spl_boot_device(void)
|
||||||
u32 reg = 0;
|
u32 reg = 0;
|
||||||
u8 bootmode;
|
u8 bootmode;
|
||||||
|
|
||||||
|
#if defined(CONFIG_SPL_ZYNQMP_ALT_BOOTMODE_ENABLED)
|
||||||
|
/* Change default boot mode at run-time */
|
||||||
|
writel(BOOT_MODE_USE_ALT |
|
||||||
|
CONFIG_SPL_ZYNQMP_ALT_BOOTMODE << BOOT_MODE_ALT_SHIFT,
|
||||||
|
&crlapb_base->boot_mode);
|
||||||
|
#endif
|
||||||
|
|
||||||
reg = readl(&crlapb_base->boot_mode);
|
reg = readl(&crlapb_base->boot_mode);
|
||||||
bootmode = reg & BOOT_MODES_MASK;
|
bootmode = reg & BOOT_MODES_MASK;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,8 @@ struct iou_scntr_secure {
|
||||||
#define NAND_MODE 0x00000004
|
#define NAND_MODE 0x00000004
|
||||||
#define EMMC_MODE 0x00000006
|
#define EMMC_MODE 0x00000006
|
||||||
#define JTAG_MODE 0x00000000
|
#define JTAG_MODE 0x00000000
|
||||||
|
#define BOOT_MODE_USE_ALT 0x100
|
||||||
|
#define BOOT_MODE_ALT_SHIFT 12
|
||||||
|
|
||||||
#define ZYNQMP_IOU_SLCR_BASEADDR 0xFF180000
|
#define ZYNQMP_IOU_SLCR_BASEADDR 0xFF180000
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue