> On Apr 26, 2017, at 07:41, Nathan Rossi <nat...@nathanrossi.com> wrote: > > Update to using the xilinx-platform-init.bbclass and depending on the > 'virtual/xilinx-platform-init' provider. This allows for more generic > support of platform-init (between Zynq7, ZynqMP and any future targets). > > This change also renames some of the variables used for defining the > source of the platform-init files for SPL. Specifically HAS_PS7INIT is > renamed to HAS_PLATFORM_INIT, and FORCE_PS7INIT is renamed to > FORCE_PLATFORM_INIT. However for compatibility the existing variables > still function as expected. > > Signed-off-by: Nathan Rossi <nat...@nathanrossi.com> > --- > recipes-bsp/u-boot/u-boot-spl-zynq-init.inc | 58 +++++++++++++++++------------ > recipes-bsp/u-boot/u-boot-xlnx_2016.4.bb | 2 +- > recipes-bsp/u-boot/u-boot_%.bbappend | 2 +- > 3 files changed, 36 insertions(+), 26 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 cc06de6cc5..442a24f9b2 100644 > --- a/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc > +++ b/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc > @@ -1,38 +1,48 @@ > -inherit zynq7-platform-paths > +inherit xilinx-platform-init > + > +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/zynq7-platform-init', > 'true', 'false', d)}; then > - if [ -d "${S}/board/xilinx/zynq/custom_hw_platform" ]; then > - cp ${PLATFORM_INIT_STAGE_DIR}/ps7_init_gpl.h > ${S}/board/xilinx/zynq/custom_hw_platform/ > - cp ${PLATFORM_INIT_STAGE_DIR}/ps7_init_gpl.c > ${S}/board/xilinx/zynq/custom_hw_platform/ > - else > - cp ${PLATFORM_INIT_STAGE_DIR}/ps7_init_gpl.h > ${S}/board/xilinx/zynq/ > - cp ${PLATFORM_INIT_STAGE_DIR}/ps7_init_gpl.c > ${S}/board/xilinx/zynq/ > - fi > - if [ -n "${FORCE_PS7INIT}" ]; then > - # overwrite all the existing platforms ps7_init files, > this is a shotgun approach and only works due to > - # u-boot being built for each machine seperately with > seperate source directories. > - for i in ${S}/board/xilinx/zynq/*/; do > - cp ${PLATFORM_INIT_STAGE_DIR}/ps7_init_gpl.h $i > - cp ${PLATFORM_INIT_STAGE_DIR}/ps7_init_gpl.c $i > + 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 > - fi > + done > fi > } > > -FORCE_PS7INIT[doc] = "This variable is used to force the overriding of all > ps7_init_gpl.* files in u-boot source with what is provided by > virtual/zynq7-platform-init." > +FORCE_PLATFORM_INIT[doc] = "This variable is used to force the overriding of > all platform init files in u-boot source." > > python () { > - # Determine if target machine needs to provide a custom ps7_init_gpl.* > - if d.getVar("SOC_FAMILY", True) == "zynq": > - if d.getVar("SPL_BINARY", True): > + 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")) > + > + # 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-bopt doesn't already > provide the platform init files
You did not add this "u-bopt" but I would use the occasion to fix it ;) > - if d.getVar("FORCE_PS7INIT", True) or not > bb.utils.contains("HAS_PS7INIT", d.getVar("UBOOT_MACHINE", True), True, > False, d): > + if forceoverride or not (d.getVar("UBOOT_MACHINE") in > hasconfigs): > # force the dependency on a recipe that > provides the platform init files > - d.setVar("DEPENDS", "%s > virtual/zynq7-platform-init" % d.getVar("DEPENDS", True)) > + d.appendVar("DEPENDS", " > virtual/xilinx-platform-init") > > - if d.getVar("SPL_BINARY", True) == "boot.bin": > + if d.getVar("SPL_BINARY") == "boot.bin": > # Add this for backwards compatiblity > - d.setVar("PROVIDES", "%s virtual/boot-bin" % > d.getVar("PROVIDES", True)) > + d.setVar("PROVIDES", "%s virtual/boot-bin" % > d.getVar("PROVIDES")) > } > > diff --git a/recipes-bsp/u-boot/u-boot-xlnx_2016.4.bb > b/recipes-bsp/u-boot/u-boot-xlnx_2016.4.bb > index 5f38537621..99ce95a031 100644 > --- a/recipes-bsp/u-boot/u-boot-xlnx_2016.4.bb > +++ b/recipes-bsp/u-boot/u-boot-xlnx_2016.4.bb > @@ -27,7 +27,7 @@ SRC_URI_append_zc702-zynq7 = " file://uEnv.txt" > SRC_URI_append_zedboard-zynq7 = " file://uEnv.txt" > > # u-boot 2016.07 has support for these > -HAS_PS7INIT ?= " \ > +HAS_PLATFORM_INIT ?= " \ > zynq_microzed_config \ > zynq_zed_config \ > zynq_zc702_config \ > diff --git a/recipes-bsp/u-boot/u-boot_%.bbappend > b/recipes-bsp/u-boot/u-boot_%.bbappend > index 8513670671..b852236998 100644 > --- a/recipes-bsp/u-boot/u-boot_%.bbappend > +++ b/recipes-bsp/u-boot/u-boot_%.bbappend > @@ -1,7 +1,7 @@ > include u-boot-spl-zynq-init.inc > > # u-boot 2016.11 has support for these > -HAS_PS7INIT ??= " \ > +HAS_PLATFORM_INIT ??= " \ > zynq_microzed_config \ > zynq_zed_config \ > zynq_zc702_config \ > -- > 2.11.0 > > -- > _______________________________________________ > meta-xilinx mailing list > meta-xilinx@yoctoproject.org > https://lists.yoctoproject.org/listinfo/meta-xilinx -- _______________________________________________ meta-xilinx mailing list meta-xilinx@yoctoproject.org https://lists.yoctoproject.org/listinfo/meta-xilinx