[PATCH] arm64: zynqmp: Support converting pm_cfg_obj.c

Brandon Maier brandon.maier at rockwellcollins.com
Mon Jun 22 22:45:31 CEST 2020


To use CONFIG_ZYNQMP_SPL_PM_CFG_OBJ_FILE, a developer must pull down the
U-Boot source and run ./tools/zynqmp_pm_cfg_obj_convert.py to convert
their pm_cfg_obj.c into U-Boot's PMU loader format, then feed that file
back to U-Boot during build.

Instead, by doing the conversion in U-Boot during the build, we can
simplify the developer's build system. And it ensures that if
zynqmp_pm_cfg_obj_convert.py is updated, the pm_cfg_obj will stay in
sync with U-Boot.

Add a config to set the file format, but leave the default as binary
type for backwards compatibility.

Signed-off-by: Brandon Maier <brandon.maier at rockwellcollins.com>
---

 arch/arm/mach-zynqmp/Kconfig     | 20 ++++++++++++++++++++
 board/xilinx/zynqmp/Makefile     | 10 +++++++++-
 board/xilinx/zynqmp/pm_cfg_obj.S |  2 +-
 3 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-zynqmp/Kconfig b/arch/arm/mach-zynqmp/Kconfig
index d82a737a69..d9116870ee 100644
--- a/arch/arm/mach-zynqmp/Kconfig
+++ b/arch/arm/mach-zynqmp/Kconfig
@@ -65,6 +65,26 @@ config PMUFW_INIT_FILE
 	  Include external PMUFW (Platform Management Unit FirmWare) to
 	  a Xilinx bootable image (boot.bin).
 
+choice
+	prompt "PMU firmware configuration format"
+	default ZYNQMP_SPL_PM_CFG_BIN
+	help
+	  Format of the file given to ZYNQMP_SPL_PM_CFG_OBJ_FILE.
+
+config ZYNQMP_SPL_PM_CFG_BIN
+	bool "pm_cfg_obj.bin"
+	help
+	  The pm_cfg_obj.c after being preprocessed to a binary blob.
+
+config ZYNQMP_SPL_PM_CFG_SRC
+	bool "pm_cfg_obj.c"
+	help
+	  The source file output from the Xilinx tools. This file is
+	  generated when building the Xilinx SDK BSP. For example at
+	  ./psu_cortexa53_0/libsrc/xilpm_v2_4/src/pm_cfg_obj.c
+
+endchoice
+
 config ZYNQMP_SPL_PM_CFG_OBJ_FILE
 	string "PMU firmware configuration object to load at runtime by SPL"
 	depends on SPL
diff --git a/board/xilinx/zynqmp/Makefile b/board/xilinx/zynqmp/Makefile
index 398c6aaa45..05067c43be 100644
--- a/board/xilinx/zynqmp/Makefile
+++ b/board/xilinx/zynqmp/Makefile
@@ -40,8 +40,16 @@ endif
 
 ifdef CONFIG_SPL_BUILD
 ifneq ($(CONFIG_ZYNQMP_SPL_PM_CFG_OBJ_FILE),"")
+ZYNQMP_SPL_CFG_OBJ_FILE = $(shell cd $(srctree); readlink -f $(CONFIG_ZYNQMP_SPL_PM_CFG_OBJ_FILE)) FORCE
+ifdef CONFIG_ZYNQMP_SPL_PM_CFG_BIN
+board/xilinx/zynqmp/pm_cfg_obj.bin: $(ZYNQMP_SPL_CFG_OBJ_FILE)
+	cp $< $@
+else
+board/xilinx/zynqmp/pm_cfg_obj.bin: $(ZYNQMP_SPL_CFG_OBJ_FILE)
+	$(srctree)/tools/zynqmp_pm_cfg_obj_convert.py $< $@
+endif
 obj-$(CONFIG_SPL_BUILD) += pm_cfg_obj.o
-$(obj)/pm_cfg_obj.o: $(shell cd $(srctree); readlink -f $(CONFIG_ZYNQMP_SPL_PM_CFG_OBJ_FILE)) FORCE
+$(obj)/pm_cfg_obj.o: board/xilinx/zynqmp/pm_cfg_obj.bin
 endif
 endif
 
diff --git a/board/xilinx/zynqmp/pm_cfg_obj.S b/board/xilinx/zynqmp/pm_cfg_obj.S
index c4ca77e396..77e39017f8 100644
--- a/board/xilinx/zynqmp/pm_cfg_obj.S
+++ b/board/xilinx/zynqmp/pm_cfg_obj.S
@@ -9,7 +9,7 @@
 
 zynqmp_pm_cfg_obj:
 .align 4
-.incbin CONFIG_ZYNQMP_SPL_PM_CFG_OBJ_FILE
+.incbin "board/xilinx/zynqmp/pm_cfg_obj.bin"
 
 zynqmp_pm_cfg_obj_end:
 
-- 
2.25.1



More information about the U-Boot mailing list