[meta-xilinx] [PATCH 4/5] u-boot-spl-zynq-init.inc: Add support for ZynqMP

Nathan Rossi nathan at nathanrossi.com
Thu Apr 27 07:36:19 PDT 2017


On 26 April 2017 at 23:02, Jean-Francois Dagenais
<jeff.dagenais at gmail.com> wrote:
>
>> On Apr 26, 2017, at 07:41, Nathan Rossi <nathan at 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 <nathan at 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 ;)

I probably did add it, when I first wrote the code ;). Anyways I will
fix it up in this patch.

>
>> -                     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

Fixed up the "compatiblity" -> compatibility typo here too.

Updated commit here:
https://github.com/nathanrossi/meta-xilinx/commit/807626359d4de89f0dffedec29ec19cb78899cf4

Regards,
Nathan

>> -                     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 at yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/meta-xilinx
>



More information about the meta-xilinx mailing list