u-boot/arch/arm/mach-zynqmp/Kconfig
Michal Simek de79ca9512 arm64: zynqmp: Add board_boot_order for MMC boot extension
In past SPL_ZYNQMP_TWO_SDHCI symbol was introduced to handle boards with
two sdhci controllers. The problem was that U-Boot is registering
controllers based on aliases in DT but bootmode targets specific controller
ID. That's why on boards with one "second" sdhci controller bootmode was
pointing to second controller(MMC2) but alias was setup to mmc0 (the first
controller). And SPL requires to point to mmc0 in this case.

Long time ago commit f101e4bd37
("spl: add support for alternative boot device") added support for handling
multiple bootmodes in SPL. Use this functionality and setup second sdhci
controller as backup boot device.

Below is table with behavior:
HW/bootmode  bootorder
sd0/sd0      mmc0/mmc1 (mmc1 never called)
sd1/sd1      mmc1/mmc0 (mmc0 fails and mmc1 is called)
sd0+sd1/sd0  mmc0/mmc1 (mmc1 never called)
sd0+sd1/sd1  mmc1/mmc0 (mmc0 never called)

All other bootmodes are not affected but order can be extended to cover
advance boot flows.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
2020-01-14 09:05:53 +01:00

175 lines
3.8 KiB
Plaintext

if ARCH_ZYNQMP
config SPL_FS_FAT
default y
config SPL_LIBCOMMON_SUPPORT
default y
config SPL_LIBDISK_SUPPORT
default y
config SPL_LIBGENERIC_SUPPORT
default y
config SPL_MMC_SUPPORT
default y if MMC_SDHCI_ZYNQ
config SPL_SERIAL_SUPPORT
default y
config SPL_SPI_FLASH_SUPPORT
default y if ZYNQ_QSPI
config SPL_SPI_SUPPORT
default y if ZYNQ_QSPI
config SYS_BOARD
default "zynqmp"
config SYS_VENDOR
string "Vendor name"
default "xilinx"
config SYS_SOC
default "zynqmp"
config SYS_CONFIG_NAME
string "Board configuration name"
default "xilinx_zynqmp"
help
This option contains information about board configuration name.
Based on this option include/configs/<CONFIG_SYS_CONFIG_NAME>.h header
will be used for board configuration.
config SYS_MEM_RSVD_FOR_MMU
bool "Reserve memory for MMU Table"
help
If defined this option is used to setup different space for
MMU table than the one which will be allocated during
relocation.
config BOOT_INIT_FILE
string "boot.bin init register filename"
depends on SPL
default ""
help
Add register writes to boot.bin format (max 256 pairs).
Expect a table of register-value pairs, e.g. "0x12345678 0x4321"
config PMUFW_INIT_FILE
string "PMU firmware"
depends on SPL
default ""
help
Include external PMUFW (Platform Management Unit FirmWare) to
a Xilinx bootable image (boot.bin).
config ZYNQMP_SPL_PM_CFG_OBJ_FILE
string "PMU firmware configuration object to load at runtime by SPL"
depends on SPL
help
Path to a binary PMU firmware configuration object to be linked
into U-Boot SPL and loaded at runtime into the PMU firmware.
The ZynqMP Power Management Unit (PMU) needs a configuration
object for most SoC peripherals to work. To have it loaded by
U-Boot SPL set here the file name (absolute path or relative to
the top source tree) of your configuration, which must be a
binary blob. It will be linked in the SPL binary and loaded
into the PMU firmware by U-Boot SPL during board
initialization.
Leave this option empty if your PMU firmware has a hard-coded
configuration object or you are loading it by any other means.
config ZYNQMP_USB
bool "Configure ZynqMP USB"
config ZYNQMP_NO_DDR
bool "Disable DDR MMU mapping"
help
This option configures MMU with no DDR to avoid speculative
access to DDR memory where DDR is not present.
config SYS_MALLOC_F_LEN
default 0x600
config DEFINE_TCM_OCM_MMAP
bool "Define TCM and OCM memory in MMU Table"
default y if MP
help
This option if enabled defines the TCM and OCM memory and its
memory attributes in MMU table entry.
config ZYNQMP_PSU_INIT_ENABLED
bool "Include psu_init"
help
Include psu_init to full u-boot. SPL include psu_init by default.
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 ZYNQ_SDHCI_MAX_FREQ
default 200000000
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
default 0xa if SW_USBHOST_MODE
default 0xb if SW_SATA_MODE
default 0xe if SD1_LSHFT_MODE
choice
prompt "Boot mode"
depends on SPL_ZYNQMP_ALT_BOOTMODE_ENABLED
default JTAG_MODE
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"
config SW_USBHOST_MODE
bool "SW USBHOST_MODE"
config SW_SATA_MODE
bool "SW SATA_MODE"
config SD1_LSHFT_MODE
bool "SD1_LSHFT_MODE"
endchoice
endif