[meta-xilinx] [PATCH 1/2] u-boot-spl-zynq-init.inc: Add virtual/boot-bin provider

Nathan Rossi nathan at nathanrossi.com
Sun Dec 3 01:03:12 PST 2017


Add back the PROVIDES for virtual/boot-bin and additionally improve the
logic that enables the provide so that U-Boot can be built without
providing virtual/boot-bin.

In order for the u-boot recipe to provide virtual/boot-bin for Zynq and
ZynqMP targets the selected provider for virtual/boot-bin must be the
current u-boot (e.g. u-boot or u-boot-xlnx) or the provider must be
unset. When u-boot provides virtual/boot-bin it is only enabling the
deployment of boot.bin. In cases where it is not the provider it
forcibly prevents the deployment of boot.bin. This ensures that the
platform-init files are still provided even if SPL is not used for the
boot.bin.

Additionally for ZynqMP if u-boot is not providing the boot.bin do not
depend on virtual/pmu-firmware. Since the boot.bin is what contains the
pmu binary.

Signed-off-by: Nathan Rossi <nathan at nathanrossi.com>
---
 recipes-bsp/u-boot/u-boot-spl-zynq-init.inc | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 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 2123e27168..50eae1f129 100644
--- a/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc
+++ b/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc
@@ -34,8 +34,12 @@ python () {
                 return c[0:len(c) - len(i)]
         return c
 
+    if d.getVar("SOC_FAMILY") not in ["zynq", "zynqmp"]:
+        # continue on this is not a zynq/zynqmp target
+        return
+
     # 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"]:
+    if d.getVar("SPL_BINARY"):
         hasconfigs = [strip_config_name(c) for c in (d.getVar("HAS_PLATFORM_INIT") or "").split()]
         currentconfig = strip_config_name(d.getVar("UBOOT_MACHINE"))
 
@@ -46,7 +50,20 @@ python () {
             # 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)
 
-    if "boot.bin" in d.getVar("SPL_BINARY") and d.getVar("SOC_FAMILY") in ["zynqmp"]:
+    if "boot.bin" not in d.getVar("SPL_BINARY"):
+        # not deploying the boot.bin, just building SPL
+        return
+
+    # assume that U-Boot is to provide the boot.bin if no other provides are selected or U-Boot is selected
+    providesbin = not(d.getVar("PREFERRED_PROVIDER_virtual/boot-bin")) or d.getVar("PREFERRED_PROVIDER_virtual/boot-bin") == d.getVar("PN")
+    if providesbin:
+        # add provides, if U-Boot is set to provide boot.bin
+        d.appendVar("PROVIDES", " virtual/boot-bin")
+    else:
+        # prevent U-Boot from deploying the boot.bin
+        d.setVar("SPL_BINARY", "")
+
+    if providesbin and d.getVar("SOC_FAMILY") in ["zynqmp"]:
         # depend on the pmu-firmware build
         d.appendVar("DEPENDS", " virtual/pmu-firmware")
         # determine the path relative to the source tree
-- 
2.15.0





More information about the meta-xilinx mailing list