mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-12 06:12:58 +00:00
c28a9cfa40
Optionally allow U-Boot to load a configuration object into the Power Management Unit (PMU) firmware on Xilinx ZynqMP. The configuration object is required by the PMU FW to enable most SoC peripherals. So far the only way to boot using U-Boot SPL was to hard-code the configuration object in the PMU firmware. Allow a different boot process, where the PMU FW is equal for any ZynqMP chip and its configuration is passed at runtime by U-Boot SPL. All the code for Inter-processor communication with the PMU is isolated in a new file (pmu_ipc.c). The code is inspired by the same feature as implemented in the Xilinx First Stage Bootloader (FSBL) and Arm Trusted Firmware: *fb647e6b4c/lib/sw_apps/zynqmp_fsbl/src/xfsbl_misc_drivers.c (L295)
*c48d02bade/plat/xilinx/zynqmp/pm_service/pm_api_sys.c (L357)
SPL logs on the console before loading the configuration object: U-Boot SPL 2019.07-rc1-00511-gaec224515c87 (May 15 2019 - 08:43:41 +0200) Loading PMUFW cfg obj (2008 bytes) EL Level: EL3 ... Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
185 lines
4.3 KiB
Text
185 lines
4.3 KiB
Text
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_TWO_SDHCI
|
|
bool "Enable booting from both SDHCIs"
|
|
depends on SPL
|
|
help
|
|
This option reflects that board has two SDHCI controllers which
|
|
platform can use as boot device. This option ensures that SPL will
|
|
setup BOOT_DEVICE_MMC2 for SDHCI1 controller and BOOT_DEVICE_MMC1 for
|
|
SDHCI0 controller. Platforms which have only one SDHCI controller
|
|
shouldn't enable this option because it for software SDHCI0 or SDHCI1
|
|
are both covered by BOOT_DEVICE_MMC1.
|
|
|
|
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
|