uboot: zynqmp: Support loading a PMU config
Before now, U-Boot SPL could only load the Platform Management Unit (PMU) by patching the board-specific pm_cfg_obj.c file into the generic PMU firmware, but that then requires generating a new PMU firmware for every board configuration. To fix that, Luca Ceresoli added support to U-Boot to load the pm_cfg_obj[1]. Like the PMU firmware, we need a way to pass the PMU cfg to U-Boot during build. U-Boot only accepts the binary format of the cfg, so we must convert the source file with the tool provided with U-Boot. [1] https://lucaceresoli.net/zynqmp-uboot-spl-pmufw-cfg-load/ Signed-off-by: Brandon Maier <brandon.maier@rockwellcollins.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
parent
408bc354a9
commit
16a522b5e0
@ -458,6 +458,28 @@ config BR2_TARGET_UBOOT_ZYNQMP_PMUFW
|
||||
|
||||
This feature requires U-Boot >= 2018.07.
|
||||
|
||||
config BR2_TARGET_UBOOT_ZYNQMP_PM_CFG
|
||||
string "PMU configuration location"
|
||||
depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
|
||||
help
|
||||
Location of a PMU configuration file.
|
||||
|
||||
If not empty, Buildroot will convert the PMU configuration
|
||||
file into a loadable blob and pass it to U-Boot. The blob gets
|
||||
embedded into the U-Boot SPL and is used to configure the PMU
|
||||
during board initialization.
|
||||
|
||||
Unlike the PMU firmware, the PMU configuration file is unique
|
||||
to each board configuration. A PMU configuration file can be
|
||||
generated by building your Xilinx SDK BSP. It can be found in
|
||||
the BSP source, for example at
|
||||
./psu_cortexa53_0/libsrc/xilpm_v2_4/src/pm_cfg_obj.c
|
||||
|
||||
Leave this option empty if your PMU firmware has a hard-coded
|
||||
configuration object or you are loading it by any other means.
|
||||
|
||||
This feature requires U-Boot >= v2019.10.
|
||||
|
||||
config BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE
|
||||
string "Custom psu_init_gpl file"
|
||||
depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
|
||||
|
@ -360,6 +360,22 @@ define UBOOT_ZYNQMP_KCONFIG_PMUFW
|
||||
$(call KCONFIG_SET_OPT,CONFIG_PMUFW_INIT_FILE,"$(UBOOT_ZYNQMP_PMUFW_PATH)")
|
||||
endef
|
||||
|
||||
UBOOT_ZYNQMP_PM_CFG = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PM_CFG))
|
||||
ifneq ($(UBOOT_ZYNQMP_PM_CFG),)
|
||||
UBOOT_ZYNQMP_PM_CFG_BIN = $(UBOOT_DIR)/pm_cfg_obj.bin
|
||||
define UBOOT_ZYNQMP_KCONFIG_PM_CFG
|
||||
$(call KCONFIG_SET_OPT,CONFIG_ZYNQMP_SPL_PM_CFG_OBJ_FILE,"$(UBOOT_ZYNQMP_PM_CFG_BIN)", \
|
||||
$(@D)/.config)
|
||||
endef
|
||||
|
||||
define UBOOT_ZYNQMP_PM_CFG_CONVERT
|
||||
$(UBOOT_DIR)/tools/zynqmp_pm_cfg_obj_convert.py \
|
||||
"$(UBOOT_ZYNQMP_PM_CFG)" \
|
||||
"$(UBOOT_ZYNQMP_PM_CFG_BIN)"
|
||||
endef
|
||||
UBOOT_PRE_BUILD_HOOKS += UBOOT_ZYNQMP_PM_CFG_CONVERT
|
||||
endif
|
||||
|
||||
UBOOT_ZYNQMP_PSU_INIT = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE))
|
||||
UBOOT_ZYNQMP_PSU_INIT_PATH = $(shell readlink -f $(UBOOT_ZYNQMP_PSU_INIT))
|
||||
|
||||
@ -422,6 +438,7 @@ endif
|
||||
|
||||
define UBOOT_KCONFIG_FIXUP_CMDS
|
||||
$(UBOOT_ZYNQMP_KCONFIG_PMUFW)
|
||||
$(UBOOT_ZYNQMP_KCONFIG_PM_CFG)
|
||||
$(UBOOT_ZYNQMP_KCONFIG_PSU_INIT)
|
||||
endef
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user