提交 7f491d7b 编写于 作者: M Michal Simek

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: NMichal Simek <michal.simek@xilinx.com>
上级 275bd6d1
......@@ -47,5 +47,53 @@ config ZYNQMP_USB
config SYS_MALLOC_F_LEN
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
......@@ -48,6 +48,13 @@ u32 spl_boot_device(void)
u32 reg = 0;
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);
bootmode = reg & BOOT_MODES_MASK;
......
......@@ -70,6 +70,8 @@ struct iou_scntr_secure {
#define NAND_MODE 0x00000004
#define EMMC_MODE 0x00000006
#define JTAG_MODE 0x00000000
#define BOOT_MODE_USE_ALT 0x100
#define BOOT_MODE_ALT_SHIFT 12
#define ZYNQMP_IOU_SLCR_BASEADDR 0xFF180000
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册