From b1a0592fbc175dbc53201b077b2239993d98a122 Mon Sep 17 00:00:00 2001 From: Nathan Rossi Date: Sun, 3 Dec 2017 19:03:12 +1000 Subject: u-boot-spl-zynq-init.inc: Add virtual/boot-bin provider 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 Signed-off-by: Manjukumar Matha --- 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 2123e271..50eae1f1 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 -- cgit v1.2.3-54-g00ecf