Change the include so that is adds a task for platform-init setup when
required. This avoids the need to modify the do_configure task which
prevents changes to its taskhash and avoids issues with taskhash
modification when the meta-xilinx layer is added but no configuration is
changed or used from it.

Improve the logic around how configs are detected such that
UBOOT_MACHINE can specify either the make target or the defconfig file
name (e.g. *_config or *_defconfig). U-Boot and u-boot.inc accept both
targets as valid configs since the values are passed directory to
U-Boot's kbuild/kconfig.

This change also drops compatibility with the older variable names
HAS_PS7INIT and FORCE_PS7INIT. Additionally the 'virtual/boot-bin'
provide logic was broken in most cases since SPL_BINARY =
"spl/boot.bin", so remove it.

Clean up use of tabs in python.

Signed-off-by: Nathan Rossi <[email protected]>
---
 recipes-bsp/u-boot/u-boot-spl-zynq-init.inc | 69 +++++++++++++++--------------
 recipes-bsp/u-boot/u-boot-xlnx-dev.bb       |  2 +-
 2 files changed, 36 insertions(+), 35 deletions(-)

diff --git a/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc 
b/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc
index 6fd6559d19..be92de5c47 100644
--- a/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc
+++ b/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc
@@ -1,48 +1,49 @@
 inherit xilinx-platform-init
 
+FORCE_PLATFORM_INIT[doc] = "This variable is used to force the overriding of 
all platform init files in u-boot source."
+
 PLATFORM_BOARD_DIR ?= ""
 PLATFORM_BOARD_DIR_zynq = "board/xilinx/zynq"
 PLATFORM_BOARD_DIR_zynqmp = "board/xilinx/zynqmp"
 
-do_configure_prepend() {
-       if ${@bb.utils.contains('DEPENDS', 'virtual/xilinx-platform-init', 
'true', 'false', d)}; then
-               for f in ${PLATFORM_INIT_FILES}; do
-                       if [ -d "${S}/${PLATFORM_BOARD_DIR}/custom_hw_platform" 
]; then
-                               cp ${PLATFORM_INIT_STAGE_DIR}/$f 
${S}/${PLATFORM_BOARD_DIR}/custom_hw_platform/
-                       else
-                               cp ${PLATFORM_INIT_STAGE_DIR}/$f 
${S}/${PLATFORM_BOARD_DIR}/
-                       fi
-                       # Newer u-boot sources use the init files in a sub 
directory named
-                       # based on the name of the device tree. This is not 
straight
-                       # forward to detect. Instead of detecting just 
overwrite all the
-                       # platform init files so that the correct one is always 
used. This
-                       # shotgun approach only works due to this recipe being 
machine arch
-                       # specific. Do this overwrite un-conditionally as there 
is no
-                       # guarantees that the chosen board config does not have 
the device
-                       # tree config set.
-                       for i in ${S}/${PLATFORM_BOARD_DIR}/*/; do
-                               [ -d $i ] && cp ${PLATFORM_INIT_STAGE_DIR}/$f $i
-                       done
+do_zynq_platform_init() {
+       for f in ${PLATFORM_INIT_FILES}; do
+               if [ -d "${S}/${PLATFORM_BOARD_DIR}/custom_hw_platform" ]; then
+                       cp ${PLATFORM_INIT_STAGE_DIR}/$f 
${S}/${PLATFORM_BOARD_DIR}/custom_hw_platform/
+               else
+                       cp ${PLATFORM_INIT_STAGE_DIR}/$f 
${S}/${PLATFORM_BOARD_DIR}/
+               fi
+               # Newer u-boot sources use the init files in a sub directory 
named
+               # based on the name of the device tree. This is not straight 
forward to
+               # detect. Instead of detecting just overwrite all the platform 
init
+               # files so that the correct one is always used. This shotgun 
approach
+               # only works due to this recipe being machine arch specific. Do 
this
+               # overwrite un-conditionally as there is no guarantees that the 
chosen
+               # board config does not have the device tree config set.
+               for i in ${S}/${PLATFORM_BOARD_DIR}/*/; do
+                       [ -d $i ] && cp ${PLATFORM_INIT_STAGE_DIR}/$f $i
                done
-       fi
+       done
 }
 
-FORCE_PLATFORM_INIT[doc] = "This variable is used to force the overriding of 
all platform init files in u-boot source."
-
 python () {
-       hasconfigs = (d.getVar("HAS_PLATFORM_INIT") or "").split() + 
(d.getVar("HAS_PS7INIT") or "").split()
-       forceoverride = (d.getVar("FORCE_PLATFORM_INIT") == "1") or 
(d.getVar("FORCE_PS7INIT"))
+    # strip the tail _config/_defconfig for better comparison
+    def strip_config_name(c):
+        for i in ["_config", "_defconfig"]:
+            if c.endswith(i):
+                return c[0:len(c) - len(i)]
+        return c
 
-       # Determine if target machine needs to provide a custom platform init 
files
-       if d.getVar("SOC_FAMILY") in ["zynq", "zynqmp"]:
-               if d.getVar("SPL_BINARY"):
-                       # only add the dependency if u-boot doesn't already 
provide the platform init files
-                       if forceoverride or not (d.getVar("UBOOT_MACHINE") in 
hasconfigs):
-                               # force the dependency on a recipe that 
provides the platform init files
-                               d.appendVar("DEPENDS", " 
virtual/xilinx-platform-init")
+    # Determine if target machine needs to provide a custom platform init files
+    if d.getVar("SPL_BINARY") and d.getVar("SOC_FAMILY") in ["zynq", "zynqmp"]:
+        hasconfigs = [strip_config_name(c) for c in 
(d.getVar("HAS_PLATFORM_INIT") or "").split()]
+        currentconfig = strip_config_name(d.getVar("UBOOT_MACHINE"))
 
-               if d.getVar("SPL_BINARY") == "boot.bin":
-                       # Add this for backwards compatibility
-                       d.setVar("PROVIDES", "%s virtual/boot-bin" % 
d.getVar("PROVIDES"))
+        # only add the dependency if u-boot doesn't already provide the 
platform init files
+        if (currentconfig not in hasconfigs) or 
(d.getVar("FORCE_PLATFORM_INIT") == "1"):
+            # force the dependency on a recipe that provides the platform init 
files
+            d.appendVar("DEPENDS", " virtual/xilinx-platform-init")
+            # setup task to modify platform init after unpack and before 
configure
+            bb.build.addtask("do_zynq_platform_init", "do_configure", 
"do_prepare_recipe_sysroot", d)
 }
 
diff --git a/recipes-bsp/u-boot/u-boot-xlnx-dev.bb 
b/recipes-bsp/u-boot/u-boot-xlnx-dev.bb
index 7653da5a4b..3e40bfa173 100644
--- a/recipes-bsp/u-boot/u-boot-xlnx-dev.bb
+++ b/recipes-bsp/u-boot/u-boot-xlnx-dev.bb
@@ -18,7 +18,7 @@ SRCREV ?= 
"${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/bootloader", "u-b
 PV = "${UBRANCH}-xilinx-dev+git${SRCPV}"
 
 # Newer versions of u-boot have support for these
-HAS_PS7INIT ?= " \
+HAS_PLATFORM_INIT ?= " \
                zynq_microzed_config \
                zynq_zed_config \
                zynq_zc702_config \
-- 
2.15.0


-- 
_______________________________________________
meta-xilinx mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/meta-xilinx

Reply via email to