diff options
Diffstat (limited to 'bsp/meta-freescale/recipes-bsp')
60 files changed, 2369 insertions, 544 deletions
diff --git a/bsp/meta-freescale/recipes-bsp/atf/atf-tools_git.bb b/bsp/meta-freescale/recipes-bsp/atf/atf-tools_git.bb new file mode 100644 index 00000000..33ec51c2 --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/atf/atf-tools_git.bb @@ -0,0 +1,19 @@ +SUMMARY = "Tools for ARM Trusted Firmware, e.g. FIP image creation tool" +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://license.rst;md5=e927e02bca647e14efd87e9e914b2443" + +SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/atf;nobranch=1" +SRCREV = "7d748e6f0ec652ba7c43733dc67a3d0b0217390a" + +S = "${WORKDIR}/git" + +DEPENDS += "openssl" + +EXTRA_OEMAKE = "fiptool V=1 HOSTCC='${CC} ${CPPFLAGS} ${CFLAGS} ${LDFLAGS}'" + +do_install () { + install -m 0755 -d ${D}/${bindir} + install -m 0755 ${S}/tools/fiptool/fiptool ${D}/${bindir}/ +} + +BBCLASSEXTEND = "native" diff --git a/bsp/meta-freescale/recipes-bsp/atf/atf_git.bb b/bsp/meta-freescale/recipes-bsp/atf/atf_git.bb new file mode 100644 index 00000000..a93cb804 --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/atf/atf_git.bb @@ -0,0 +1,247 @@ +DESCRIPTION = "ARM Trusted Firmware" + +LICENSE = "BSD" +LIC_FILES_CHKSUM = "file://license.rst;md5=e927e02bca647e14efd87e9e914b2443" + +inherit deploy + +DEPENDS += "u-boot-mkimage-native u-boot openssl openssl-native mbedtls rcw cst-native" +DEPENDS_append_lx2160a += "ddr-phy" +do_compile[depends] += "u-boot:do_deploy rcw:do_deploy uefi:do_deploy" + +S = "${WORKDIR}/git" + +SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/atf;nobranch=1" +SRCREV = "7d748e6f0ec652ba7c43733dc67a3d0b0217390a" + +COMPATIBLE_MACHINE = "(qoriq)" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +PLATFORM = "${MACHINE}" +PLATFORM_ls1088ardb-pb = "ls1088ardb" +PLATFORM_ADDITIONAL_TARGET ??= "" +PLATFORM_ADDITIONAL_TARGET_ls1012afrwy = "ls1012afrwy_512mb" + +RCW_FOLDER ?= "${MACHINE}" +RCW_FOLDER_ls1088ardb-pb = "ls1088ardb" + +# requires CROSS_COMPILE set by hand as there is no configure script +export CROSS_COMPILE="${TARGET_PREFIX}" +export ARCH="arm64" + +# Let the Makefile handle setting up the CFLAGS and LDFLAGS as it is +# a standalone application +CFLAGS[unexport] = "1" +LDFLAGS[unexport] = "1" +AS[unexport] = "1" +LD[unexport] = "1" + +EXTRA_OEMAKE += "HOSTCC='${BUILD_CC} ${BUILD_CPPFLAGS} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}'" + +BOOTTYPE ?= "nor nand qspi flexspi_nor sd emmc" +OTABOOTTYPE ?= "nor qspi flexspi_nor" +BUILD_SECURE = "${@bb.utils.contains('DISTRO_FEATURES', 'secure', 'true', 'false', d)}" +BUILD_OPTEE = "${@bb.utils.contains('COMBINED_FEATURES', 'optee', 'true', 'false', d)}" +BUILD_FUSE = "${@bb.utils.contains('DISTRO_FEATURES', 'fuse', 'true', 'false', d)}" +BUILD_OTA = "${@bb.utils.contains('DISTRO_FEATURES', 'ota', 'true', 'false', d)}" + +PACKAGECONFIG ??= " \ + ${@bb.utils.filter('COMBINED_FEATURES', 'optee', d)} \ +" +PACKAGECONFIG[optee] = ",,optee-os-qoriq" + +uboot_boot_sec ?= "${DEPLOY_DIR_IMAGE}/u-boot.bin-tfa-secure-boot" +uboot_boot ?= "${DEPLOY_DIR_IMAGE}/u-boot.bin-tfa" +rcw ?= "" +rcw_ls1012afrwy = "_default" +rcw_ls1012ardb = "_default" +rcwsec ?= "_sben" + +chassistype ?= "ls2088_1088" +chassistype_ls1012ardb = "ls104x_1012" +chassistype_ls1012afrwy = "ls104x_1012" +chassistype_ls1043ardb = "ls104x_1012" +chassistype_ls1046ardb = "ls104x_1012" +chassistype_ls1046afrwy = "ls104x_1012" + +ddrphyopt ?= "" +ddrphyopt_lx2160ardb = "fip_ddr_sec" + +do_configure[noexec] = "1" + +do_compile() { + export LIBPATH="${RECIPE_SYSROOT_NATIVE}" + install -d ${S}/include/tools_share/openssl + cp -r ${RECIPE_SYSROOT}/usr/include/openssl/* ${S}/include/tools_share/openssl + if [ ! -f ${RECIPE_SYSROOT_NATIVE}/usr/bin/cst/srk.pri ]; then + ${RECIPE_SYSROOT_NATIVE}/usr/bin/cst/gen_keys 1024 + else + cp ${RECIPE_SYSROOT_NATIVE}/usr/bin/cst/srk.pri ${S} + cp ${RECIPE_SYSROOT_NATIVE}/usr/bin/cst/srk.pub ${S} + fi + + if [ "${BUILD_FUSE}" = "true" ]; then + ${RECIPE_SYSROOT_NATIVE}/usr/bin/cst/gen_fusescr ${RECIPE_SYSROOT_NATIVE}/usr/bin/cst/input_files/gen_fusescr/${chassistype}/input_fuse_file + fuseopt="fip_fuse FUSE_PROG=1 FUSE_PROV_FILE=fuse_scr.bin" + fi + if [ "${BUILD_SECURE}" = "true" ]; then + secureopt="TRUSTED_BOARD_BOOT=1 ${ddrphyopt} CST_DIR=${RECIPE_SYSROOT_NATIVE}/usr/bin/cst" + secext="_sec" + bl33="${uboot_boot_sec}" + if [ ${chassistype} = ls104x_1012 ]; then + rcwtemp="${rcwsec}" + else + rcwtemp="${rcw}" + fi + else + bl33="${uboot_boot}" + rcwtemp="${rcw}" + fi + + if [ "${BUILD_OPTEE}" = "true" ]; then + bl32="${RECIPE_SYSROOT}${nonarch_base_libdir}/firmware/tee_${MACHINE}.bin" + bl32opt="BL32=${bl32}" + spdopt="SPD=opteed" + fi + + if [ "${BUILD_OTA}" = "true" ]; then + otaopt="POLICY_OTA=1" + btype="${OTABOOTTYPE}" + else + btype="${BOOTTYPE}" + fi + + if [ -f ${DEPLOY_DIR_IMAGE}/ddr-phy/ddr4_pmu_train_dmem.bin ]; then + cp ${DEPLOY_DIR_IMAGE}/ddr-phy/*.bin ${S}/ + fi + + for d in ${btype}; do + case $d in + nor) + rcwimg="${RCWNOR}${rcwtemp}.bin" + uefiboot="${UEFI_NORBOOT}" + ;; + nand) + rcwimg="${RCWNAND}${rcwtemp}.bin" + ;; + qspi) + rcwimg="${RCWQSPI}${rcwtemp}.bin" + uefiboot="${UEFI_QSPIBOOT}" + if [ "${BUILD_SECURE}" = "true" ] && [ ${MACHINE} = ls1046ardb ]; then + rcwimg="RR_FFSSPPPH_1133_5559/rcw_1600_qspiboot_sben.bin" + fi + ;; + auto) + rcwimg="${RCWAUTO}${rcwtemp}.bin" + ;; + sd) + rcwimg="${RCWSD}${rcwtemp}.bin" + ;; + emmc) + rcwimg="${RCWEMMC}${rcwtemp}.bin" + ;; + flexspi_nor) + rcwimg="${RCWXSPI}${rcwtemp}.bin" + uefiboot="${UEFI_XSPIBOOT}" + ;; + esac + + if [ -f "${DEPLOY_DIR_IMAGE}/rcw/${RCW_FOLDER}/${rcwimg}" ]; then + oe_runmake V=1 -C ${S} realclean + oe_runmake V=1 -C ${S} all fip pbl PLAT=${PLATFORM} BOOT_MODE=${d} RCW=${DEPLOY_DIR_IMAGE}/rcw/${RCW_FOLDER}/${rcwimg} BL33=${bl33} ${bl32opt} ${spdopt} ${secureopt} ${fuseopt} ${otaopt} + cp -r ${S}/build/${PLATFORM}/release/bl2_${d}*.pbl ${S} + cp -r ${S}/build/${PLATFORM}/release/fip.bin ${S} + if [ "${BUILD_FUSE}" = "true" ]; then + cp -f ${S}/build/${PLATFORM}/release/fuse_fip.bin ${S} + fi + + if [ -n "${PLATFORM_ADDITIONAL_TARGET}" ]; then + oe_runmake V=1 -C ${S} realclean + oe_runmake V=1 -C ${S} all fip pbl PLAT=${PLATFORM_ADDITIONAL_TARGET} BOOT_MODE=${d} RCW=${DEPLOY_DIR_IMAGE}/rcw/${RCW_FOLDER}/${rcwimg} BL33=${bl33} ${bl32opt} ${spdopt} ${secureopt} ${fuseopt} ${otaopt} + cp -r ${S}/build/${PLATFORM_ADDITIONAL_TARGET}/release/bl2_qspi${secext}.pbl ${S}/bl2_${d}${secext}_${PLATFORM_ADDITIONAL_TARGET}.pbl + cp -r ${S}/build/${PLATFORM_ADDITIONAL_TARGET}/release/fip.bin ${S}/fip_${PLATFORM_ADDITIONAL_TARGET}.bin + if [ "${BUILD_FUSE}" = "true" ]; then + cp -r ${S}/build/${PLATFORM_ADDITIONAL_TARGET}/release/fuse_fip.bin ${S}/fuse_fip_${PLATFORM_ADDITIONAL_TARGET}.bin + fi + fi + if [ -n "${uefiboot}" -a -f "${DEPLOY_DIR_IMAGE}/uefi/${PLATFORM}/${uefiboot}" ]; then + oe_runmake V=1 -C ${S} realclean + oe_runmake V=1 -C ${S} all fip pbl PLAT=${PLATFORM} BOOT_MODE=${d} RCW=${DEPLOY_DIR_IMAGE}/rcw/${RCW_FOLDER}/${rcwimg} BL33=${DEPLOY_DIR_IMAGE}/uefi/${PLATFORM}/${uefiboot} ${bl32opt} ${spdopt} ${secureopt} ${fuseopt} ${otaopt} + cp -r ${S}/build/${PLATFORM}/release/fip.bin ${S}/fip_uefi.bin + fi + fi + rcwimg="" + uefiboot="" + done +} + +do_install() { + install -d ${D}/boot/atf + cp -r ${S}/srk.pri ${D}/boot/atf + cp -r ${S}/srk.pub ${D}/boot/atf + if [ "${BUILD_SECURE}" = "true" ]; then + secext="_sec" + fi + if [ -f "${S}/fip_uefi.bin" ]; then + cp -r ${S}/fip_uefi.bin ${D}/boot/atf/fip_uefi.bin + fi + if [ -f "${S}/fuse_fip.bin" ]; then + cp -r ${S}/fuse_fip.bin ${D}/boot/atf/fuse_fip.bin + fi + if [ -f "${S}/fip.bin" ]; then + cp -r ${S}/fip.bin ${D}/boot/atf/fip.bin + fi + for d in ${BOOTTYPE}; do + if [ -e ${S}/bl2_${d}${secext}.pbl ]; then + cp -r ${S}/bl2_${d}${secext}.pbl ${D}/boot/atf/bl2_${d}${secext}.pbl + fi + done + if [ -n "${PLATFORM_ADDITIONAL_TARGET}" ]; then + cp -r ${S}/fip_${PLATFORM_ADDITIONAL_TARGET}.bin ${D}/boot/atf/fip_${PLATFORM_ADDITIONAL_TARGET}.bin + cp -r ${S}/bl2_qspi${secext}_${PLATFORM_ADDITIONAL_TARGET}.pbl ${D}/boot/atf/bl2_qspi${secext}_${PLATFORM_ADDITIONAL_TARGET}.pbl + if [ -f "${S}/fuse_fip_${PLATFORM_ADDITIONAL_TARGET}.bin" ]; then + cp -r ${S}/fuse_fip_${PLATFORM_ADDITIONAL_TARGET}.bin ${D}/boot/atf/fuse_fip_${PLATFORM_ADDITIONAL_TARGET}.bin + fi + fi + chown -R root:root ${D} + if [ -f "${S}/fip_ddr_sec.bin" ]; then + cp -r ${S}/fip_ddr_sec.bin ${D}/boot/atf/fip_ddr_sec.bin + fi +} + +do_deploy() { + install -d ${DEPLOYDIR}/atf + cp -r ${D}/boot/atf/srk.pri ${DEPLOYDIR}/atf + cp -r ${D}/boot/atf/srk.pub ${DEPLOYDIR}/atf + if [ "${BUILD_SECURE}" = "true" ]; then + secext="_sec" + fi + + if [ -f "${S}/fuse_fip.bin" ]; then + cp -r ${D}/boot/atf/fuse_fip.bin ${DEPLOYDIR}/atf/fuse_fip${secext}.bin + fi + + if [ -e ${D}/boot/atf/fip_uefi.bin ]; then + cp -r ${D}/boot/atf/fip_uefi.bin ${DEPLOYDIR}/atf/fip_uefi.bin + fi + cp -r ${D}/boot/atf/fip.bin ${DEPLOYDIR}/atf/fip_uboot${secext}.bin + for d in ${BOOTTYPE}; do + if [ -e ${D}/boot/atf/bl2_${d}${secext}.pbl ]; then + cp -r ${D}/boot/atf/bl2_${d}${secext}.pbl ${DEPLOYDIR}/atf/bl2_${d}${secext}.pbl + fi + done + if [ -n "${PLATFORM_ADDITIONAL_TARGET}" ]; then + cp -r ${S}/bl2_qspi${secext}_${PLATFORM_ADDITIONAL_TARGET}.pbl ${DEPLOYDIR}/atf/ + cp -r ${S}/fip_${PLATFORM_ADDITIONAL_TARGET}.bin ${DEPLOYDIR}/atf/fip_uboot${secext}_${PLATFORM_ADDITIONAL_TARGET}.bin + if [ -f "${S}/fuse_fip_${PLATFORM_ADDITIONAL_TARGET}.bin" ]; then + cp -r ${S}/fuse_fip_${PLATFORM_ADDITIONAL_TARGET}.bin ${D}/boot/atf/fuse_fip_${PLATFORM_ADDITIONAL_TARGET}${secext}.bin + fi + fi + if [ -f "${S}/fip_ddr_sec.bin" ]; then + cp -r ${D}/boot/atf/fip_ddr_sec.bin ${DEPLOYDIR}/atf/fip_ddr_sec.bin + fi +} +addtask deploy after do_install +FILES_${PN} += "/boot" +BBCLASSEXTEND = "native nativesdk" diff --git a/bsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess.bb b/bsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess.bb deleted file mode 100644 index 570ee3f6..00000000 --- a/bsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess.bb +++ /dev/null @@ -1,19 +0,0 @@ -DESCRIPTION = "provides the tcl script for endian swap" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" - -SRC_URI = "file://byte_swap.tcl" - -S = "${WORKDIR}" - -do_configure[noexec] = "1" -do_compile[noexec] = "1" - -do_install () { - install -d ${D}/${bindir} - install -m 755 ${WORKDIR}/byte_swap.tcl ${D}/${bindir} -} - -RDEPENDS_${PN} += "tcl" - -BBCLASSEXTEND = "native nativesdk" diff --git a/bsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess/byte_swap.tcl b/bsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess/byte_swap.tcl deleted file mode 100755 index c6222022..00000000 --- a/bsp/meta-freescale/recipes-bsp/change-file-endianess/change-file-endianess/byte_swap.tcl +++ /dev/null @@ -1,40 +0,0 @@ -puts $argv -set i_file [lindex $argv 0] -set o_file [lindex $argv 1] -set num_b [lindex $argv 2] -puts "" - -set fileid_i [open $i_file "r"] -set fileid_o [open $o_file "w+"] -fconfigure $fileid_i -translation {binary binary} -fconfigure $fileid_o -translation {binary binary} - -set old_bin [read $fileid_i] -set new_bin {} -set old_length [string length $old_bin] -set old_rem [expr $old_length % $num_b] -if {$old_rem != 0} { - for {set i 0} {$i< [expr $num_b - $old_rem]} {incr i 1} { - append old_bin y - } -} -for {set i 0} {$i<[expr $old_length-8]} {incr i $num_b} { - for {set j $num_b} {$j>0} {incr j -1} { - append new_bin [string index $old_bin [expr $i+($j-1)]] - } -} - -for {set j 0} {$j<8} {incr j 1} { - append new_bin [string index $old_bin [expr $i+$j]] -} - -for {set i 0} {$i<[string length $old_bin]} {incr i $num_b} { - set binValue [string range $old_bin [expr $i+0] [expr $i+($num_b-1)]] - binary scan $binValue H[expr $num_b*2] hexValue - - set binValue [string range $new_bin [expr $i+0] [expr $i+($num_b-1)]] - binary scan $binValue H[expr $num_b*2] hexValue -} - -puts -nonewline $fileid_o $new_bin -close $fileid_o diff --git a/bsp/meta-freescale/recipes-bsp/ddr-phy/ddr-phy_git.bb b/bsp/meta-freescale/recipes-bsp/ddr-phy/ddr-phy_git.bb index ebd68c26..31f6c101 100644 --- a/bsp/meta-freescale/recipes-bsp/ddr-phy/ddr-phy_git.bb +++ b/bsp/meta-freescale/recipes-bsp/ddr-phy/ddr-phy_git.bb @@ -2,23 +2,38 @@ SUMMARY = "DDR firmware repository" LICENSE = "NXP-Binary-EULA" LIC_FILES_CHKSUM = "file://NXP-Binary-EULA.txt;md5=89cc852481956e861228286ac7430d74" -inherit deploy fsl-eula-unpack +inherit deploy -SRC_URI = "git://github.com/nxp/ddr-phy-binary.git;fsl-eula=true;nobranch=1" -SRCREV = "14d03e6e748ed5ebb9440f264bb374f1280b061c" +SRC_URI = "git://github.com/nxp/ddr-phy-binary.git;nobranch=1" +SRCREV = "fbc036b88acb6c06ffed02c898cbae9856ec75ba" S = "${WORKDIR}/git" REGLEX_lx2160a = "lx2160a" +DEPENDS += "atf-tools-native" + +do_compile() { + cd ${S}/${REGLEX} + fiptool create --ddr-immem-udimm-1d ddr4_pmu_train_imem.bin \ + --ddr-immem-udimm-2d ddr4_2d_pmu_train_imem.bin \ + --ddr-dmmem-udimm-1d ddr4_pmu_train_dmem.bin \ + --ddr-dmmem-udimm-2d ddr4_2d_pmu_train_dmem.bin \ + --ddr-immem-rdimm-1d ddr4_rdimm_pmu_train_imem.bin \ + --ddr-immem-rdimm-2d ddr4_rdimm2d_pmu_train_imem.bin \ + --ddr-dmmem-rdimm-1d ddr4_rdimm_pmu_train_dmem.bin \ + --ddr-dmmem-rdimm-2d ddr4_rdimm2d_pmu_train_dmem.bin \ + fip_ddr_all.bin +} + do_install () { install -d ${D}/boot - install -m 755 ${S}/${REGLEX}/* ${D}/boot + install -m 755 ${S}/${REGLEX}/*.bin ${D}/boot } do_deploy () { install -d ${DEPLOYDIR}/ddr-phy - install -m 755 ${S}/${REGLEX}/* ${DEPLOYDIR}/ddr-phy + install -m 755 ${S}/${REGLEX}/*.bin ${DEPLOYDIR}/ddr-phy } addtask deploy before do_populate_sysroot after do_install diff --git a/bsp/meta-freescale/recipes-bsp/dp-firmware-cadence/dp-firmware-cadence_20.04.bb b/bsp/meta-freescale/recipes-bsp/dp-firmware-cadence/dp-firmware-cadence_20.04.bb new file mode 100644 index 00000000..e8db5456 --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/dp-firmware-cadence/dp-firmware-cadence_20.04.bb @@ -0,0 +1,30 @@ +SUMMARY = "DP firmware" +LICENSE = "Proprietary" +LIC_FILES_CHKSUM = "file://COPYING;md5=228c72f2a91452b8a03c4cab30f30ef9" + +inherit deploy fsl-eula-unpack + +SRC_URI = "https://www.nxp.com/lgfiles/sdk/lsdk2004/firmware-cadence-lsdk2004.bin;fsl-eula=true" + +SRC_URI[md5sum] = "d7eb8ef87cae8e4a205c266b3ac6f330" +SRC_URI[sha256sum] = "bef89a3eceed95e90748a2301d6f6ffbdf1a72237c0045093cb9485b05eb8fbd" + +S = "${WORKDIR}/firmware-cadence-lsdk2004" + +do_install () { + install -d ${D}/boot + cp -fr ${S}/dp/*.bin ${D}/boot +} + +do_deploy () { + install -d ${DEPLOYDIR}/dp + cp -fr ${S}/dp/*.bin ${DEPLOYDIR}/dp +} +addtask deploy before do_build after do_install + +PACKAGES += "${PN}-image" +FILES_${PN}-image += "/boot" + +COMPATIBLE_MACHINE = "(qoriq-arm64)" +PACKAGE_ARCH = "${MACHINE_ARCH}" + diff --git a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-7.8.inc b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8.5.inc index 6da6736c..ae6b1d78 100644 --- a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-7.8.inc +++ b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8.5.inc @@ -1,17 +1,17 @@ # Copyright (C) 2012-2016 Freescale Semiconductor -# Copyright 2017-2018 NXP +# Copyright 2017-2019 NXP # Copyright (C) 2018 O.S. Systems Software LTDA. SECTION = "base" LICENSE = "Proprietary" -LIC_FILES_CHKSUM = "file://COPYING;md5=5ab1a30d0cd181e3408077727ea5a2db" +LIC_FILES_CHKSUM = "file://COPYING;md5=6c12031a11b81db21cdfe0be88cac4b3" SRCBRANCH ?= "master" SRC_URI = " \ ${FSL_MIRROR}/firmware-imx-${PV}.bin;fsl-eula=true \ " -SRC_URI[md5sum] = "0967aa59b3fd8d80fcb98146a9aac91b" -SRC_URI[sha256sum] = "910fbf866f61185adfd60c1704b2da41030cb175901d06e40402b49f9240bdee" +SRC_URI[md5sum] = "a6b926d087e1e642580da8a6d982abe6" +SRC_URI[sha256sum] = "45b0a7392e7a4b2e6c7e1cb988dd660ff3f8cd465afdf796ff840a00db08389d" S = "${WORKDIR}/firmware-imx-${PV}" diff --git a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8_7.8.bb b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8_8.5.bb index d99aa41b..64fa2885 100644 --- a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8_7.8.bb +++ b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8_8.5.bb @@ -13,8 +13,6 @@ do_deploy() { install -m 0644 ${S}/firmware/hdmi/cadence/hdmitxfw.bin ${DEPLOYDIR} install -m 0644 ${S}/firmware/hdmi/cadence/hdmirxfw.bin ${DEPLOYDIR} install -m 0644 ${S}/firmware/hdmi/cadence/dpfw.bin ${DEPLOYDIR} - # SECO - install -m 0644 ${S}/firmware/seco/mx8qm-ahab-container.img ${DEPLOYDIR} } addtask deploy after do_install before do_build diff --git a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8m_7.8.bb b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8m_8.5.bb index a605d226..a605d226 100644 --- a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8m_7.8.bb +++ b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8m_8.5.bb diff --git a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8x_7.8.bb b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8x_7.8.bb deleted file mode 100644 index 85d394a0..00000000 --- a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx-8x_7.8.bb +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2018 NXP -SUMMARY = "Freescale i.MX firmware for 8X family" -DESCRIPTION = "Freescale i.MX firmware for 8X family" - -require firmware-imx-${PV}.inc - -inherit deploy - -do_install[noexec] = "1" - -do_deploy() { - # SECO - install -m 0644 ${S}/firmware/seco/mx8qx-ahab-container.img ${DEPLOYDIR} -} - -addtask deploy after do_install before do_build - -PACKAGE_ARCH = "${MACHINE_SOCARCH}" - -COMPATIBLE_MACHINE = "(mx8x)" diff --git a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx_7.8.bb b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx_8.5.bb index bf0fbc3f..ff623057 100644 --- a/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx_7.8.bb +++ b/bsp/meta-freescale/recipes-bsp/firmware-imx/firmware-imx_8.5.bb @@ -1,5 +1,5 @@ # Copyright (C) 2012-2016 Freescale Semiconductor -# Copyright 2017-2018 NXP +# Copyright 2017-2019 NXP # Copyright (C) 2018 O.S. Systems Software LTDA. SUMMARY = "Freescale i.MX firmware" DESCRIPTION = "Freescale i.MX firmware such as for the VPU" @@ -17,12 +17,13 @@ inherit allarch do_install() { install -d ${D}${base_libdir}/firmware/imx - install -d ${D}${base_libdir}/firmware/bcm - install -d ${D}${sysconfdir}/firmware cd firmware for d in *; do case $d in + easrc) + # excluding as only applies Nano SoC + ;; ddr|hdmi|seco) # These folders are for i.MX 8 and are included in the boot image via imx-boot bbnote Excluding folder $d @@ -34,39 +35,6 @@ do_install() { done cd - - #1BW_BCM43340 - install -d ${D}${base_libdir}/firmware/bcm/1BW_BCM43340 - cp -rfv git/brcm/1BW_BCM43340/*.bin ${D}${base_libdir}/firmware/bcm/1BW_BCM43340 - cp -rfv git/brcm/1BW_BCM43340/*.cal ${D}${base_libdir}/firmware/bcm/1BW_BCM43340 - cp -rfv git/brcm/1BW_BCM43340/*.hcd ${D}${sysconfdir}/firmware/ - - #1CX_BCM4356 - install -d ${D}${base_libdir}/firmware/bcm/1CX_BCM4356 - cp -rfv git/brcm/1CX_BCM4356/fw_bcmdhd.bin ${D}${base_libdir}/firmware/bcm/1CX_BCM4356 - - #1DX_BCM4343W - install -d ${D}${base_libdir}/firmware/bcm/1DX_BCM4343W - cp -rfv git/brcm/1DX_BCM4343W/*.bin ${D}${base_libdir}/firmware/bcm/1DX_BCM4343W - cp -rfv git/brcm/1DX_BCM4343W/*.cal ${D}${base_libdir}/firmware/bcm/1DX_BCM4343W - cp -rfv git/brcm/1DX_BCM4343W/*.hcd ${D}${sysconfdir}/firmware/ - - #1FD_BCM89359 - install -d ${D}${base_libdir}/firmware/bcm/1FD_BCM89359 - cp -rfv git/brcm/1FD_BCM89359/*.bin ${D}${base_libdir}/firmware/bcm/1FD_BCM89359 - cp -rfv git/brcm/1FD_BCM89359/*.hcd ${D}${sysconfdir}/firmware/ - - #SN8000_BCM43362 - install -d ${D}${base_libdir}/firmware/bcm/SN8000_BCM43362 - cp -rfv git/brcm/SN8000_BCM43362/*.bin ${D}${base_libdir}/firmware/bcm/SN8000_BCM43362 - cp -rfv git/brcm/SN8000_BCM43362/*.cal ${D}${base_libdir}/firmware/bcm/SN8000_BCM43362 - cp -rfv git/brcm/1DX_BCM4343W/*.hcd ${D}${sysconfdir}/firmware/ - - #ZP_BCM4339 - install -d ${D}${base_libdir}/firmware/bcm/ZP_BCM4339 - cp -rfv git/brcm/ZP_BCM4339/*.bin ${D}${base_libdir}/firmware/bcm/ZP_BCM4339 - cp -rfv git/brcm/ZP_BCM4339/*.cal ${D}${base_libdir}/firmware/bcm/ZP_BCM4339 - cp -rfv git/brcm/ZP_BCM4339/*.hcd ${D}${sysconfdir}/firmware/ - mv ${D}${base_libdir}/firmware/epdc/ ${D}${base_libdir}/firmware/imx/epdc/ mv ${D}${base_libdir}/firmware/imx/epdc/epdc_ED060XH2C1.fw.nonrestricted ${D}${base_libdir}/firmware/imx/epdc/epdc_ED060XH2C1.fw @@ -74,6 +42,8 @@ do_install() { find ${D}${base_libdir}/firmware -type f -exec chown root:root '{}' ';' # Remove files not going to be installed + rm ${D}${base_libdir}/firmware/sdma/sdma-imx6q.bin + rm ${D}${base_libdir}/firmware/sdma/sdma-imx7d.bin find ${D}${base_libdir}/firmware/ -name '*.mk' -exec rm '{}' ';' } @@ -97,10 +67,10 @@ ALLOW_EMPTY_${PN} = "1" PACKAGES_DYNAMIC = "${PN}-vpu-* ${PN}-sdma-*" -PACKAGES =+ "${PN}-epdc ${PN}-brcm ${PN}-scfw" +PACKAGES =+ "${PN}-epdc ${PN}-scfw ${PN}-sdma" FILES_${PN}-epdc = "${base_libdir}/firmware/imx/epdc/" -FILES_${PN}-brcm = "${base_libdir}/firmware/bcm/*/*.bin ${base_libdir}/firmware/bcm/*/*.cal ${sysconfdir}/firmware/" FILES_${PN}-scfw = "${base_libdir}/firmware/scfw/" +FILES_${PN}-sdma = " ${base_libdir}/firmware/imx/sdma" -COMPATIBLE_MACHINE = "(imx)" +COMPATIBLE_MACHINE = "(imx|use-mainline-bsp)" diff --git a/bsp/meta-freescale/recipes-bsp/firmware-qca/firmware-qca.inc b/bsp/meta-freescale/recipes-bsp/firmware-qca/firmware-qca.inc new file mode 100644 index 00000000..bafd0ea8 --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/firmware-qca/firmware-qca.inc @@ -0,0 +1,15 @@ +# Copyright 2018-2019 NXP + +SUMMARY = "Qualcomm Wi-Fi and Bluetooth firmware" +SECTION = "base" +LICENSE = "Proprietary" +LIC_FILES_CHKSUM = "file://COPYING;md5=6c12031a11b81db21cdfe0be88cac4b3 \ + file://QUALCOMM_ATHEROS_LICENSE_AGREEMENT.pdf;md5=e629669cf17f6a2a6872e067582986e3 \ +" + +SRC_URI = " ${FSL_MIRROR}/firmware-qca-${PV}.bin;fsl-eula=true" +SRC_URI[md5sum] = "3569cb11300758635d2502322c5bf206" +SRC_URI[sha256sum] = "ae75308d59390e926244ad2594248c3c835ee780e94e4a92ac536429cccd286b" +S = "${WORKDIR}/firmware-qca-${PV}" + +inherit fsl-eula-unpack diff --git a/bsp/meta-freescale/recipes-bsp/firmware-qca/firmware-qca6174_3.0.1.bb b/bsp/meta-freescale/recipes-bsp/firmware-qca/firmware-qca6174_3.0.1.bb new file mode 100644 index 00000000..fd0e24f0 --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/firmware-qca/firmware-qca6174_3.0.1.bb @@ -0,0 +1,27 @@ +# Copyright 2019 NXP + +require firmware-qca.inc + +SUMMARY = "Qualcomm Wi-Fi and Bluetooth firmware" +DESCRIPTION = "Qualcomm Wi-Fi and Bluetooth firmware for modules such as QCA6174A" +SECTION = "base" +LICENSE = "Proprietary" + +inherit allarch + +do_install () { + # Install firmware.conf for QCA modules + install -d ${D}${sysconfdir}/bluetooth + install -m 644 ${S}/1CQ_QCA6174A_LEA_2.0/etc/bluetooth/firmware.conf ${D}${sysconfdir}/bluetooth + + # Install firmware files + install -d ${D}${base_libdir} + cp -r ${S}/1CQ_QCA6174A_LEA_2.0/lib/firmware ${D}${base_libdir} +} + +FILES_${PN} = " \ + ${sysconfdir}/bluetooth/firmware.conf \ + ${base_libdir}/firmware/qca6174 \ + ${base_libdir}/firmware/wlan \ + ${base_libdir}/firmware/* \ +" diff --git a/bsp/meta-freescale/recipes-bsp/firmware-qca/firmware-qca9377_3.0.1.bb b/bsp/meta-freescale/recipes-bsp/firmware-qca/firmware-qca9377_3.0.1.bb new file mode 100644 index 00000000..a1d6b0f1 --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/firmware-qca/firmware-qca9377_3.0.1.bb @@ -0,0 +1,27 @@ +# Copyright 2018-2019 NXP + +require firmware-qca.inc + +SUMMARY = "Qualcomm Wi-Fi and Bluetooth firmware" +DESCRIPTION = "Qualcomm Wi-Fi and Bluetooth firmware for modules such as QCA9377-3" +SECTION = "base" +LICENSE = "Proprietary" + +inherit allarch + +do_install () { + # Install firmware.conf for QCA modules + install -d ${D}${sysconfdir}/bluetooth + install -m 644 ${S}/1PJ_QCA9377-3_LEA_3.0/etc/bluetooth/firmware.conf ${D}${sysconfdir}/bluetooth + + # Install firmware files + install -d ${D}${base_libdir} + cp -r ${S}/1PJ_QCA9377-3_LEA_3.0/lib/firmware ${D}${base_libdir} +} + +FILES_${PN} = " \ + ${sysconfdir}/bluetooth/firmware.conf \ + ${base_libdir}/firmware/qca \ + ${base_libdir}/firmware/qca9377 \ + ${base_libdir}/firmware/wlan \ +" diff --git a/bsp/meta-freescale/recipes-bsp/firmware-qca/qca-tools_3.0.1.bb b/bsp/meta-freescale/recipes-bsp/firmware-qca/qca-tools_3.0.1.bb new file mode 100644 index 00000000..b7bf0dff --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/firmware-qca/qca-tools_3.0.1.bb @@ -0,0 +1,20 @@ +# Copyright 2018 NXP + +require firmware-qca.inc + +SUMMARY = "Qualcomm Wi-Fi and Bluetooth tools" +DESCRIPTION = "Qualcomm Wi-Fi and Bluetooth tools for modules such as QCA6174A and QCA9377" +LICENSE = "Proprietary" + +DEPENDS = "libnl zlib" + +FCC_TOOLS_FOLDER ?= "qca9377_qca6174_arm32" +FCC_TOOLS_FOLDER_aarch64 = "qca9377_qca6174_arm64" + +do_install() { + install -d ${D}${sbindir}/fcc_tools + cp -r ${S}/fcc_tools/${FCC_TOOLS_FOLDER} ${D}${sbindir}/fcc_tools +} + +COMPATIBLE_HOST = '(aarch64|arm).*-linux' +COMPATIBLE_HOST_libc-musl = 'null' diff --git a/bsp/meta-freescale/recipes-bsp/fsl-tlu/fsl-tlu_1.0.0.bb b/bsp/meta-freescale/recipes-bsp/fsl-tlu/fsl-tlu_1.0.0.bb index 131bda55..60598ae5 100644 --- a/bsp/meta-freescale/recipes-bsp/fsl-tlu/fsl-tlu_1.0.0.bb +++ b/bsp/meta-freescale/recipes-bsp/fsl-tlu/fsl-tlu_1.0.0.bb @@ -5,7 +5,7 @@ and configuration files." LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=8a71d0475d08eee76d8b6d0c6dbec543" -SRC_URI = "git://git.freescale.com/ppc/sdk/fsl-tlu.git;branch=master" +SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-yocto-sdk/fsl-tlu;protocol=https;nobranch=1" SRCREV = "8837cce3c86b30c0931c319e9e1a8ca622ae5354" S = "${WORKDIR}/git" diff --git a/bsp/meta-freescale/recipes-bsp/imx-atf/imx-atf_1.5.0.bb b/bsp/meta-freescale/recipes-bsp/imx-atf/imx-atf_2.0.bb index 9d402dba..33ed6c62 100644 --- a/bsp/meta-freescale/recipes-bsp/imx-atf/imx-atf_1.5.0.bb +++ b/bsp/meta-freescale/recipes-bsp/imx-atf/imx-atf_2.0.bb @@ -1,17 +1,17 @@ -# Copyright 2017-2018 NXP +# Copyright (C) 2017-2019 NXP DESCRIPTION = "i.MX ARM Trusted Firmware" SECTION = "BSP" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9" -PV = "1.5.0+git${SRCPV}" +PV .= "+git${SRCPV}" -SRCBRANCH = "imx_4.9.123_imx8mm_ga" +SRCBRANCH = "lf-5.4.y" SRC_URI = "git://source.codeaurora.org/external/imx/imx-atf.git;protocol=https;branch=${SRCBRANCH} \ file://0001-Allow-BUILD_STRING-to-be-set-in-.revision-file.patch \ " -SRCREV = "af3554fc6ea8c17710ffd37a14a25834fad19271" +SRCREV = "7b3389d49815f1e3f7942bd312a27ee665bd2e33" S = "${WORKDIR}/git" @@ -21,25 +21,35 @@ BOOT_TOOLS = "imx-boot-tools" PLATFORM ?= "INVALID" PLATFORM_mx8qm = "imx8qm" -PLATFORM_mx8qxp = "imx8qxp" +PLATFORM_mx8qxp = "imx8qx" PLATFORM_mx8mq = "imx8mq" PLATFORM_mx8mm = "imx8mm" +PLATFORM_mx8mn = "imx8mn" EXTRA_OEMAKE += " \ CROSS_COMPILE="${TARGET_PREFIX}" \ PLAT=${PLATFORM} \ " +BUILD_OPTEE = "${@bb.utils.contains('MACHINE_FEATURES', 'optee', 'true', 'false', d)}" + do_compile() { # Clear LDFLAGS to avoid the option -Wl recognize issue unset LDFLAGS oe_runmake bl31 + if ${BUILD_OPTEE}; then + oe_runmake clean BUILD_BASE=build-optee + oe_runmake BUILD_BASE=build-optee SPD=opteed bl31 + fi } do_install[noexec] = "1" do_deploy() { install -Dm 0644 ${S}/build/${PLATFORM}/release/bl31.bin ${DEPLOYDIR}/${BOOT_TOOLS}/bl31-${PLATFORM}.bin + if ${BUILD_OPTEE}; then + install -m 0644 ${S}/build-optee/${PLATFORM}/release/bl31.bin ${DEPLOYDIR}/${BOOT_TOOLS}/bl31-${PLATFORM}.bin-optee + fi } addtask deploy after do_compile diff --git a/bsp/meta-freescale/recipes-bsp/imx-kobs/imx-kobs_git.bb b/bsp/meta-freescale/recipes-bsp/imx-kobs/imx-kobs_git.bb index 60fcc25d..b104fafd 100644 --- a/bsp/meta-freescale/recipes-bsp/imx-kobs/imx-kobs_git.bb +++ b/bsp/meta-freescale/recipes-bsp/imx-kobs/imx-kobs_git.bb @@ -1,5 +1,5 @@ # Copyright (C) 2013-2016 Freescale Semiconductor -# Copyright 2017-2018 NXP +# Copyright (C) 2017-2019 NXP # Copyright 2018 (C) O.S. Systems Software LTDA. SUMMARY = "Nand boot write source" @@ -9,11 +9,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833" PV = "5.5+git${SRCPV}" SRC_URI = "git://github.com/NXPmicro/imx-kobs.git;protocol=https \ - file://0001-Add-missing-includes-as-pointed-out-by-musl.patch \ " -SRCREV = "a0e9adce2fb7fcd57e794d7f9a5deba0f94f521b" +SRCREV = "cee66d0e956a64d03cc866fa8819da5b798c7f1b" S = "${WORKDIR}/git" inherit autotools pkgconfig -COMPATIBLE_MACHINE = "(imx)" +COMPATIBLE_MACHINE = "(imx|use-mainline-bsp)" diff --git a/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-boot_0.2.bb b/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-boot_0.2.bb index 32d5aa28..0f13a08b 100644 --- a/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-boot_0.2.bb +++ b/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-boot_0.2.bb @@ -1,4 +1,4 @@ -# Copyright 2017-2018 NXP +# Copyright 2017-2019 NXP require imx-mkimage_git.inc @@ -7,14 +7,15 @@ LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" SECTION = "BSP" -IMX_EXTRA_FIRMWARE = "firmware-imx-8 imx-sc-firmware" +IMX_EXTRA_FIRMWARE = "firmware-imx-8 imx-sc-firmware imx-seco" IMX_EXTRA_FIRMWARE_mx8m = "firmware-imx-8m" -IMX_EXTRA_FIRMWARE_mx8x = "firmware-imx-8x imx-sc-firmware" +IMX_EXTRA_FIRMWARE_mx8x = "imx-sc-firmware imx-seco" DEPENDS += " \ - u-boot \ firmware-imx \ ${IMX_EXTRA_FIRMWARE} \ imx-atf \ + ${@bb.utils.contains('MACHINE_FEATURES', 'optee', 'optee-os', '', d)} \ + u-boot-mkimage-native \ " DEPENDS_append_mx8m = " dtc-native" BOOT_NAME = "imx-boot" @@ -31,20 +32,18 @@ do_compile[depends] += " \ virtual/bootloader:do_deploy \ ${@' '.join('%s:do_deploy' % r for r in '${IMX_EXTRA_FIRMWARE}'.split() )} \ imx-atf:do_deploy \ + ${@bb.utils.contains('MACHINE_FEATURES', 'optee', 'optee-os:do_deploy', '', d)} \ " SC_FIRMWARE_NAME ?= "scfw_tcm.bin" ATF_MACHINE_NAME ?= "bl31-imx8qm.bin" ATF_MACHINE_NAME_mx8qm = "bl31-imx8qm.bin" -ATF_MACHINE_NAME_mx8qxp = "bl31-imx8qxp.bin" +ATF_MACHINE_NAME_mx8qxp = "bl31-imx8qx.bin" ATF_MACHINE_NAME_mx8mq = "bl31-imx8mq.bin" ATF_MACHINE_NAME_mx8mm = "bl31-imx8mm.bin" -ATF_MACHINE_NAME_append = "${@bb.utils.contains('COMBINED_FEATURES', 'optee', '-optee', '', d)}" - -DCD_NAME ?= "imx8qm_dcd.cfg.tmp" -DCD_NAME_mx8qm = "imx8qm_dcd.cfg.tmp" -DCD_NAME_mx8qxp = "imx8qx_dcd.cfg.tmp" +ATF_MACHINE_NAME_mx8mn = "bl31-imx8mn.bin" +ATF_MACHINE_NAME_append = "${@bb.utils.contains('MACHINE_FEATURES', 'optee', '-optee', '', d)}" UBOOT_NAME = "u-boot-${MACHINE}.bin-${UBOOT_CONFIG}" BOOT_CONFIG_MACHINE = "${BOOT_NAME}-${MACHINE}-${UBOOT_CONFIG}.bin" @@ -56,22 +55,18 @@ SOC_TARGET_mx8qm = "iMX8QM" SOC_TARGET_mx8qxp = "iMX8QX" SOC_TARGET_mx8mq = "iMX8M" SOC_TARGET_mx8mm = "iMX8MM" +SOC_TARGET_mx8mn = "iMX8MN" + +DEPLOY_OPTEE = "${@bb.utils.contains('MACHINE_FEATURES', 'optee', 'true', 'false', d)}" IMXBOOT_TARGETS ?= \ "${@bb.utils.contains('UBOOT_CONFIG', 'fspi', 'flash_flexspi', \ bb.utils.contains('UBOOT_CONFIG', 'nand', 'flash_nand', \ 'flash flash_dcd', d), d)}" -IMXBOOT_TARGETS_mx8qxp = \ - "${@bb.utils.contains('UBOOT_CONFIG', 'fspi', 'flash_flexspi', \ - bb.utils.contains('UBOOT_CONFIG', 'nand', 'flash_nand', \ - 'flash', d), d)}" -IMXBOOT_TARGETS_mx8qxpa0 = \ - "${@bb.utils.contains('UBOOT_CONFIG', 'fspi', 'flash_flexspi_a0', \ - bb.utils.contains('UBOOT_CONFIG', 'nand', 'flash_nand_a0', \ - 'flash_a0 flash_dcd_a0', d), d)}" BOOT_STAGING = "${S}/${SOC_TARGET}" BOOT_STAGING_mx8mm = "${S}/iMX8M" +BOOT_STAGING_mx8mn = "${S}/iMX8M" SOC_FAMILY = "INVALID" SOC_FAMILY_mx8 = "mx8" @@ -79,16 +74,19 @@ SOC_FAMILY_mx8m = "mx8m" SOC_FAMILY_mx8x = "mx8x" compile_mx8m() { - bbnote 8MQ/8MM boot binary build + bbnote 8MQ/8MM/8MN boot binary build for ddr_firmware in ${DDR_FIRMWARE_NAME}; do bbnote "Copy ddr_firmware: ${ddr_firmware} from ${DEPLOY_DIR_IMAGE} -> ${BOOT_STAGING} " cp ${DEPLOY_DIR_IMAGE}/${ddr_firmware} ${BOOT_STAGING} done - cp ${DEPLOY_DIR_IMAGE}/signed_*_imx8m.bin ${BOOT_STAGING} - cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} ${BOOT_STAGING}/u-boot-spl.bin + cp ${DEPLOY_DIR_IMAGE}/signed_dp_imx8m.bin ${BOOT_STAGING} + cp ${DEPLOY_DIR_IMAGE}/signed_hdmi_imx8m.bin ${BOOT_STAGING} + cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \ + ${BOOT_STAGING}/u-boot-spl.bin cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${UBOOT_DTB_NAME} ${BOOT_STAGING} - cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/u-boot-nodtb.bin ${BOOT_STAGING} - cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/mkimage_uboot ${BOOT_STAGING} + cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/u-boot-nodtb.bin-${MACHINE}-${UBOOT_CONFIG} \ + ${BOOT_STAGING}/u-boot-nodtb.bin + cp ${STAGING_DIR_NATIVE}/${bindir}/mkimage ${BOOT_STAGING}/mkimage_uboot cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin } @@ -107,8 +105,13 @@ compile_mx8x() { cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin } do_compile() { + # mkimage_uboot requires libssl.so.1.1 from ${STAGING_LIBDIR_NATIVE} + export LD_LIBRARY_PATH=${STAGING_LIBDIR_NATIVE}:$LD_LIBRARY_PATH compile_${SOC_FAMILY} # mkimage for i.MX8 + if ${DEPLOY_OPTEE}; then + cp ${DEPLOY_DIR_IMAGE}/tee.bin ${BOOT_STAGING} + fi for target in ${IMXBOOT_TARGETS}; do bbnote "building ${SOC_TARGET} - ${target}" make SOC=${SOC_TARGET} dtbs=${UBOOT_DTB_NAME} ${target} @@ -127,34 +130,38 @@ do_install () { deploy_mx8m() { install -d ${DEPLOYDIR}/${BOOT_TOOLS} - install -m 0644 ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} ${DEPLOYDIR}/${BOOT_TOOLS} + install -m 0644 ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \ + ${DEPLOYDIR}/${BOOT_TOOLS} for ddr_firmware in ${DDR_FIRMWARE_NAME}; do install -m 0644 ${DEPLOY_DIR_IMAGE}/${ddr_firmware} ${DEPLOYDIR}/${BOOT_TOOLS} done - install -m 0644 ${DEPLOY_DIR_IMAGE}/signed_hdmi*.bin ${DEPLOYDIR}/${BOOT_TOOLS} + install -m 0644 ${BOOT_STAGING}/signed_dp_imx8m.bin ${DEPLOYDIR}/${BOOT_TOOLS} + install -m 0644 ${BOOT_STAGING}/signed_hdmi_imx8m.bin ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0755 ${BOOT_STAGING}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0755 ${BOOT_STAGING}/mkimage_fit_atf.sh ${DEPLOYDIR}/${BOOT_TOOLS} } deploy_mx8() { install -d ${DEPLOYDIR}/${BOOT_TOOLS} - install -m 0644 ${BOOT_STAGING}/${DCD_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0644 ${BOOT_STAGING}/mx8qm-ahab-container.img ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0755 ${S}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} } deploy_mx8x() { install -d ${DEPLOYDIR}/${BOOT_TOOLS} - if [ "${MACHINE}" = "imx8qxpa0mek" ]; then - install -m 0644 ${BOOT_STAGING}/${DCD_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} - fi install -m 0644 ${BOOT_STAGING}/mx8qx-ahab-container.img ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0755 ${S}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} } do_deploy() { deploy_${SOC_FAMILY} # copy the tool mkimage to deploy path and sc fw, dcd and uboot - install -m 0644 ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} + install -m 0644 ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} + + # copy tee.bin to deploy path + if ${DEPLOY_OPTEE}; then + install -m 0644 ${DEPLOY_DIR_IMAGE}/tee.bin ${DEPLOYDIR}/${BOOT_TOOLS} + fi + # copy makefile (soc.mak) for reference - install -m 0644 ${BOOT_STAGING}/soc.mak ${DEPLOYDIR}/${BOOT_TOOLS} + install -m 0644 ${BOOT_STAGING}/soc.mak ${DEPLOYDIR}/${BOOT_TOOLS} # copy the generated boot image to deploy path for target in ${IMXBOOT_TARGETS}; do # Use first "target" as IMAGE_IMXBOOT_TARGET diff --git a/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-mkimage_git.inc b/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-mkimage_git.inc index a8cd930b..6e417722 100644 --- a/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-mkimage_git.inc +++ b/bsp/meta-freescale/recipes-bsp/imx-mkimage/imx-mkimage_git.inc @@ -1,10 +1,10 @@ -# Copyright 2017-2018 NXP +# Copyright 2017-2019 NXP DEPENDS = "zlib-native openssl-native" -SRCBRANCH = "imx_4.9.123_imx8mm_ga" +SRCBRANCH = "lf-5.4.y" SRC_URI = "git://source.codeaurora.org/external/imx/imx-mkimage.git;protocol=https;branch=${SRCBRANCH}" -SRCREV = "9e289f314eddb9d38cab73780b936acb30bb88b4" +SRCREV = "1c2277b95ce59f5d0265f26fec522e2ac2581e59" S = "${WORKDIR}/git" BOOT_TOOLS = "imx-boot-tools" diff --git a/bsp/meta-freescale/recipes-bsp/imx-sc-firmware/imx-sc-firmware_0.9.bb b/bsp/meta-freescale/recipes-bsp/imx-sc-firmware/imx-sc-firmware_1.2.7.1.bb index 329d4dc1..3bf7024c 100644 --- a/bsp/meta-freescale/recipes-bsp/imx-sc-firmware/imx-sc-firmware_0.9.bb +++ b/bsp/meta-freescale/recipes-bsp/imx-sc-firmware/imx-sc-firmware_1.2.7.1.bb @@ -1,17 +1,17 @@ # Copyright (C) 2016 Freescale Semiconductor -# Copyright 2017-2018 NXP +# Copyright (C) 2017-2019 NXP DESCRIPTION = "i.MX System Controller Firmware" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=5ab1a30d0cd181e3408077727ea5a2db" +LICENSE = "Proprietary" +LIC_FILES_CHKSUM = "file://COPYING;md5=6c12031a11b81db21cdfe0be88cac4b3" SECTION = "BSP" inherit fsl-eula-unpack deploy -SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true" +SRC_URI = "${FSL_MIRROR}/${BPN}-${PV}.bin;fsl-eula=true" -SRC_URI[md5sum] = "3246a44a242b68fae601561a80d5925c" -SRC_URI[sha256sum] = "00024e0dd332b402df03b62eac9a515fabc903568d0ad7f30fabc7c98b494f15" +SRC_URI[md5sum] = "b9d81d0c4cb7871e62dfe7b26d203240" +SRC_URI[sha256sum] = "5a28180217975f3d78fcfac15e46b0a942910fadf078e4af76deb6dc498136ed" BOARD_TYPE ?= "mek" SC_FIRMWARE_NAME ?= "mx8qm-mek-scfw-tcm.bin" diff --git a/bsp/meta-freescale/recipes-bsp/imx-seco/imx-seco_2.3.1.bb b/bsp/meta-freescale/recipes-bsp/imx-seco/imx-seco_2.3.1.bb new file mode 100644 index 00000000..b86ea0b6 --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/imx-seco/imx-seco_2.3.1.bb @@ -0,0 +1,30 @@ +# Copyright 2019 NXP + +SUMMARY = "NXP i.MX SECO firmware" +DESCRIPTION = "NXP IMX SECO firmware" +SECTION = "base" +LICENSE = "Proprietary" +LIC_FILES_CHKSUM = "file://COPYING;md5=fb0303e4ee8b0e71c094171e2272bd44" + +inherit fsl-eula-unpack deploy + +SRC_URI = "${FSL_MIRROR}/${BPN}-${PV}.bin;fsl-eula=true " + +SRC_URI[md5sum] = "cf8d6bbf93f0aa6e1049f1098a0f7e0f" +SRC_URI[sha256sum] = "b429ac58b2ea1771b3fdf7ae87bf1d37ccaf596bde01a5ecccae27b2145f6824" + +do_compile[noexec] = "1" + +do_install[noexec] = "1" + +SECO_FIRMWARE_NAME ?= "mx8qm-ahab-container.img" +SECO_FIRMWARE_NAME_mx8qm = "mx8qm-ahab-container.img" +SECO_FIRMWARE_NAME_mx8x = "mx8qx-ahab-container.img" + +addtask deploy after do_install +do_deploy () { + # Deploy i.MX8 SECO firmware files + install -m 0644 ${S}/firmware/seco/${SECO_FIRMWARE_NAME} ${DEPLOYDIR} +} + +COMPATIBLE_MACHINE = "(mx8qm|mx8x)" diff --git a/bsp/meta-freescale/recipes-bsp/imx-test/imx-test/0001-mxc_v4l2_test-fix-compilation-error-produced-by-gcc9.patch b/bsp/meta-freescale/recipes-bsp/imx-test/imx-test/0001-mxc_v4l2_test-fix-compilation-error-produced-by-gcc9.patch new file mode 100644 index 00000000..3fb9d4ef --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/imx-test/imx-test/0001-mxc_v4l2_test-fix-compilation-error-produced-by-gcc9.patch @@ -0,0 +1,39 @@ +From d2e35983281a811b38e540ab82e7643322e84aab Mon Sep 17 00:00:00 2001 +From: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com> +Date: Wed, 4 Dec 2019 14:17:50 +0000 +Subject: [PATCH] mxc_v4l2_test: fix compilation error produced by gcc9 + +Fix trivial compilation error when GCC9 is used: + +error: call to '__open_missing_mode' declared with attribute error: open +with O_CREAT or O_TMPFILE in second argument needs 3 arguments + +This is now caused by not explicitly supplying the mode when O_CREAT is +used as disposition. + +Upstream-Status: Pending + +Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com> +--- + test/mxc_v4l2_test/mx8_v4l2_cap_drm.c | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/test/mxc_v4l2_test/mx8_v4l2_cap_drm.c b/test/mxc_v4l2_test/mx8_v4l2_cap_drm.c +index 6e10744..d63b2db 100644 +--- a/test/mxc_v4l2_test/mx8_v4l2_cap_drm.c ++++ b/test/mxc_v4l2_test/mx8_v4l2_cap_drm.c +@@ -561,11 +561,7 @@ static int open_save_file(struct video_channel *video_ch) + + for (i = 0; i < NUM_SENSORS; i++) { + if ((g_cam >> i) & 0x01) { +-#ifdef BUILD_FOR_ANDROID + fd = open(video_ch[i].save_file_name, O_RDWR | O_CREAT, 0660); +-#else +- fd = open(video_ch[i].save_file_name, O_RDWR | O_CREAT); +-#endif + if (fd < 0) { + v4l2_err("Channel[%d] unable to create recording file\n", i); + while (i) +-- +2.17.1 + diff --git a/bsp/meta-freescale/recipes-bsp/imx-test/imx-test/0001-test-Makefile-Add-include-path-to-CC-command.patch b/bsp/meta-freescale/recipes-bsp/imx-test/imx-test/0001-test-Makefile-Add-include-path-to-CC-command.patch deleted file mode 100644 index 8387a17c..00000000 --- a/bsp/meta-freescale/recipes-bsp/imx-test/imx-test/0001-test-Makefile-Add-include-path-to-CC-command.patch +++ /dev/null @@ -1,27 +0,0 @@ -From d289d905c64882c58e3b99f74f68e72f9100115e Mon Sep 17 00:00:00 2001 -From: Fabio Berton <fabio.berton@ossystems.com.br> -Date: Tue, 12 Jun 2018 14:58:40 -0300 -Subject: [PATCH] test/Makefile: Add include path to CC command -Organization: O.S. Systems Software LTDA. - -Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br> ---- - test/Makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/test/Makefile b/test/Makefile -index f1cfa2a..4f14d2c 100644 ---- a/test/Makefile -+++ b/test/Makefile -@@ -12,7 +12,7 @@ ALL_OBJS := - - %.o: %.c - @echo " CC $@" -- $(Q)$(CC) -c $(CFLAGS) $< -o $@ -+ $(Q)$(CC) -c $(CFLAGS) $(INC) $< -o $@ - - - # This creates the build and copy rules for one executable. Because we --- -2.17.1 - diff --git a/bsp/meta-freescale/recipes-bsp/imx-test/imx-test_git.bb b/bsp/meta-freescale/recipes-bsp/imx-test/imx-test_git.bb index bf55f7df..81bbd3a3 100644 --- a/bsp/meta-freescale/recipes-bsp/imx-test/imx-test_git.bb +++ b/bsp/meta-freescale/recipes-bsp/imx-test/imx-test_git.bb @@ -1,6 +1,6 @@ -# Copyright (C) 2012-2018 O.S. Systems Software LTDA. +# Copyright (C) 2012-2016 O.S. Systems Software LTDA. # Copyright (C) 2013-2016 Freescale Semiconductor -# Copyright 2017-2018 NXP +# Copyright (C) 2017-2019 NXP SUMMARY = "Test programs for i.MX BSP" DESCRIPTION = "Unit tests for the i.MX BSP" @@ -16,13 +16,13 @@ DEPENDS_append_imxvpu = " virtual/imxvpu" PE = "1" PV = "7.0+${SRCPV}" -SRCBRANCH = "imx_4.9.123_imx8mm_ga" +SRCBRANCH = "lf-5.4.y" SRC_URI = " \ git://source.codeaurora.org/external/imx/imx-test.git;protocol=https;branch=${SRCBRANCH} \ - file://0001-test-Makefile-Add-include-path-to-CC-command.patch \ + file://0001-mxc_v4l2_test-fix-compilation-error-produced-by-gcc9.patch \ file://memtool_profile \ " -SRCREV = "2cc785f94e5ee8782083d941e6aef24952cc2a38" +SRCREV = "6d20e84f2dbe5940fe6d629c2839e1390994ee1f" S = "${WORKDIR}/git" inherit module-base use-imx-headers @@ -30,15 +30,15 @@ inherit module-base use-imx-headers INHIBIT_PACKAGE_STRIP = "1" INHIBIT_PACKAGE_DEBUG_SPLIT = "1" -PLATFORM_mx6q = "IMX6Q" -PLATFORM_mx6dl = "IMX6Q" -PLATFORM_mx6sl = "IMX6SL" +PLATFORM_mx6q = "IMX6Q" +PLATFORM_mx6dl = "IMX6Q" +PLATFORM_mx6sl = "IMX6SL" PLATFORM_mx6sll = "IMX6SL" -PLATFORM_mx6sx = "IMX6SX" -PLATFORM_mx6ul = "IMX6UL" -PLATFORM_mx7d = "IMX7D" +PLATFORM_mx6sx = "IMX6SX" +PLATFORM_mx6ul = "IMX6UL" +PLATFORM_mx7d = "IMX7D" PLATFORM_mx7ulp = "IMX7D" -PLATFORM_mx8 = "IMX8" +PLATFORM_mx8 = "IMX8" PARALLEL_MAKE = "-j 1" EXTRA_OEMAKE += "${PACKAGECONFIG_CONFARGS}" @@ -49,9 +49,6 @@ PACKAGECONFIG_append_imxvpu = " vpu" PACKAGECONFIG[x11] = ",,libx11 libxdamage libxrender libxrandr" PACKAGECONFIG[vpu] = "HAS_VPU=true,HAS_VPU=false,virtual/imxvpu" -# FIXME: NXP should fix the possible string flaws from their code. -SECURITY_STRINGFORMAT = "" - do_compile() { CFLAGS="${TOOLCHAIN_OPTIONS}" oe_runmake V=1 VERBOSE='' \ @@ -82,5 +79,3 @@ FILES_${PN} += "/unit_tests /home/root/.profile" RDEPENDS_${PN} = "bash" FILES_${PN}-dbg += "/unit_tests/.debug" - -COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" diff --git a/bsp/meta-freescale/recipes-bsp/imx-uuc/imx-uuc_git.bb b/bsp/meta-freescale/recipes-bsp/imx-uuc/imx-uuc_git.bb index ddc55db3..9fe9614a 100644 --- a/bsp/meta-freescale/recipes-bsp/imx-uuc/imx-uuc_git.bb +++ b/bsp/meta-freescale/recipes-bsp/imx-uuc/imx-uuc_git.bb @@ -1,20 +1,21 @@ # Copyright (C) 2016 Freescale Semiconductor - -SUMMARY = "A Daemon wait for Freescale/NXP mfgtools host's command" +# Copyright (C) 2017-2019 NXP +SUMMARY = "A Daemon wait for NXP mfgtools host's command" SECTION = "base" -DEPENDS = "dosfstools-native" +DEPENDS = "virtual/kernel dosfstools-native" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" inherit autotools-brokensep +PR = "r1" PV = "0.5.1+git${SRCPV}" SRC_URI = "git://github.com/NXPmicro/imx-uuc.git;protocol=https" -SRCREV = "e3fbdfef978abd150d9ea71c4d174daded9c8d33" +SRCREV = "ebb7d34853133d92eff9766e370ea21e6d6d8f2b" S = "${WORKDIR}/git" FILES_${PN} += "/linuxrc /fat" -COMPATIBLE_MACHINE = "(imx)" +COMPATIBLE_MACHINE = "(imx|use-mainline-bsp)" diff --git a/bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro/0001-Get-i.MX-custom-headers-from-usr-include-imx.patch b/bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro/0001-Get-i.MX-custom-headers-from-usr-include-imx.patch deleted file mode 100644 index a41641df..00000000 --- a/bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro/0001-Get-i.MX-custom-headers-from-usr-include-imx.patch +++ /dev/null @@ -1,49 +0,0 @@ -From a277191d6e7d775b1c081f8b25734f6f962ade14 Mon Sep 17 00:00:00 2001 -From: Tom Hochstein <tom.hochstein@nxp.com> -Date: Thu, 4 Oct 2018 10:34:00 -0500 -Subject: [PATCH] Get i.MX custom headers from /usr/include/imx - -Upstream-Status: Pending - -Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com> ---- - Makefile_G1G2 | 5 ++--- - Makefile_H1 | 3 +-- - 2 files changed, 3 insertions(+), 5 deletions(-) - -diff --git a/Makefile_G1G2 b/Makefile_G1G2 -index caab40f..5b55a8b 100755 ---- a/Makefile_G1G2 -+++ b/Makefile_G1G2 -@@ -6,12 +6,11 @@ SOURCE_ROOT = decoder_sw/software - OMX_ROOT = openmax_il - - INCLUDE_HEADERS = -I./decoder_sw -I$(SOURCE_ROOT)/source/inc -I$(SOURCE_ROOT)/source/hevc \ -- -I$(SOURCE_ROOT)/source/config -I$(SOURCE_ROOT)/source/dwl -I$(SOURCE_ROOT)/source/common -I$(SOURCE_ROOT)/source/vp9 \ -- -I$(SDKTARGETSYSROOT)/usr/imx/include -+ -I$(SOURCE_ROOT)/source/config -I$(SOURCE_ROOT)/source/dwl -I$(SOURCE_ROOT)/source/common -I$(SOURCE_ROOT)/source/vp9 - - INCLUDE_HEADERS += -I$(SOURCE_ROOT)/linux/memalloc - #INCLUDE_HEADERS += -I$(SOURCE_ROOT)/linux/ldriver --INCLUDE_HEADERS += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include -+INCLUDE_HEADERS += -I$(SDKTARGETSYSROOT)/usr/include/imx - - CFLAGS += -DDEC_MODULE_PATH=\"/dev/mxc_hantro\" -DUSE_FAKE_RFC_TABLE -DFIFO_DATATYPE=void* -DNDEBUG -DDOWN_SCALER \ - -DUSE_EXTERNAL_BUFFER -DUSE_FAST_EC -DUSE_VP9_EC -DGET_FREE_BUFFER_NON_BLOCK \ -diff --git a/Makefile_H1 b/Makefile_H1 -index 9ca1aa9..237f53a 100755 ---- a/Makefile_H1 -+++ b/Makefile_H1 -@@ -17,8 +17,7 @@ ENV += -DMEMALLOC_MODULE_PATH=\\\"/dev/ion\\\" - #ENV += -DSDRAM_LM_BASE=0x00000000 - ENV += -DEWL_NO_HW_TIMEOUT - ENV += -DUSE_ION --ENV += -I$(LINUX_KERNEL_ROOT)/include/uapi -I$(LINUX_KERNEL_ROOT)/include --ENV += -I$(SDKTARGETSYSROOT)/usr/imx/include -+ENV += -I$(SDKTARGETSYSROOT)/usr/include/imx - - LIBENCNAME = libcodec_enc - LIBSENC = -L./ -lhantro_h1 -lpthread --- -2.7.4 - diff --git a/bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro_1.8.0.bb b/bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro_1.16.0.bb index a330c7b0..67dbc8da 100644 --- a/bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro_1.8.0.bb +++ b/bsp/meta-freescale/recipes-bsp/imx-vpu-hantro/imx-vpu-hantro_1.16.0.bb @@ -2,16 +2,15 @@ DESCRIPTION = "i.MX Hantro VPU library" LICENSE = "Proprietary" -LIC_FILES_CHKSUM = "file://COPYING;md5=5ab1a30d0cd181e3408077727ea5a2db" +LIC_FILES_CHKSUM = "file://COPYING;md5=fd4b227530cd88a82af6a5982cfb724d" PROVIDES = "virtual/imxvpu" SRC_URI = " \ - ${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true \ - file://0001-Get-i.MX-custom-headers-from-usr-include-imx.patch \ + ${FSL_MIRROR}/${BPN}-${PV}.bin;fsl-eula=true \ " -SRC_URI[md5sum] = "140796ddd6f1be47cffb7e5e2bfe0fb6" -SRC_URI[sha256sum] = "c092a5b0f8897bae54154f58e47b6d2de033da01ee231a8cd779a51bbe962606" +SRC_URI[md5sum] = "79ca586c67ea9b007fa772df8959c852" +SRC_URI[sha256sum] = "1f373f5d9a37754f7936f9bf4b134b65afe98459c0383b63c50c1f6ecba49e25" inherit fsl-eula-unpack use-imx-headers diff --git a/bsp/meta-freescale/recipes-bsp/imx-vpu/imx-vpu_5.4.38.bb b/bsp/meta-freescale/recipes-bsp/imx-vpu/imx-vpu_5.4.39.2.bb index 185bb3d1..43377b1e 100644 --- a/bsp/meta-freescale/recipes-bsp/imx-vpu/imx-vpu_5.4.38.bb +++ b/bsp/meta-freescale/recipes-bsp/imx-vpu/imx-vpu_5.4.39.2.bb @@ -4,16 +4,16 @@ DESCRIPTION = "Freescale Chips&Media VPU library" LICENSE = "Proprietary" -LIC_FILES_CHKSUM = "file://COPYING;md5=75abe2fa1d16ca79f87cde926f05f72d" +LIC_FILES_CHKSUM = "file://COPYING;md5=6c12031a11b81db21cdfe0be88cac4b3" PROVIDES = "virtual/imxvpu" PE = "1" -SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true" +SRC_URI = "${FSL_MIRROR}/${BPN}-${PV}.bin;fsl-eula=true" -SRC_URI[md5sum] = "521d5f839829f8d1f2a6a0e60270243e" -SRC_URI[sha256sum] = "34bed0ddf6c797f444bddfa5d5495adc751ff268b6431d8beb48129c89c9e47f" +SRC_URI[md5sum] = "fb11619e07dafbc46a335c7db4c9b9a2" +SRC_URI[sha256sum] = "604885463ca7d292ddf376795ee95ae32abcc60512a3378e016b173222362900" inherit fsl-eula-unpack use-imx-headers diff --git a/bsp/meta-freescale/recipes-bsp/inphi/inphi_git.bb b/bsp/meta-freescale/recipes-bsp/inphi/inphi_git.bb index c0c8a776..3f3c5f28 100644 --- a/bsp/meta-freescale/recipes-bsp/inphi/inphi_git.bb +++ b/bsp/meta-freescale/recipes-bsp/inphi/inphi_git.bb @@ -2,9 +2,9 @@ SUMMARY = "Firmwares and Standalone Applications" LICENSE = "NXP-Binary-EULA" LIC_FILES_CHKSUM = "file://EULA.txt;md5=86d76166990962fa552f840ff08e5798" -inherit deploy fsl-eula-unpack +inherit deploy -SRC_URI = "git://github.com/nxp/qoriq-firmware-inphi.git;fsl-eula=true;nobranch=1" +SRC_URI = "git://github.com/nxp/qoriq-firmware-inphi.git;nobranch=1" SRCREV = "f22e9ff3bfed8342da6efb699e473b11fbad5695" S = "${WORKDIR}/git" diff --git a/bsp/meta-freescale/recipes-bsp/libimxdmabuffer/files/run-ptest b/bsp/meta-freescale/recipes-bsp/libimxdmabuffer/files/run-ptest new file mode 100644 index 00000000..09f69a8d --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/libimxdmabuffer/files/run-ptest @@ -0,0 +1,10 @@ +#!/bin/sh + +./test-alloc >/dev/null 2>&1 + +if [ $? -eq 0 ]; then + echo "PASS: test-alloc" +else + echo "FAIL: test-alloc" +fi + diff --git a/bsp/meta-freescale/recipes-bsp/libimxdmabuffer/libimxdmabuffer_1.0.1.bb b/bsp/meta-freescale/recipes-bsp/libimxdmabuffer/libimxdmabuffer_1.0.1.bb new file mode 100644 index 00000000..9b918f2c --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/libimxdmabuffer/libimxdmabuffer_1.0.1.bb @@ -0,0 +1,46 @@ +DESCRIPTION = 'Library for allocating and managing physically contiguous memory \ + ("DMA memory" or "DMA buffers") on i.MX devices.' +HOMEPAGE = "https://github.com/Freescale/libimxdmabuffer" +LICENSE = "LGPLv2.1" +LIC_FILES_CHKSUM = "file://LICENSE;md5=38fa42a5a6425b26d2919b17b1527324" +SECTION = "base" + +PV .= "+git${SRCPV}" + +SRCBRANCH ?= "master" +SRCREV = "d2058aa404ee1e8e8abd552c6a637787bcdcf514" +SRC_URI = "git://github.com/Freescale/libimxdmabuffer.git;branch=${SRCBRANCH} \ + file://run-ptest \ + " + + +S = "${WORKDIR}/git" + +inherit pkgconfig waf use-imx-headers ptest + +EXTRA_OECONF = "--imx-linux-headers-path=${STAGING_INCDIR_IMX} \ + --libdir=${libdir} \ + ${PACKAGECONFIG_CONFARGS}" + +PACKAGECONFIG ?= " " +PACKAGECONFIG_append_imxgpu2d = " g2d" +PACKAGECONFIG_append_imxipu = " ipu" +PACKAGECONFIG_append_imxpxp = " pxp" +PACKAGECONFIG_append_mx8m = " dwl ion" + +HANTRO_CONF = "--hantro-headers-path=${STAGING_INCDIR}/hantro_dec --hantro-decoder-version=G2" + +PACKAGECONFIG[dwl] = "--with-dwl-allocator=yes ${HANTRO_CONF},--with-dwl-allocator=no,imx-vpu-hantro" +PACKAGECONFIG[ion] = "--with-ion-allocator=yes, --with-ion-allocator=no," +PACKAGECONFIG[ipu] = "--with-ipu-allocator=yes, --with-ipu-allocator=no," +PACKAGECONFIG[g2d] = "--with-g2d-allocator=yes, --with-g2d-allocator=no,virtual/libg2d" +PACKAGECONFIG[pxp] = "--with-pxp-allocator=yes, --with-pxp-allocator=no," + +# Using do_install_ptest_base instead of do_install_ptest, since +# the default do_install_ptest_base is hardcoded to expect Makefiles. +do_install_ptest_base() { + install -D ${WORKDIR}/run-ptest ${D}${PTEST_PATH}/run-ptest + install -m 0755 ${B}/test-alloc ${D}${PTEST_PATH} +} + +COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" diff --git a/bsp/meta-freescale/recipes-bsp/ls2-phy/ls2-phy_git.bb b/bsp/meta-freescale/recipes-bsp/ls2-phy/ls2-phy_git.bb index 18a63b13..a1c412be 100644 --- a/bsp/meta-freescale/recipes-bsp/ls2-phy/ls2-phy_git.bb +++ b/bsp/meta-freescale/recipes-bsp/ls2-phy/ls2-phy_git.bb @@ -2,9 +2,9 @@ SUMMARY = "Firmwares and Standalone Applications" LICENSE = "NXP-Binary-EULA" LIC_FILES_CHKSUM = "file://EULA.txt;md5=86d76166990962fa552f840ff08e5798" -inherit deploy fsl-eula-unpack +inherit deploy -SRC_URI = "git://github.com/nxp/qoriq-firmware-cortina.git;fsl-eula=true;nobranch=1" +SRC_URI = "git://github.com/nxp/qoriq-firmware-cortina.git;nobranch=1" SRCREV = "9143c2a3adede595966583c00ca4edc99ec698cf" S = "${WORKDIR}/git" @@ -23,6 +23,6 @@ addtask deploy before do_build after do_install PACKAGES += "${PN}-image" FILES_${PN}-image += "/boot" -COMPATIBLE_MACHINE = "(ls2080ardb|ls2088ardb|t2080|t4240|lx2160a)" +COMPATIBLE_MACHINE = "(qoriq)" PACKAGE_ARCH = "${MACHINE_ARCH}" diff --git a/bsp/meta-freescale/recipes-bsp/mc-utils/mc-utils_git.bb b/bsp/meta-freescale/recipes-bsp/mc-utils/mc-utils_git.bb index 430d6cd8..31645061 100644 --- a/bsp/meta-freescale/recipes-bsp/mc-utils/mc-utils_git.bb +++ b/bsp/meta-freescale/recipes-bsp/mc-utils/mc-utils_git.bb @@ -10,7 +10,7 @@ DEPENDS += "dtc-native" inherit deploy SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/mc-utils;nobranch=1" -SRCREV = "6aca560c630dc54afdef382c506f214b28f4985e" +SRCREV = "8672a5f5abcd3a354dcab07e03f2a8a69b2e962d" S = "${WORKDIR}/git" @@ -19,24 +19,28 @@ MC_CFG_ls1088a = "ls1088a" MC_CFG_ls2088a = "ls2088a" MC_CFG_lx2160a = "lx2160a" -do_install () { +MC_FLAVOUR ?= "RDB" + +do_compile () { oe_runmake -C config +} +do_install () { install -d ${D}/boot/mc-utils - cp -r ${S}/config/${MC_CFG}/RDB/*.dtb ${D}/boot/mc-utils - if [ -d ${S}/config/${MC_CFG}/RDB/custom/ ]; then - install -d ${D}/boot/mc-utils/custom - cp -r ${S}/config/${MC_CFG}/RDB/custom/*.dtb ${D}/boot/mc-utils/custom - fi + cp -r ${S}/config/${MC_CFG}/${MC_FLAVOUR}/*.dtb ${D}/boot/mc-utils + if [ -d ${S}/config/${MC_CFG}/${MC_FLAVOUR}/custom/ ]; then + install -d ${D}/boot/mc-utils/custom + cp -r ${S}/config/${MC_CFG}/${MC_FLAVOUR}/custom/*.dtb ${D}/boot/mc-utils/custom + fi } do_deploy () { install -d ${DEPLOYDIR}/mc-utils - cp -r ${S}/config/${MC_CFG}/RDB/*.dtb ${DEPLOYDIR}/mc-utils - if [ -d ${S}/config/${MC_CFG}/RDB/custom/ ]; then - install -d ${DEPLOYDIR}/mc-utils/custom - cp -r ${S}/config/${MC_CFG}/RDB/custom/*.dtb ${DEPLOYDIR}/mc-utils/custom - fi + cp -r ${S}/config/${MC_CFG}/${MC_FLAVOUR}/*.dtb ${DEPLOYDIR}/mc-utils + if [ -d ${S}/config/${MC_CFG}/${MC_FLAVOUR}/custom/ ]; then + install -d ${DEPLOYDIR}/mc-utils/custom + cp -r ${S}/config/${MC_CFG}/${MC_FLAVOUR}/custom/*.dtb ${DEPLOYDIR}/mc-utils/custom + fi } addtask deploy after do_install diff --git a/bsp/meta-freescale/recipes-bsp/ppfe-firmware/ppfe-firmware_git.bb b/bsp/meta-freescale/recipes-bsp/ppfe-firmware/ppfe-firmware_git.bb index b94d88c4..fd53807f 100644 --- a/bsp/meta-freescale/recipes-bsp/ppfe-firmware/ppfe-firmware_git.bb +++ b/bsp/meta-freescale/recipes-bsp/ppfe-firmware/ppfe-firmware_git.bb @@ -5,10 +5,10 @@ LIC_FILES_CHKSUM = "file://NXP-Binary-EULA.txt;md5=92723670f432558b9e2494ed177d2 INHIBIT_DEFAULT_DEPS = "1" -inherit deploy fsl-eula-unpack +inherit deploy -SRC_URI = "git://github.com/NXP/qoriq-engine-pfe-bin.git;fsl-eula=true;nobranch=1" -SRCREV = "58aa0cac630528ed91fe5639700d6b571c0c07b5" +SRC_URI = "git://github.com/NXP/qoriq-engine-pfe-bin.git;nobranch=1" +SRCREV = "d3a8ef0760c54ddc243039c86389497e37be90ab" S = "${WORKDIR}/git" diff --git a/bsp/meta-freescale/recipes-bsp/qe-ucode/qe-ucode_git.bb b/bsp/meta-freescale/recipes-bsp/qe-ucode/qe-ucode_git.bb index 1af630a6..cecd5903 100644 --- a/bsp/meta-freescale/recipes-bsp/qe-ucode/qe-ucode_git.bb +++ b/bsp/meta-freescale/recipes-bsp/qe-ucode/qe-ucode_git.bb @@ -3,36 +3,27 @@ SECTION = "qe-ucode" LICENSE = "NXP-Binary-EULA" LIC_FILES_CHKSUM = "file://NXP-Binary-EULA;md5=c62f8109b4df15ca37ceeb5e4943626c" -inherit deploy fsl-eula-unpack +inherit deploy -SRC_URI = "git://github.com/NXP/qoriq-qe-ucode.git;fsl-eula=true;nobranch=1" +SRC_URI = "git://github.com/NXP/qoriq-qe-ucode.git;nobranch=1" SRCREV= "57401f6dff6507055558eaa6838116baa8a2fd46" S = "${WORKDIR}/git" -python () { - if not d.getVar("QE_UCODE", True): - PN = d.getVar("PN", True) - FILE = os.path.basename(d.getVar("FILE", True)) - bb.debug(1, "To build %s, see %s for instructions on \ - setting up your qe-ucode" % (PN, FILE)) - raise bb.parse.SkipRecipe("because QE_UCODE is not set") -} - do_install () { install -d ${D}/boot - install -m 644 ${B}/${QE_UCODE} ${D}/boot + install -m 644 ${B}/*.bin ${D}/boot } do_deploy () { install -d ${DEPLOYDIR}/boot - install -m 644 ${B}/${QE_UCODE} ${DEPLOYDIR}/boot + install -m 644 ${B}/*.bin ${DEPLOYDIR}/boot } addtask deploy before do_build after do_install PACKAGES += "${PN}-image" FILES_${PN}-image += "/boot/*" -COMPATIBLE_MACHINE = "(ls1021a|ls1043a|t1042|t1024)" +COMPATIBLE_MACHINE = "(qoriq)" PACKAGE_ARCH = "${MACHINE_SOCARCH}" diff --git a/bsp/meta-freescale/recipes-bsp/rcw/rcw_git.bb b/bsp/meta-freescale/recipes-bsp/rcw/rcw_git.bb index c6bdad23..e1e63cce 100644 --- a/bsp/meta-freescale/recipes-bsp/rcw/rcw_git.bb +++ b/bsp/meta-freescale/recipes-bsp/rcw/rcw_git.bb @@ -1,30 +1,32 @@ SUMMARY = "Reset Configuration Word" DESCRIPTION = "Reset Configuration Word - hardware boot-time parameters for the QorIQ targets" LICENSE = "BSD" -LIC_FILES_CHKSUM = "file://LICENSE;md5=45a017ee5f4cfe64b1cddf2eb06cffc7" +LIC_FILES_CHKSUM = "file://LICENSE;md5=44a0d0fad189770cc022af4ac6262cbe" -DEPENDS += "change-file-endianess-native tcl-native" +DEPENDS += "tcl-native" inherit deploy siteinfo SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/rcw;nobranch=1" -SRCREV = "17254ac35250197877c6321f9d13e33b1f85388a" +SRCREV = "e0fab6d9b61003caef577f7474c2fac61e6ba2ff" S = "${WORKDIR}/git" -export PYTHON = "${USRBINPATH}/python2" +export PYTHON = "${USRBINPATH}/python3" -M="${@d.getVar('MACHINE', True).replace('-64b','').replace('-32b','').replace('-${SITEINFO_ENDIANNESS}','')}" +M="${@d.getVar('MACHINE').replace('-64b','').replace('-32b','').replace('-${SITEINFO_ENDIANNESS}','')}" + +BOARD_TARGETS="${M}" +BOARD_TARGETS_ls2088ardb="${M} ${M}_rev1.1" +BOARD_TARGETS_ls1088ardb-pb="ls1088ardb" +BOARD_TARGETS_lx2160ardb = "${M} ${M}_rev2" + +do_compile () { + oe_runmake BOARDS="${BOARD_TARGETS}" DESTDIR=${D}/boot/rcw/ +} do_install () { - if [ ${M} = ls2088ardb ]; then - oe_runmake BOARDS=${M} DESTDIR=${D}/boot/rcw/ install - oe_runmake BOARDS=${M}_rev1.1 DESTDIR=${D}/boot/rcw/ install - elif [ ${M} = ls1088ardb-pb ]; then - oe_runmake BOARDS=ls1088ardb DESTDIR=${D}/boot/rcw/ install - else - oe_runmake BOARDS=${M} DESTDIR=${D}/boot/rcw/ install - fi + oe_runmake BOARDS="${BOARD_TARGETS}" DESTDIR=${D}/boot/rcw/ install } do_deploy () { diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-common_2018.11.inc b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-common_2020.04.inc index 53496b7b..1ccd0d17 100644 --- a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-common_2018.11.inc +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-common_2020.04.inc @@ -10,9 +10,10 @@ DEPENDS += "bison-native" SRC_URI = "git://github.com/Freescale/u-boot-fslc.git;branch=${SRCBRANCH}" -SRCREV = "6e25ce6f3c8568b9618de6569794a29a05e1b7a4" -SRCBRANCH = "2018.11+fslc" +SRCREV = "a266838009e02b369b51f4139c6ac64facb12d34" +SRCBRANCH = "2020.04+fslc" -PV = "v2018.11+git${SRCPV}" +PV = "v2020.04+git${SRCPV}" S = "${WORKDIR}/git" +B = "${WORKDIR}/build" diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-fw-utils_2018.11.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-fw-utils_2018.11.bb deleted file mode 100644 index a809a3f6..00000000 --- a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-fw-utils_2018.11.bb +++ /dev/null @@ -1,45 +0,0 @@ -require u-boot-fslc-common_${PV}.inc - -SUMMARY = "U-Boot bootloader fw_printenv/setenv utilities" -DEPENDS += "mtd-utils" - -INSANE_SKIP_${PN} = "already-stripped" -EXTRA_OEMAKE_class-target = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" V=1' -EXTRA_OEMAKE_class-cross = 'ARCH=${TARGET_ARCH} CC="${CC} ${CFLAGS} ${LDFLAGS}" V=1' - -inherit uboot-config - -do_compile () { - oe_runmake ${UBOOT_MACHINE} - oe_runmake envtools -} - -do_install () { - install -d ${D}${base_sbindir} - install -d ${D}${sysconfdir} - install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_printenv - install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_setenv - - if [ -e ${WORKDIR}/fw_env.config ]; then - install -m 0644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config - else - install -m 0644 ${S}/tools/env/fw_env.config ${D}${sysconfdir}/fw_env.config - fi -} - -do_install_class-cross () { - install -d ${D}${bindir_cross} - install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_printenv - install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_setenv -} - -SYSROOT_PREPROCESS_FUNCS_class-cross = "uboot_fw_utils_cross" -uboot_fw_utils_cross() { - sysroot_stage_dir ${D}${bindir_cross} ${SYSROOT_DESTDIR}${bindir_cross} -} - -PROVIDES += "u-boot-fw-utils" -RPROVIDES_${PN} += "u-boot-fw-utils" - -PACKAGE_ARCH = "${MACHINE_ARCH}" -BBCLASSEXTEND = "cross" diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-mxsboot_2018.11.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-mxsboot_2020.04.bb index 9123b331..2492f450 100644 --- a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-mxsboot_2018.11.bb +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc-mxsboot_2020.04.bb @@ -12,14 +12,14 @@ EXTRA_OEMAKE_class-native = 'CC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" H EXTRA_OEMAKE_class-nativesdk = 'CROSS_COMPILE="${HOST_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1 CONFIG_MX28=y' do_compile () { - oe_runmake sandbox_defconfig + oe_runmake -C ${S} O=${B} sandbox_defconfig # Disable CONFIG_CMD_LICENSE, license.h is not used by tools and # generating it requires bin2header tool, which for target build # is built with target tools and thus cannot be executed on host. sed -i "s/CONFIG_CMD_LICENSE=.*/# CONFIG_CMD_LICENSE is not set/" .config - oe_runmake cross_tools NO_SDL=1 + oe_runmake -C ${S} O=${B} cross_tools NO_SDL=1 } do_install () { diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc_2018.11.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc_2020.04.bb index 5659e16c..64588efc 100644 --- a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc_2018.11.bb +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-fslc_2020.04.bb @@ -6,10 +6,12 @@ order to provide support for some backported features and fixes, or because it \ was submitted for revision and it takes some time to become part of a stable \ version, or because it is not applicable for upstreaming." -DEPENDS_append = " dtc-native" +DEPENDS_append = " bc-native dtc-native lzop-native" PROVIDES += "u-boot" +B = "${WORKDIR}/build" + # FIXME: Allow linking of 'tools' binaries with native libraries # used for generating the boot logo and other tools used # during the build process. diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-common.inc b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-common.inc new file mode 100644 index 00000000..a2d2ed01 --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-common.inc @@ -0,0 +1,20 @@ +DESCRIPTION = "i.MX U-Boot suppporting i.MX reference boards." + +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM = "file://Licenses/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263" + +SRCBRANCH = "lf-5.4.y_v2019.04" +SRC_URI = "git://source.codeaurora.org/external/imx/uboot-imx.git;protocol=https;branch=${SRCBRANCH}" +SRCREV = "228843cdf5435d4bd69f42a6015f78761ff4cc0d" + +DEPENDS += "flex-native bison-native bc-native dtc-native" + +S = "${WORKDIR}/git" +B = "${WORKDIR}/build" + +inherit fsl-u-boot-localversion + +LOCALVERSION ?= "-${SRCBRANCH}" + +BOOT_TOOLS = "imx-boot-tools" + diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-mfgtool_2017.03.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-mfgtool_2019.04.bb index d5cb0339..2b296c19 100644 --- a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-mfgtool_2017.03.bb +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-mfgtool_2019.04.bb @@ -1,6 +1,6 @@ # Copyright (C) 2014 O.S. Systems Software LTDA. # Copyright (C) 2014-2016 Freescale Semiconductor -# Copyright 2017 NXP +# Copyright 2017-2019 NXP FILESEXTRAPATHS_prepend := "${THISDIR}/u-boot-imx:" diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-tools_2019.04.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-tools_2019.04.bb new file mode 100644 index 00000000..12ac72e2 --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx-tools_2019.04.bb @@ -0,0 +1,10 @@ +require recipes-bsp/u-boot/u-boot-tools.inc +require u-boot-imx-common.inc + +PROVIDES_append_class-target = " ${MLPREFIX}u-boot-tools" +PROVIDES_append_class-native = " u-boot-tools-native" +PROVIDES_append_class-nativesdk = " nativesdk-u-boot-tools" + +PACKAGE_ARCH = "${MACHINE_ARCH}" +COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" +COMPATIBLE_MACHINE_class-target = "(mx6|mx7|mx8)" diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx/0001-Add-target-to-generate-initial-environment.patch b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx/0001-Add-target-to-generate-initial-environment.patch new file mode 100644 index 00000000..c717e029 --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx/0001-Add-target-to-generate-initial-environment.patch @@ -0,0 +1,49 @@ +From bdaa73a5b3923257add182b4ab8058dbfa33421b Mon Sep 17 00:00:00 2001 +From: Stefano Babic <sbabic@denx.de> +Date: Wed, 13 Mar 2019 09:46:45 +0100 +Subject: [PATCH] Add target to generate initial environment + +The initial environment is linked to the u-boot binary. Modifying the +environment from User Space with the env tools requires that the tools +are always built together with the bootloader to be sure that they +contain the initial environment in case no environment is stored into +persistent storage or when a board boots with just the default +environment. This makes difficult for distros to provide a general +package to access the environment. A simpler way is if the tools are +generic for all boards and a configuration file is given to provide the +initial environment. + +The patch just generates the initial environment by extracting it from +the compiled object. This file can then be used for tools in user space +to initialize the environment. + +Signed-off-by: Stefano Babic <sbabic@denx.de> + +Upstream-Status: Backport [https://github.com/u-boot/u-boot/commit/bdaa73a5b3923257add182b4ab8058dbfa33421b] + +Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com> +--- + Makefile | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/Makefile b/Makefile +index 66a09ac900..f2c7bb6041 100644 +--- a/Makefile ++++ b/Makefile +@@ -1977,6 +1977,13 @@ endif + $(build)=$(build-dir) $(@:.ko=.o) + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost + ++quiet_cmd_genenv = GENENV $@ ++cmd_genenv = $(OBJCOPY) --dump-section .rodata.default_environment=$@ env/common.o; \ ++ sed --in-place -e 's/\x00/\x0A/g' $@ ++ ++u-boot-initial-env: u-boot.bin ++ $(call if_changed,genenv) ++ + # Consistency checks + # --------------------------------------------------------------------------- + +-- +2.17.1 + diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx/0001-tools-allow-to-override-python.patch b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx/0001-tools-allow-to-override-python.patch deleted file mode 100755 index f96de538..00000000 --- a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx/0001-tools-allow-to-override-python.patch +++ /dev/null @@ -1,46 +0,0 @@ -From b48bfc74ee410b1e6681c620633ffef32aafaba0 Mon Sep 17 00:00:00 2001 -From: Stefano Babic <sbabic@denx.de> -Date: Wed, 5 Apr 2017 17:46:41 +0200 -Subject: [PATCH] tools: allow to override python - -Not force to use python from PATH. Issue was noted when building with -Yocto, because python from the distro is always taken instead of -python-native built during Yocto process. - -Signed-off-by: Stefano Babic <sbabic@denx.de> -CC: Simon Glass <sjg@chromium.org> -Reviewed-by: Simon Glass <sjg@chromium.org> ---- - Makefile | 2 +- - tools/Makefile | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Makefile b/Makefile -index 09b597d450..8d4e6050b3 100644 ---- a/Makefile -+++ b/Makefile -@@ -348,7 +348,7 @@ OBJCOPY = $(CROSS_COMPILE)objcopy - OBJDUMP = $(CROSS_COMPILE)objdump - AWK = awk - PERL = perl --PYTHON = python -+PYTHON ?= python - DTC = dtc - CHECK = sparse - -diff --git a/tools/Makefile b/tools/Makefile -index fa1b85bdae..2fc4a583d4 100644 ---- a/tools/Makefile -+++ b/tools/Makefile -@@ -120,7 +120,7 @@ _libfdt.so-sharedobjs += $(LIBFDT_OBJS) - libfdt: - - tools/_libfdt.so: $(patsubst %.o,%.c,$(LIBFDT_OBJS)) tools/libfdt_wrap.c -- LDFLAGS="$(HOSTLDFLAGS)" python $(srctree)/lib/libfdt/setup.py \ -+ LDFLAGS="$(HOSTLDFLAGS)" ${PYTHON} $(srctree)/lib/libfdt/setup.py \ - "$(_hostc_flags)" $^ - mv _libfdt.so $@ - --- -2.17.1 - diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx_2017.03.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx_2019.04.bb index f85ed994..d37ede83 100644 --- a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx_2017.03.bb +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-imx_2019.04.bb @@ -1,28 +1,13 @@ # Copyright (C) 2013-2016 Freescale Semiconductor -# Copyright 2017-2018 NXP # Copyright 2018 (C) O.S. Systems Software LTDA. +# Copyright 2017-2019 NXP -DESCRIPTION = "i.MX U-Boot suppporting i.MX reference boards." require recipes-bsp/u-boot/u-boot.inc +require u-boot-imx-common.inc -PROVIDES += "u-boot" - -LICENSE = "GPLv2+" -LIC_FILES_CHKSUM = "file://Licenses/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263" - -SRCBRANCH = "imx_v2017.03_4.9.123_imx8mm_ga" -SRC_URI = "git://source.codeaurora.org/external/imx/uboot-imx.git;protocol=https;branch=${SRCBRANCH} \ - file://0001-tools-allow-to-override-python.patch \ - " -SRCREV = "8be98e9322040c655b9e5c9fb2c494e002e3fad9" - -S = "${WORKDIR}/git" +SRC_URI += "file://0001-Add-target-to-generate-initial-environment.patch" -inherit dtc-145 fsl-u-boot-localversion - -LOCALVERSION ?= "-${SRCBRANCH}" - -BOOT_TOOLS = "imx-boot-tools" +PROVIDES += "u-boot" do_deploy_append_mx8m() { # Deploy the mkimage, u-boot-nodtb.bin and fsl-imx8m*-XX.dtb for mkimage to generate boot binary @@ -37,7 +22,7 @@ do_deploy_append_mx8m() { install -d ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0777 ${B}/${config}/arch/arm/dts/${UBOOT_DTB_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0777 ${B}/${config}/tools/mkimage ${DEPLOYDIR}/${BOOT_TOOLS}/mkimage_uboot - install -m 0777 ${B}/${config}/u-boot-nodtb.bin ${DEPLOYDIR}/${BOOT_TOOLS}/u-boot-nodtb.bin + install -m 0777 ${B}/${config}/u-boot-nodtb.bin ${DEPLOYDIR}/${BOOT_TOOLS}/u-boot-nodtb.bin-${MACHINE}-${UBOOT_CONFIG} fi done unset j diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.03.inc b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.03.inc deleted file mode 100644 index 5be64e49..00000000 --- a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.03.inc +++ /dev/null @@ -1,19 +0,0 @@ - -inherit fsl-u-boot-localversion - -LICENSE = "GPLv2 & BSD-3-Clause & BSD-2-Clause & LGPL-2.0 & LGPL-2.1" -LIC_FILES_CHKSUM = " \ - file://Licenses/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://Licenses/bsd-2-clause.txt;md5=6a31f076f5773aabd8ff86191ad6fdd5 \ - file://Licenses/bsd-3-clause.txt;md5=4a1190eac56a9db675d58ebe86eaf50c \ - file://Licenses/lgpl-2.0.txt;md5=5f30f0716dfdd0d91eb439ebec522ec2 \ - file://Licenses/lgpl-2.1.txt;md5=4fbd65380cdd255951079008b364516c \ -" - -SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/u-boot;nobranch=1 \ -" -SRCREV = "1e96fd8f464dfe23eb692a11018c20d70546783b" - -S = "${WORKDIR}/git" -PV_append = "+fslgit" -LOCALVERSION = "+fsl"
\ No newline at end of file diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.09.inc b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.09.inc deleted file mode 100644 index a3a554cc..00000000 --- a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-common_2018.09.inc +++ /dev/null @@ -1,19 +0,0 @@ - -inherit fsl-u-boot-localversion - -LICENSE = "GPLv2 & BSD-3-Clause & BSD-2-Clause & LGPL-2.0 & LGPL-2.1" -LIC_FILES_CHKSUM = " \ - file://Licenses/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://Licenses/bsd-2-clause.txt;md5=6a31f076f5773aabd8ff86191ad6fdd5 \ - file://Licenses/bsd-3-clause.txt;md5=4a1190eac56a9db675d58ebe86eaf50c \ - file://Licenses/lgpl-2.0.txt;md5=5f30f0716dfdd0d91eb439ebec522ec2 \ - file://Licenses/lgpl-2.1.txt;md5=4fbd65380cdd255951079008b364516c \ -" - -SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/u-boot;nobranch=1 \ -" -SRCREV= "c08de7c3c92d45a824500ad936f4d72465c181ec" - -S = "${WORKDIR}/git" -PV_append = "+fslgit" -LOCALVERSION = "+fsl" diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-fw-utils_2018.03.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-fw-utils_2018.03.bb deleted file mode 100644 index ae47cb0d..00000000 --- a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq-fw-utils_2018.03.bb +++ /dev/null @@ -1,45 +0,0 @@ -require u-boot-qoriq-common_${PV}.inc - -SUMMARY = "U-Boot bootloader fw_printenv/setenv utilities" -DEPENDS = "mtd-utils" - -INSANE_SKIP_${PN} = "already-stripped" -EXTRA_OEMAKE_class-target = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" V=1' -EXTRA_OEMAKE_class-cross = 'ARCH=${TARGET_ARCH} CC="${CC} ${CFLAGS} ${LDFLAGS}" V=1' - -inherit uboot-config - -do_compile () { - oe_runmake ${UBOOT_MACHINE} - oe_runmake envtools -} - -do_install () { - install -d ${D}${base_sbindir} - install -d ${D}${sysconfdir} - install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_printenv - install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_setenv - - if [ -e ${WORKDIR}/fw_env.config ]; then - install -m 0644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config - else - install -m 0644 ${S}/tools/env/fw_env.config ${D}${sysconfdir}/fw_env.config - fi -} - -do_install_class-cross () { - install -d ${D}${bindir_cross} - install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_printenv - install -m 755 ${S}/tools/env/fw_printenv ${D}${bindir_cross}/fw_setenv -} - -SYSROOT_PREPROCESS_FUNCS_class-cross = "uboot_fw_utils_cross" -uboot_fw_utils_cross() { - sysroot_stage_dir ${D}${bindir_cross} ${SYSROOT_DESTDIR}${bindir_cross} -} - -PROVIDES += "u-boot-fw-utils" -RPROVIDES_${PN} += "u-boot-fw-utils" - -PACKAGE_ARCH = "${MACHINE_ARCH}" -BBCLASSEXTEND = "cross" diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-Remove-redundant-YYLOC-global-declaration.patch b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-Remove-redundant-YYLOC-global-declaration.patch new file mode 100644 index 00000000..2609760c --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-Remove-redundant-YYLOC-global-declaration.patch @@ -0,0 +1,29 @@ +From 018921ee79d3f30893614b3b2b63b588d8544f73 Mon Sep 17 00:00:00 2001 +From: Peter Robinson <pbrobinson@gmail.com> +Date: Thu, 30 Jan 2020 09:37:15 +0000 +Subject: [PATCH] Remove redundant YYLOC global declaration + +Same as the upstream fix for building dtc with gcc 10. + +Upstream-Status: Backport + +Signed-off-by: Peter Robinson <pbrobinson@gmail.com> +--- + scripts/dtc/dtc-lexer.l | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l +index fd825ebba69c..24af54997758 100644 +--- a/scripts/dtc/dtc-lexer.l ++++ b/scripts/dtc/dtc-lexer.l +@@ -38,7 +38,6 @@ LINECOMMENT "//".*\n + #include "srcpos.h" + #include "dtc-parser.tab.h" + +-YYLTYPE yylloc; + extern bool treesource_error; + + /* CAUTION: this will stop working if we ever use yyless() or yyunput() */ +-- +2.26.2 + diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-binman-Convert-a-few-tests-to-Python-3.patch b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-binman-Convert-a-few-tests-to-Python-3.patch new file mode 100644 index 00000000..e530b7ca --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-binman-Convert-a-few-tests-to-Python-3.patch @@ -0,0 +1,79 @@ +From b6ee0cf89f9405094cbb6047076a13e14ebc030b Mon Sep 17 00:00:00 2001 +From: Simon Glass <sjg@chromium.org> +Date: Thu, 31 Oct 2019 07:43:03 -0600 +Subject: [PATCH] binman: Convert a few tests to Python 3 + +Some tests have crept in with Python 2 strings and constructs. Convert +then. + +Upstream-Status: Backport + +Signed-off-by: Simon Glass <sjg@chromium.org> +--- + tools/binman/ftest.py | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py +index 93507993a0..80df0e3ca9 100644 +--- a/tools/binman/ftest.py ++++ b/tools/binman/ftest.py +@@ -2113,7 +2113,7 @@ class TestFunctional(unittest.TestCase): + data = self.data = self._DoReadFileRealDtb('115_fdtmap.dts') + fdtmap_data = data[len(U_BOOT_DATA):] + magic = fdtmap_data[:8] +- self.assertEqual('_FDTMAP_', magic) ++ self.assertEqual(b'_FDTMAP_', magic) + self.assertEqual(tools.GetBytes(0, 8), fdtmap_data[8:16]) + + fdt_data = fdtmap_data[16:] +@@ -2156,7 +2156,7 @@ class TestFunctional(unittest.TestCase): + dtb = fdt.Fdt.FromData(fdt_data) + fdt_size = dtb.GetFdtObj().totalsize() + hdr_data = data[-8:] +- self.assertEqual('BinM', hdr_data[:4]) ++ self.assertEqual(b'BinM', hdr_data[:4]) + offset = struct.unpack('<I', hdr_data[4:])[0] & 0xffffffff + self.assertEqual(fdtmap_pos - 0x400, offset - (1 << 32)) + +@@ -2165,7 +2165,7 @@ class TestFunctional(unittest.TestCase): + data = self.data = self._DoReadFileRealDtb('117_fdtmap_hdr_start.dts') + fdtmap_pos = 0x100 + len(U_BOOT_DATA) + hdr_data = data[:8] +- self.assertEqual('BinM', hdr_data[:4]) ++ self.assertEqual(b'BinM', hdr_data[:4]) + offset = struct.unpack('<I', hdr_data[4:])[0] + self.assertEqual(fdtmap_pos, offset) + +@@ -2174,7 +2174,7 @@ class TestFunctional(unittest.TestCase): + data = self.data = self._DoReadFileRealDtb('118_fdtmap_hdr_pos.dts') + fdtmap_pos = 0x100 + len(U_BOOT_DATA) + hdr_data = data[0x80:0x88] +- self.assertEqual('BinM', hdr_data[:4]) ++ self.assertEqual(b'BinM', hdr_data[:4]) + offset = struct.unpack('<I', hdr_data[4:])[0] + self.assertEqual(fdtmap_pos, offset) + +@@ -2435,9 +2435,9 @@ class TestFunctional(unittest.TestCase): + ' section 100 %x section 100' % section_size, + ' cbfs 100 400 cbfs 0', + ' u-boot 138 4 u-boot 38', +-' u-boot-dtb 180 10f u-boot-dtb 80 3c9', ++' u-boot-dtb 180 105 u-boot-dtb 80 3c9', + ' u-boot-dtb 500 %x u-boot-dtb 400 3c9' % fdt_size, +-' fdtmap %x 3b4 fdtmap %x' % ++' fdtmap %x 3bd fdtmap %x' % + (fdtmap_offset, fdtmap_offset), + ' image-header bf8 8 image-header bf8', + ] +@@ -2522,7 +2522,7 @@ class TestFunctional(unittest.TestCase): + data = self._RunExtractCmd('section') + cbfs_data = data[:0x400] + cbfs = cbfs_util.CbfsReader(cbfs_data) +- self.assertEqual(['u-boot', 'u-boot-dtb', ''], cbfs.files.keys()) ++ self.assertEqual(['u-boot', 'u-boot-dtb', ''], list(cbfs.files.keys())) + dtb_data = data[0x400:] + dtb = self._decompress(dtb_data) + self.assertEqual(EXTRACT_DTB_SIZE, len(dtb)) +-- +2.24.0 + diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-binman-Move-to-use-Python-3.patch b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-binman-Move-to-use-Python-3.patch new file mode 100644 index 00000000..c1a05b32 --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-binman-Move-to-use-Python-3.patch @@ -0,0 +1,30 @@ +From 388560134b99dc4cc752627d3a7e9f8c8c2a89a7 Mon Sep 17 00:00:00 2001 +From: Simon Glass <sjg@chromium.org> +Date: Thu, 31 Oct 2019 07:43:05 -0600 +Subject: [PATCH] binman: Move to use Python 3 + +Update this tool to use Python 3 to meet the 2020 deadline. + +Unfortunately this introduces a test failure due to a problem in pylibfdt +on Python 3. I will investigate. + +Upstream-Status: Backport + +Signed-off-by: Simon Glass <sjg@chromium.org> +--- + tools/binman/binman.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/binman/binman.py b/tools/binman/binman.py +index 8bd5868df2..9e6fd72117 100755 +--- a/tools/binman/binman.py ++++ b/tools/binman/binman.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python2 ++#!/usr/bin/env python3 + # SPDX-License-Identifier: GPL-2.0+ + + # Copyright (c) 2016 Google, Inc +-- +2.24.0 + diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-buildman-Convert-to-Python-3.patch b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-buildman-Convert-to-Python-3.patch new file mode 100644 index 00000000..5d7ec42f --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-buildman-Convert-to-Python-3.patch @@ -0,0 +1,928 @@ +From c05aa0364280803d8274e260a739553d588ea052 Mon Sep 17 00:00:00 2001 +From: Simon Glass <sjg@chromium.org> +Date: Thu, 31 Oct 2019 07:42:53 -0600 +Subject: [PATCH] buildman: Convert to Python 3 + +Convert buildman to Python 3 and make it use that, to meet the 2020 +deadline. + +Upstream-Status: Backport + +Signed-off-by: Simon Glass <sjg@chromium.org> +--- + tools/buildman/board.py | 9 +-- + tools/buildman/bsettings.py | 20 +++---- + tools/buildman/builder.py | 47 ++++++++-------- + tools/buildman/builderthread.py | 24 ++++---- + tools/buildman/buildman.py | 10 ++-- + tools/buildman/control.py | 44 +++++++-------- + tools/buildman/func_test.py | 16 +++--- + tools/buildman/test.py | 22 ++++---- + tools/buildman/toolchain.py | 99 +++++++++++++++++---------------- + 9 files changed, 146 insertions(+), 145 deletions(-) + +diff --git a/tools/buildman/board.py b/tools/buildman/board.py +index 2a1d021574..447aaabea8 100644 +--- a/tools/buildman/board.py ++++ b/tools/buildman/board.py +@@ -1,6 +1,7 @@ + # SPDX-License-Identifier: GPL-2.0+ + # Copyright (c) 2012 The Chromium OS Authors. + ++from collections import OrderedDict + import re + + class Expr: +@@ -120,7 +121,7 @@ class Boards: + Args: + fname: Filename of boards.cfg file + """ +- with open(fname, 'r') as fd: ++ with open(fname, 'r', encoding='utf-8') as fd: + for line in fd: + if line[0] == '#': + continue +@@ -155,7 +156,7 @@ class Boards: + key is board.target + value is board + """ +- board_dict = {} ++ board_dict = OrderedDict() + for board in self._boards: + board_dict[board.target] = board + return board_dict +@@ -166,7 +167,7 @@ class Boards: + Returns: + List of Board objects that are marked selected + """ +- board_dict = {} ++ board_dict = OrderedDict() + for board in self._boards: + if board.build_it: + board_dict[board.target] = board +@@ -259,7 +260,7 @@ class Boards: + due to each argument, arranged by argument. + List of errors found + """ +- result = {} ++ result = OrderedDict() + warnings = [] + terms = self._BuildTerms(args) + +diff --git a/tools/buildman/bsettings.py b/tools/buildman/bsettings.py +index 03d7439aa5..0b7208da37 100644 +--- a/tools/buildman/bsettings.py ++++ b/tools/buildman/bsettings.py +@@ -1,9 +1,9 @@ + # SPDX-License-Identifier: GPL-2.0+ + # Copyright (c) 2012 The Chromium OS Authors. + +-import ConfigParser ++import configparser + import os +-import StringIO ++import io + + + def Setup(fname=''): +@@ -15,20 +15,20 @@ def Setup(fname=''): + global settings + global config_fname + +- settings = ConfigParser.SafeConfigParser() ++ settings = configparser.SafeConfigParser() + if fname is not None: + config_fname = fname + if config_fname == '': + config_fname = '%s/.buildman' % os.getenv('HOME') + if not os.path.exists(config_fname): +- print 'No config file found ~/.buildman\nCreating one...\n' ++ print('No config file found ~/.buildman\nCreating one...\n') + CreateBuildmanConfigFile(config_fname) +- print 'To install tool chains, please use the --fetch-arch option' ++ print('To install tool chains, please use the --fetch-arch option') + if config_fname: + settings.read(config_fname) + + def AddFile(data): +- settings.readfp(StringIO.StringIO(data)) ++ settings.readfp(io.StringIO(data)) + + def GetItems(section): + """Get the items from a section of the config. +@@ -41,7 +41,7 @@ def GetItems(section): + """ + try: + return settings.items(section) +- except ConfigParser.NoSectionError as e: ++ except configparser.NoSectionError as e: + return [] + except: + raise +@@ -68,10 +68,10 @@ def CreateBuildmanConfigFile(config_fname): + try: + f = open(config_fname, 'w') + except IOError: +- print "Couldn't create buildman config file '%s'\n" % config_fname ++ print("Couldn't create buildman config file '%s'\n" % config_fname) + raise + +- print >>f, '''[toolchain] ++ print('''[toolchain] + # name = path + # e.g. x86 = /opt/gcc-4.6.3-nolibc/x86_64-linux + +@@ -93,5 +93,5 @@ openrisc = or1k + # snapper-boards=ENABLE_AT91_TEST=1 + # snapper9260=${snapper-boards} BUILD_TAG=442 + # snapper9g45=${snapper-boards} BUILD_TAG=443 +-''' ++''', file=f) + f.close(); +diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py +index fbb236676c..cfbe4c26b1 100644 +--- a/tools/buildman/builder.py ++++ b/tools/buildman/builder.py +@@ -9,7 +9,7 @@ from datetime import datetime, timedelta + import glob + import os + import re +-import Queue ++import queue + import shutil + import signal + import string +@@ -92,11 +92,10 @@ u-boot/ source directory + """ + + # Possible build outcomes +-OUTCOME_OK, OUTCOME_WARNING, OUTCOME_ERROR, OUTCOME_UNKNOWN = range(4) ++OUTCOME_OK, OUTCOME_WARNING, OUTCOME_ERROR, OUTCOME_UNKNOWN = list(range(4)) + + # Translate a commit subject into a valid filename (and handle unicode) +-trans_valid_chars = string.maketrans('/: ', '---') +-trans_valid_chars = trans_valid_chars.decode('latin-1') ++trans_valid_chars = str.maketrans('/: ', '---') + + BASE_CONFIG_FILENAMES = [ + 'u-boot.cfg', 'u-boot-spl.cfg', 'u-boot-tpl.cfg' +@@ -122,8 +121,8 @@ class Config: + def __hash__(self): + val = 0 + for fname in self.config: +- for key, value in self.config[fname].iteritems(): +- print key, value ++ for key, value in self.config[fname].items(): ++ print(key, value) + val = val ^ hash(key) & hash(value) + return val + +@@ -293,8 +292,8 @@ class Builder: + self._re_dtb_warning = re.compile('(.*): Warning .*') + self._re_note = re.compile('(.*):(\d*):(\d*): note: this is the location of the previous.*') + +- self.queue = Queue.Queue() +- self.out_queue = Queue.Queue() ++ self.queue = queue.Queue() ++ self.out_queue = queue.Queue() + for i in range(self.num_threads): + t = builderthread.BuilderThread(self, i, incremental, + per_board_out_dir) +@@ -781,7 +780,7 @@ class Builder: + config = {} + environment = {} + +- for board in boards_selected.itervalues(): ++ for board in boards_selected.values(): + outcome = self.GetBuildOutcome(commit_upto, board.target, + read_func_sizes, read_config, + read_environment) +@@ -814,13 +813,13 @@ class Builder: + tconfig = Config(self.config_filenames, board.target) + for fname in self.config_filenames: + if outcome.config: +- for key, value in outcome.config[fname].iteritems(): ++ for key, value in outcome.config[fname].items(): + tconfig.Add(fname, key, value) + config[board.target] = tconfig + + tenvironment = Environment(board.target) + if outcome.environment: +- for key, value in outcome.environment.iteritems(): ++ for key, value in outcome.environment.items(): + tenvironment.Add(key, value) + environment[board.target] = tenvironment + +@@ -1040,12 +1039,12 @@ class Builder: + + # We now have a list of image size changes sorted by arch + # Print out a summary of these +- for arch, target_list in arch_list.iteritems(): ++ for arch, target_list in arch_list.items(): + # Get total difference for each type + totals = {} + for result in target_list: + total = 0 +- for name, diff in result.iteritems(): ++ for name, diff in result.items(): + if name.startswith('_'): + continue + total += diff +@@ -1250,7 +1249,7 @@ class Builder: + if self._show_unknown: + self.AddOutcome(board_selected, arch_list, unknown_boards, '?', + self.col.MAGENTA) +- for arch, target_list in arch_list.iteritems(): ++ for arch, target_list in arch_list.items(): + Print('%10s: %s' % (arch, target_list)) + self._error_lines += 1 + if better_err: +@@ -1283,13 +1282,13 @@ class Builder: + environment_minus = {} + environment_change = {} + base = tbase.environment +- for key, value in tenvironment.environment.iteritems(): ++ for key, value in tenvironment.environment.items(): + if key not in base: + environment_plus[key] = value +- for key, value in base.iteritems(): ++ for key, value in base.items(): + if key not in tenvironment.environment: + environment_minus[key] = value +- for key, value in base.iteritems(): ++ for key, value in base.items(): + new_value = tenvironment.environment.get(key) + if new_value and value != new_value: + desc = '%s -> %s' % (value, new_value) +@@ -1342,15 +1341,15 @@ class Builder: + config_minus = {} + config_change = {} + base = tbase.config[name] +- for key, value in tconfig.config[name].iteritems(): ++ for key, value in tconfig.config[name].items(): + if key not in base: + config_plus[key] = value + all_config_plus[key] = value +- for key, value in base.iteritems(): ++ for key, value in base.items(): + if key not in tconfig.config[name]: + config_minus[key] = value + all_config_minus[key] = value +- for key, value in base.iteritems(): ++ for key, value in base.items(): + new_value = tconfig.config.get(key) + if new_value and value != new_value: + desc = '%s -> %s' % (value, new_value) +@@ -1368,7 +1367,7 @@ class Builder: + summary[target] = '\n'.join(lines) + + lines_by_target = {} +- for target, lines in summary.iteritems(): ++ for target, lines in summary.items(): + if lines in lines_by_target: + lines_by_target[lines].append(target) + else: +@@ -1392,7 +1391,7 @@ class Builder: + Print('%s:' % arch) + _OutputConfigInfo(lines) + +- for lines, targets in lines_by_target.iteritems(): ++ for lines, targets in lines_by_target.items(): + if not lines: + continue + Print('%s :' % ' '.join(sorted(targets))) +@@ -1463,7 +1462,7 @@ class Builder: + commits: Selected commits to build + """ + # First work out how many commits we will build +- count = (self.commit_count + self._step - 1) / self._step ++ count = (self.commit_count + self._step - 1) // self._step + self.count = len(board_selected) * count + self.upto = self.warned = self.fail = 0 + self._timestamps = collections.deque() +@@ -1566,7 +1565,7 @@ class Builder: + self.ProcessResult(None) + + # Create jobs to build all commits for each board +- for brd in board_selected.itervalues(): ++ for brd in board_selected.values(): + job = builderthread.BuilderJob() + job.board = brd + job.commits = commits +diff --git a/tools/buildman/builderthread.py b/tools/buildman/builderthread.py +index 8a9d47cd5e..570c1f6595 100644 +--- a/tools/buildman/builderthread.py ++++ b/tools/buildman/builderthread.py +@@ -28,7 +28,7 @@ def Mkdir(dirname, parents = False): + except OSError as err: + if err.errno == errno.EEXIST: + if os.path.realpath('.') == os.path.realpath(dirname): +- print "Cannot create the current working directory '%s'!" % dirname ++ print("Cannot create the current working directory '%s'!" % dirname) + sys.exit(1) + pass + else: +@@ -291,15 +291,13 @@ class BuilderThread(threading.Thread): + outfile = os.path.join(build_dir, 'log') + with open(outfile, 'w') as fd: + if result.stdout: +- # We don't want unicode characters in log files +- fd.write(result.stdout.decode('UTF-8').encode('ASCII', 'replace')) ++ fd.write(result.stdout) + + errfile = self.builder.GetErrFile(result.commit_upto, + result.brd.target) + if result.stderr: + with open(errfile, 'w') as fd: +- # We don't want unicode characters in log files +- fd.write(result.stderr.decode('UTF-8').encode('ASCII', 'replace')) ++ fd.write(result.stderr) + elif os.path.exists(errfile): + os.remove(errfile) + +@@ -314,17 +312,17 @@ class BuilderThread(threading.Thread): + else: + fd.write('%s' % result.return_code) + with open(os.path.join(build_dir, 'toolchain'), 'w') as fd: +- print >>fd, 'gcc', result.toolchain.gcc +- print >>fd, 'path', result.toolchain.path +- print >>fd, 'cross', result.toolchain.cross +- print >>fd, 'arch', result.toolchain.arch ++ print('gcc', result.toolchain.gcc, file=fd) ++ print('path', result.toolchain.path, file=fd) ++ print('cross', result.toolchain.cross, file=fd) ++ print('arch', result.toolchain.arch, file=fd) + fd.write('%s' % result.return_code) + + # Write out the image and function size information and an objdump + env = result.toolchain.MakeEnvironment(self.builder.full_path) + with open(os.path.join(build_dir, 'env'), 'w') as fd: + for var in sorted(env.keys()): +- print >>fd, '%s="%s"' % (var, env[var]) ++ print('%s="%s"' % (var, env[var]), file=fd) + lines = [] + for fname in ['u-boot', 'spl/u-boot-spl']: + cmd = ['%snm' % self.toolchain.cross, '--size-sort', fname] +@@ -335,7 +333,7 @@ class BuilderThread(threading.Thread): + nm = self.builder.GetFuncSizesFile(result.commit_upto, + result.brd.target, fname) + with open(nm, 'w') as fd: +- print >>fd, nm_result.stdout, ++ print(nm_result.stdout, end=' ', file=fd) + + cmd = ['%sobjdump' % self.toolchain.cross, '-h', fname] + dump_result = command.RunPipe([cmd], capture=True, +@@ -346,7 +344,7 @@ class BuilderThread(threading.Thread): + objdump = self.builder.GetObjdumpFile(result.commit_upto, + result.brd.target, fname) + with open(objdump, 'w') as fd: +- print >>fd, dump_result.stdout, ++ print(dump_result.stdout, end=' ', file=fd) + for line in dump_result.stdout.splitlines(): + fields = line.split() + if len(fields) > 5 and fields[1] == '.rodata': +@@ -378,7 +376,7 @@ class BuilderThread(threading.Thread): + sizes = self.builder.GetSizesFile(result.commit_upto, + result.brd.target) + with open(sizes, 'w') as fd: +- print >>fd, '\n'.join(lines) ++ print('\n'.join(lines), file=fd) + + # Write out the configuration files, with a special case for SPL + for dirname in ['', 'spl', 'tpl']: +diff --git a/tools/buildman/buildman.py b/tools/buildman/buildman.py +index f17aa15e7c..30a8690f93 100755 +--- a/tools/buildman/buildman.py ++++ b/tools/buildman/buildman.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python2 ++#!/usr/bin/env python3 + # SPDX-License-Identifier: GPL-2.0+ + # + # Copyright (c) 2012 The Chromium OS Authors. +@@ -6,6 +6,8 @@ + + """See README for more information""" + ++from __future__ import print_function ++ + import multiprocessing + import os + import re +@@ -46,11 +48,11 @@ def RunTests(skip_net_tests): + suite = unittest.TestLoader().loadTestsFromTestCase(module) + suite.run(result) + +- print result ++ print(result) + for test, err in result.errors: +- print err ++ print(err) + for test, err in result.failures: +- print err ++ print(err) + + + options, args = cmdline.ParseArgs() +diff --git a/tools/buildman/control.py b/tools/buildman/control.py +index 9787b86747..216012d001 100644 +--- a/tools/buildman/control.py ++++ b/tools/buildman/control.py +@@ -30,7 +30,7 @@ def GetActionSummary(is_summary, commits, selected, options): + """ + if commits: + count = len(commits) +- count = (count + options.step - 1) / options.step ++ count = (count + options.step - 1) // options.step + commit_str = '%d commit%s' % (count, GetPlural(count)) + else: + commit_str = 'current source' +@@ -59,31 +59,31 @@ def ShowActions(series, why_selected, boards_selected, builder, options, + board_warnings: List of warnings obtained from board selected + """ + col = terminal.Color() +- print 'Dry run, so not doing much. But I would do this:' +- print ++ print('Dry run, so not doing much. But I would do this:') ++ print() + if series: + commits = series.commits + else: + commits = None +- print GetActionSummary(False, commits, boards_selected, +- options) +- print 'Build directory: %s' % builder.base_dir ++ print(GetActionSummary(False, commits, boards_selected, ++ options)) ++ print('Build directory: %s' % builder.base_dir) + if commits: + for upto in range(0, len(series.commits), options.step): + commit = series.commits[upto] +- print ' ', col.Color(col.YELLOW, commit.hash[:8], bright=False), +- print commit.subject +- print ++ print(' ', col.Color(col.YELLOW, commit.hash[:8], bright=False), end=' ') ++ print(commit.subject) ++ print() + for arg in why_selected: + if arg != 'all': +- print arg, ': %d boards' % len(why_selected[arg]) ++ print(arg, ': %d boards' % len(why_selected[arg])) + if options.verbose: +- print ' %s' % ' '.join(why_selected[arg]) +- print ('Total boards to build for each commit: %d\n' % +- len(why_selected['all'])) ++ print(' %s' % ' '.join(why_selected[arg])) ++ print(('Total boards to build for each commit: %d\n' % ++ len(why_selected['all']))) + if board_warnings: + for warning in board_warnings: +- print col.Color(col.YELLOW, warning) ++ print(col.Color(col.YELLOW, warning)) + + def CheckOutputDir(output_dir): + """Make sure that the output directory is not within the current directory +@@ -146,17 +146,17 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, + if options.fetch_arch: + if options.fetch_arch == 'list': + sorted_list = toolchains.ListArchs() +- print col.Color(col.BLUE, 'Available architectures: %s\n' % +- ' '.join(sorted_list)) ++ print(col.Color(col.BLUE, 'Available architectures: %s\n' % ++ ' '.join(sorted_list))) + return 0 + else: + fetch_arch = options.fetch_arch + if fetch_arch == 'all': + fetch_arch = ','.join(toolchains.ListArchs()) +- print col.Color(col.CYAN, '\nDownloading toolchains: %s' % +- fetch_arch) ++ print(col.Color(col.CYAN, '\nDownloading toolchains: %s' % ++ fetch_arch)) + for arch in fetch_arch.split(','): +- print ++ print() + ret = toolchains.FetchAndInstall(arch) + if ret: + return ret +@@ -167,7 +167,7 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, + toolchains.Scan(options.list_tool_chains and options.verbose) + if options.list_tool_chains: + toolchains.List() +- print ++ print() + return 0 + + # Work out how many commits to build. We want to build everything on the +@@ -191,7 +191,7 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, + sys.exit(col.Color(col.RED, "Range '%s' has no commits" % + options.branch)) + if msg: +- print col.Color(col.YELLOW, msg) ++ print(col.Color(col.YELLOW, msg)) + count += 1 # Build upstream commit also + + if not count: +@@ -268,7 +268,7 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, + options.threads = min(multiprocessing.cpu_count(), len(selected)) + if not options.jobs: + options.jobs = max(1, (multiprocessing.cpu_count() + +- len(selected) - 1) / len(selected)) ++ len(selected) - 1) // len(selected)) + + if not options.step: + options.step = len(series.commits) - 1 +diff --git a/tools/buildman/func_test.py b/tools/buildman/func_test.py +index f90b8ea7f5..4c3d497294 100644 +--- a/tools/buildman/func_test.py ++++ b/tools/buildman/func_test.py +@@ -270,7 +270,7 @@ class TestFunctional(unittest.TestCase): + stdout=''.join(commit_log[:count])) + + # Not handled, so abort +- print 'git log', args ++ print('git log', args) + sys.exit(1) + + def _HandleCommandGitConfig(self, args): +@@ -286,7 +286,7 @@ class TestFunctional(unittest.TestCase): + stdout='refs/heads/master\n') + + # Not handled, so abort +- print 'git config', args ++ print('git config', args) + sys.exit(1) + + def _HandleCommandGit(self, in_args): +@@ -320,7 +320,7 @@ class TestFunctional(unittest.TestCase): + return command.CommandResult(return_code=0) + + # Not handled, so abort +- print 'git', git_args, sub_cmd, args ++ print('git', git_args, sub_cmd, args) + sys.exit(1) + + def _HandleCommandNm(self, args): +@@ -351,7 +351,7 @@ class TestFunctional(unittest.TestCase): + if pipe_list[1] == ['wc', '-l']: + wc = True + else: +- print 'invalid pipe', kwargs ++ print('invalid pipe', kwargs) + sys.exit(1) + cmd = pipe_list[0][0] + args = pipe_list[0][1:] +@@ -371,7 +371,7 @@ class TestFunctional(unittest.TestCase): + + if not result: + # Not handled, so abort +- print 'unknown command', kwargs ++ print('unknown command', kwargs) + sys.exit(1) + + if wc: +@@ -404,14 +404,14 @@ class TestFunctional(unittest.TestCase): + return command.CommandResult(return_code=0) + + # Not handled, so abort +- print 'make', stage ++ print('make', stage) + sys.exit(1) + + # Example function to print output lines + def print_lines(self, lines): +- print len(lines) ++ print(len(lines)) + for line in lines: +- print line ++ print(line) + #self.print_lines(terminal.GetPrintTestLines()) + + def testNoBoards(self): +diff --git a/tools/buildman/test.py b/tools/buildman/test.py +index ed99b9375c..b4e28d6867 100644 +--- a/tools/buildman/test.py ++++ b/tools/buildman/test.py +@@ -212,11 +212,11 @@ class TestBuild(unittest.TestCase): + self.assertEqual(lines[1].text, '02: %s' % commits[1][1]) + + col = terminal.Color() +- self.assertSummary(lines[2].text, 'sandbox', 'w+', ['board4'], ++ self.assertSummary(lines[2].text, 'arm', 'w+', ['board1'], + outcome=OUTCOME_WARN) +- self.assertSummary(lines[3].text, 'arm', 'w+', ['board1'], ++ self.assertSummary(lines[3].text, 'powerpc', 'w+', ['board2', 'board3'], + outcome=OUTCOME_WARN) +- self.assertSummary(lines[4].text, 'powerpc', 'w+', ['board2', 'board3'], ++ self.assertSummary(lines[4].text, 'sandbox', 'w+', ['board4'], + outcome=OUTCOME_WARN) + + # Second commit: The warnings should be listed +@@ -226,10 +226,10 @@ class TestBuild(unittest.TestCase): + + # Third commit: Still fails + self.assertEqual(lines[6].text, '03: %s' % commits[2][1]) +- self.assertSummary(lines[7].text, 'sandbox', '+', ['board4']) +- self.assertSummary(lines[8].text, 'arm', '', ['board1'], ++ self.assertSummary(lines[7].text, 'arm', '', ['board1'], + outcome=OUTCOME_OK) +- self.assertSummary(lines[9].text, 'powerpc', '+', ['board2', 'board3']) ++ self.assertSummary(lines[8].text, 'powerpc', '+', ['board2', 'board3']) ++ self.assertSummary(lines[9].text, 'sandbox', '+', ['board4']) + + # Expect a compiler error + self.assertEqual(lines[10].text, '+%s' % +@@ -237,8 +237,6 @@ class TestBuild(unittest.TestCase): + + # Fourth commit: Compile errors are fixed, just have warning for board3 + self.assertEqual(lines[11].text, '04: %s' % commits[3][1]) +- self.assertSummary(lines[12].text, 'sandbox', 'w+', ['board4'], +- outcome=OUTCOME_WARN) + expect = '%10s: ' % 'powerpc' + expect += ' ' + col.Color(col.GREEN, '') + expect += ' ' +@@ -246,7 +244,9 @@ class TestBuild(unittest.TestCase): + expect += ' ' + col.Color(col.YELLOW, 'w+') + expect += ' ' + expect += col.Color(col.YELLOW, ' %s' % 'board3') +- self.assertEqual(lines[13].text, expect) ++ self.assertEqual(lines[12].text, expect) ++ self.assertSummary(lines[13].text, 'sandbox', 'w+', ['board4'], ++ outcome=OUTCOME_WARN) + + # Compile error fixed + self.assertEqual(lines[14].text, '-%s' % +@@ -259,9 +259,9 @@ class TestBuild(unittest.TestCase): + + # Fifth commit + self.assertEqual(lines[16].text, '05: %s' % commits[4][1]) +- self.assertSummary(lines[17].text, 'sandbox', '+', ['board4']) +- self.assertSummary(lines[18].text, 'powerpc', '', ['board3'], ++ self.assertSummary(lines[17].text, 'powerpc', '', ['board3'], + outcome=OUTCOME_OK) ++ self.assertSummary(lines[18].text, 'sandbox', '+', ['board4']) + + # The second line of errors[3] is a duplicate, so buildman will drop it + expect = errors[3].rstrip().split('\n') +diff --git a/tools/buildman/toolchain.py b/tools/buildman/toolchain.py +index a65737fdf8..cc26e2ede5 100644 +--- a/tools/buildman/toolchain.py ++++ b/tools/buildman/toolchain.py +@@ -4,18 +4,19 @@ + + import re + import glob +-from HTMLParser import HTMLParser ++from html.parser import HTMLParser + import os + import sys + import tempfile +-import urllib2 ++import urllib.request, urllib.error, urllib.parse + + import bsettings + import command + import terminal ++import tools + + (PRIORITY_FULL_PREFIX, PRIORITY_PREFIX_GCC, PRIORITY_PREFIX_GCC_PATH, +- PRIORITY_CALC) = range(4) ++ PRIORITY_CALC) = list(range(4)) + + # Simple class to collect links from a page + class MyHTMLParser(HTMLParser): +@@ -100,15 +101,15 @@ class Toolchain: + raise_on_error=False) + self.ok = result.return_code == 0 + if verbose: +- print 'Tool chain test: ', ++ print('Tool chain test: ', end=' ') + if self.ok: +- print "OK, arch='%s', priority %d" % (self.arch, +- self.priority) ++ print("OK, arch='%s', priority %d" % (self.arch, ++ self.priority)) + else: +- print 'BAD' +- print 'Command: ', cmd +- print result.stdout +- print result.stderr ++ print('BAD') ++ print('Command: ', cmd) ++ print(result.stdout) ++ print(result.stderr) + else: + self.ok = True + +@@ -138,7 +139,7 @@ class Toolchain: + value = '' + for name, value in bsettings.GetItems('toolchain-wrapper'): + if not value: +- print "Warning: Wrapper not found" ++ print("Warning: Wrapper not found") + if value: + value = value + ' ' + +@@ -227,11 +228,11 @@ class Toolchains: + """ + toolchains = bsettings.GetItems('toolchain') + if show_warning and not toolchains: +- print ("Warning: No tool chains. Please run 'buildman " ++ print(("Warning: No tool chains. Please run 'buildman " + "--fetch-arch all' to download all available toolchains, or " + "add a [toolchain] section to your buildman config file " + "%s. See README for details" % +- bsettings.config_fname) ++ bsettings.config_fname)) + + paths = [] + for name, value in toolchains: +@@ -272,10 +273,10 @@ class Toolchains: + if add_it: + self.toolchains[toolchain.arch] = toolchain + elif verbose: +- print ("Toolchain '%s' at priority %d will be ignored because " ++ print(("Toolchain '%s' at priority %d will be ignored because " + "another toolchain for arch '%s' has priority %d" % + (toolchain.gcc, toolchain.priority, toolchain.arch, +- self.toolchains[toolchain.arch].priority)) ++ self.toolchains[toolchain.arch].priority))) + + def ScanPath(self, path, verbose): + """Scan a path for a valid toolchain +@@ -289,9 +290,9 @@ class Toolchains: + fnames = [] + for subdir in ['.', 'bin', 'usr/bin']: + dirname = os.path.join(path, subdir) +- if verbose: print " - looking in '%s'" % dirname ++ if verbose: print(" - looking in '%s'" % dirname) + for fname in glob.glob(dirname + '/*gcc'): +- if verbose: print " - found '%s'" % fname ++ if verbose: print(" - found '%s'" % fname) + fnames.append(fname) + return fnames + +@@ -321,9 +322,9 @@ class Toolchains: + Args: + verbose: True to print out progress information + """ +- if verbose: print 'Scanning for tool chains' ++ if verbose: print('Scanning for tool chains') + for name, value in self.prefixes: +- if verbose: print " - scanning prefix '%s'" % value ++ if verbose: print(" - scanning prefix '%s'" % value) + if os.path.exists(value): + self.Add(value, True, verbose, PRIORITY_FULL_PREFIX, name) + continue +@@ -335,10 +336,10 @@ class Toolchains: + for f in fname_list: + self.Add(f, True, verbose, PRIORITY_PREFIX_GCC_PATH, name) + if not fname_list: +- raise ValueError, ("No tool chain found for prefix '%s'" % ++ raise ValueError("No tool chain found for prefix '%s'" % + value) + for path in self.paths: +- if verbose: print " - scanning path '%s'" % path ++ if verbose: print(" - scanning path '%s'" % path) + fnames = self.ScanPath(path, verbose) + for fname in fnames: + self.Add(fname, True, verbose) +@@ -346,13 +347,13 @@ class Toolchains: + def List(self): + """List out the selected toolchains for each architecture""" + col = terminal.Color() +- print col.Color(col.BLUE, 'List of available toolchains (%d):' % +- len(self.toolchains)) ++ print(col.Color(col.BLUE, 'List of available toolchains (%d):' % ++ len(self.toolchains))) + if len(self.toolchains): +- for key, value in sorted(self.toolchains.iteritems()): +- print '%-10s: %s' % (key, value.gcc) ++ for key, value in sorted(self.toolchains.items()): ++ print('%-10s: %s' % (key, value.gcc)) + else: +- print 'None' ++ print('None') + + def Select(self, arch): + """Returns the toolchain for a given architecture +@@ -370,7 +371,7 @@ class Toolchains: + return self.toolchains[alias] + + if not arch in self.toolchains: +- raise ValueError, ("No tool chain found for arch '%s'" % arch) ++ raise ValueError("No tool chain found for arch '%s'" % arch) + return self.toolchains[arch] + + def ResolveReferences(self, var_dict, args): +@@ -464,9 +465,9 @@ class Toolchains: + links = [] + for version in versions: + url = '%s/%s/%s/' % (base, arch, version) +- print 'Checking: %s' % url +- response = urllib2.urlopen(url) +- html = response.read() ++ print('Checking: %s' % url) ++ response = urllib.request.urlopen(url) ++ html = tools.ToString(response.read()) + parser = MyHTMLParser(fetch_arch) + parser.feed(html) + if fetch_arch == 'list': +@@ -488,14 +489,14 @@ class Toolchains: + Full path to the downloaded archive file in that directory, + or None if there was an error while downloading + """ +- print 'Downloading: %s' % url ++ print('Downloading: %s' % url) + leaf = url.split('/')[-1] + tmpdir = tempfile.mkdtemp('.buildman') +- response = urllib2.urlopen(url) ++ response = urllib.request.urlopen(url) + fname = os.path.join(tmpdir, leaf) + fd = open(fname, 'wb') + meta = response.info() +- size = int(meta.getheaders('Content-Length')[0]) ++ size = int(meta.get('Content-Length')) + done = 0 + block_size = 1 << 16 + status = '' +@@ -504,19 +505,19 @@ class Toolchains: + while True: + buffer = response.read(block_size) + if not buffer: +- print chr(8) * (len(status) + 1), '\r', ++ print(chr(8) * (len(status) + 1), '\r', end=' ') + break + + done += len(buffer) + fd.write(buffer) +- status = r'%10d MiB [%3d%%]' % (done / 1024 / 1024, +- done * 100 / size) ++ status = r'%10d MiB [%3d%%]' % (done // 1024 // 1024, ++ done * 100 // size) + status = status + chr(8) * (len(status) + 1) +- print status, ++ print(status, end=' ') + sys.stdout.flush() + fd.close() + if done != size: +- print 'Error, failed to download' ++ print('Error, failed to download') + os.remove(fname) + fname = None + return tmpdir, fname +@@ -565,11 +566,11 @@ class Toolchains: + """ + # Fist get the URL for this architecture + col = terminal.Color() +- print col.Color(col.BLUE, "Downloading toolchain for arch '%s'" % arch) ++ print(col.Color(col.BLUE, "Downloading toolchain for arch '%s'" % arch)) + url = self.LocateArchUrl(arch) + if not url: +- print ("Cannot find toolchain for arch '%s' - use 'list' to list" % +- arch) ++ print(("Cannot find toolchain for arch '%s' - use 'list' to list" % ++ arch)) + return 2 + home = os.environ['HOME'] + dest = os.path.join(home, '.buildman-toolchains') +@@ -580,28 +581,28 @@ class Toolchains: + tmpdir, tarfile = self.Download(url) + if not tarfile: + return 1 +- print col.Color(col.GREEN, 'Unpacking to: %s' % dest), ++ print(col.Color(col.GREEN, 'Unpacking to: %s' % dest), end=' ') + sys.stdout.flush() + path = self.Unpack(tarfile, dest) + os.remove(tarfile) + os.rmdir(tmpdir) +- print ++ print() + + # Check that the toolchain works +- print col.Color(col.GREEN, 'Testing') ++ print(col.Color(col.GREEN, 'Testing')) + dirpath = os.path.join(dest, path) + compiler_fname_list = self.ScanPath(dirpath, True) + if not compiler_fname_list: +- print 'Could not locate C compiler - fetch failed.' ++ print('Could not locate C compiler - fetch failed.') + return 1 + if len(compiler_fname_list) != 1: +- print col.Color(col.RED, 'Warning, ambiguous toolchains: %s' % +- ', '.join(compiler_fname_list)) ++ print(col.Color(col.RED, 'Warning, ambiguous toolchains: %s' % ++ ', '.join(compiler_fname_list))) + toolchain = Toolchain(compiler_fname_list[0], True, True) + + # Make sure that it will be found by buildman + if not self.TestSettingsHasPath(dirpath): +- print ("Adding 'download' to config file '%s'" % +- bsettings.config_fname) ++ print(("Adding 'download' to config file '%s'" % ++ bsettings.config_fname)) + bsettings.SetItem('toolchain', 'download', '%s/*/*' % dest) + return 0 +-- +2.24.0 + diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-patman-Adjust-command-to-return-strings-instead-of-b.patch b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-patman-Adjust-command-to-return-strings-instead-of-b.patch new file mode 100644 index 00000000..4c4f7acb --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-patman-Adjust-command-to-return-strings-instead-of-b.patch @@ -0,0 +1,228 @@ +From 3b3e3c0f6c261a8c9f989d437dc261ba84467d4f Mon Sep 17 00:00:00 2001 +From: Simon Glass <sjg@chromium.org> +Date: Thu, 31 Oct 2019 07:42:50 -0600 +Subject: [PATCH] patman: Adjust 'command' to return strings instead of bytes + +At present all the 'command' methods return bytes. Most of the time we +actually want strings, so change this. We still need to keep the internal +representation as bytes since otherwise unicode strings might break over +a read() boundary (e.g. 4KB), causing errors. But we can convert the end +result to strings. + +Add a 'binary' parameter to cover the few cases where bytes are needed. + +Upstream-Status: Backport + +Signed-off-by: Simon Glass <sjg@chromium.org> +--- + tools/binman/cbfs_util_test.py | 2 +- + tools/binman/ftest.py | 2 +- + tools/patman/command.py | 31 +++++++++++++++++++++++-------- + tools/patman/tools.py | 29 +++++++++++++++++++++-------- + 4 files changed, 46 insertions(+), 18 deletions(-) + +diff --git a/tools/binman/cbfs_util_test.py b/tools/binman/cbfs_util_test.py +index 772c794ece..ddc2e09e35 100755 +--- a/tools/binman/cbfs_util_test.py ++++ b/tools/binman/cbfs_util_test.py +@@ -56,7 +56,7 @@ class TestCbfs(unittest.TestCase): + cls.have_lz4 = True + try: + tools.Run('lz4', '--no-frame-crc', '-c', +- tools.GetInputFilename('u-boot.bin')) ++ tools.GetInputFilename('u-boot.bin'), binary=True) + except: + cls.have_lz4 = False + +--- a/tools/binman/ftest.py ++++ b/tools/binman/ftest.py +@@ -151,7 +151,7 @@ class TestFunctional(unittest.TestCase): + self.have_lz4 = True + try: + tools.Run('lz4', '--no-frame-crc', '-c', +- os.path.join(self._indir, 'u-boot.bin')) ++ os.path.join(self._indir, 'u-boot.bin'), binary=True) + except: + self.have_lz4 = False + +diff --git a/tools/patman/command.py b/tools/patman/command.py +index 16299f3f5b..5fbd2c4a3e 100644 +--- a/tools/patman/command.py ++++ b/tools/patman/command.py +@@ -4,6 +4,7 @@ + + import os + import cros_subprocess ++import tools + + """Shell command ease-ups for Python.""" + +@@ -31,6 +32,13 @@ class CommandResult: + self.return_code = return_code + self.exception = exception + ++ def ToOutput(self, binary): ++ if not binary: ++ self.stdout = tools.ToString(self.stdout) ++ self.stderr = tools.ToString(self.stderr) ++ self.combined = tools.ToString(self.combined) ++ return self ++ + + # This permits interception of RunPipe for test purposes. If it is set to + # a function, then that function is called with the pipe list being +@@ -41,7 +49,7 @@ test_result = None + + def RunPipe(pipe_list, infile=None, outfile=None, + capture=False, capture_stderr=False, oneline=False, +- raise_on_error=True, cwd=None, **kwargs): ++ raise_on_error=True, cwd=None, binary=False, **kwargs): + """ + Perform a command pipeline, with optional input/output filenames. + +@@ -67,7 +75,7 @@ def RunPipe(pipe_list, infile=None, outfile=None, + else: + return test_result + # No result: fall through to normal processing +- result = CommandResult() ++ result = CommandResult(b'', b'', b'') + last_pipe = None + pipeline = list(pipe_list) + user_pipestr = '|'.join([' '.join(pipe) for pipe in pipe_list]) +@@ -93,29 +101,36 @@ def RunPipe(pipe_list, infile=None, outfile=None, + if raise_on_error: + raise Exception("Error running '%s': %s" % (user_pipestr, str)) + result.return_code = 255 +- return result ++ return result.ToOutput(binary) + + if capture: + result.stdout, result.stderr, result.combined = ( + last_pipe.CommunicateFilter(None)) + if result.stdout and oneline: +- result.output = result.stdout.rstrip('\r\n') ++ result.output = result.stdout.rstrip(b'\r\n') + result.return_code = last_pipe.wait() + else: + result.return_code = os.waitpid(last_pipe.pid, 0)[1] + if raise_on_error and result.return_code: + raise Exception("Error running '%s'" % user_pipestr) +- return result ++ return result.ToOutput(binary) + + def Output(*cmd, **kwargs): + kwargs['raise_on_error'] = kwargs.get('raise_on_error', True) + return RunPipe([cmd], capture=True, **kwargs).stdout + + def OutputOneLine(*cmd, **kwargs): ++ """Run a command and output it as a single-line string ++ ++ The command us expected to produce a single line of output ++ ++ Returns: ++ String containing output of command ++ """ + raise_on_error = kwargs.pop('raise_on_error', True) +- return (RunPipe([cmd], capture=True, oneline=True, +- raise_on_error=raise_on_error, +- **kwargs).stdout.strip()) ++ result = RunPipe([cmd], capture=True, oneline=True, ++ raise_on_error=raise_on_error, **kwargs).stdout.strip() ++ return result + + def Run(*cmd, **kwargs): + return RunPipe([cmd], **kwargs).stdout +diff --git a/tools/patman/tools.py b/tools/patman/tools.py +index 4a7fcdad21..3feddb292f 100644 +--- a/tools/patman/tools.py ++++ b/tools/patman/tools.py +@@ -186,7 +186,7 @@ def PathHasFile(path_spec, fname): + return True + return False + +-def Run(name, *args): ++def Run(name, *args, **kwargs): + """Run a tool with some arguments + + This runs a 'tool', which is a program used by binman to process files and +@@ -201,13 +201,14 @@ def Run(name, *args): + CommandResult object + """ + try: ++ binary = kwargs.get('binary') + env = None + if tool_search_paths: + env = dict(os.environ) + env['PATH'] = ':'.join(tool_search_paths) + ':' + env['PATH'] + all_args = (name,) + args + result = command.RunPipe([all_args], capture=True, capture_stderr=True, +- env=env, raise_on_error=False) ++ env=env, raise_on_error=False, binary=binary) + if result.return_code: + raise Exception("Error %d running '%s': %s" % + (result.return_code,' '.join(all_args), +@@ -375,7 +376,7 @@ def ToBytes(string): + """Convert a str type into a bytes type + + Args: +- string: string to convert value ++ string: string to convert + + Returns: + Python 3: A bytes type +@@ -385,6 +386,18 @@ def ToBytes(string): + return string.encode('utf-8') + return string + ++def ToString(bval): ++ """Convert a bytes type into a str type ++ ++ Args: ++ bval: bytes value to convert ++ ++ Returns: ++ Python 3: A bytes type ++ Python 2: A string type ++ """ ++ return bval.decode('utf-8') ++ + def Compress(indata, algo, with_header=True): + """Compress some data using a given algorithm + +@@ -406,14 +419,14 @@ def Compress(indata, algo, with_header=True): + fname = GetOutputFilename('%s.comp.tmp' % algo) + WriteFile(fname, indata) + if algo == 'lz4': +- data = Run('lz4', '--no-frame-crc', '-c', fname) ++ data = Run('lz4', '--no-frame-crc', '-c', fname, binary=True) + # cbfstool uses a very old version of lzma + elif algo == 'lzma': + outfname = GetOutputFilename('%s.comp.otmp' % algo) + Run('lzma_alone', 'e', fname, outfname, '-lc1', '-lp0', '-pb0', '-d8') + data = ReadFile(outfname) + elif algo == 'gzip': +- data = Run('gzip', '-c', fname) ++ data = Run('gzip', '-c', fname, binary=True) + else: + raise ValueError("Unknown algorithm '%s'" % algo) + if with_header: +@@ -446,13 +459,13 @@ def Decompress(indata, algo, with_header=True): + with open(fname, 'wb') as fd: + fd.write(indata) + if algo == 'lz4': +- data = Run('lz4', '-dc', fname) ++ data = Run('lz4', '-dc', fname, binary=True) + elif algo == 'lzma': + outfname = GetOutputFilename('%s.decomp.otmp' % algo) + Run('lzma_alone', 'd', fname, outfname) +- data = ReadFile(outfname) ++ data = ReadFile(outfname, binary=True) + elif algo == 'gzip': +- data = Run('gzip', '-cd', fname) ++ data = Run('gzip', '-cd', fname, binary=True) + else: + raise ValueError("Unknown algorithm '%s'" % algo) + return data +-- +2.24.0 + diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-patman-Drop-binary-parameter.patch b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-patman-Drop-binary-parameter.patch new file mode 100644 index 00000000..cee88472 --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-patman-Drop-binary-parameter.patch @@ -0,0 +1,105 @@ +From 3b1c0b09c99bfd30355a6ba87a15e9d408a51109 Mon Sep 17 00:00:00 2001 +From: Simon Glass <sjg@chromium.org> +Date: Sat, 24 Aug 2019 07:22:41 -0600 +Subject: [PATCH] patman: Drop binary parameter + +Since cros_subprocess use bytestrings now, this feature not needed. Drop +it. + +Upstream-Status: Backport + +Signed-off-by: Simon Glass <sjg@chromium.org> +--- + tools/patman/cros_subprocess.py | 3 +-- + tools/patman/tools.py | 15 +++++++-------- + 2 files changed, 8 insertions(+), 10 deletions(-) + +diff --git a/tools/patman/cros_subprocess.py b/tools/patman/cros_subprocess.py +index 06be64cc2c..0f0d60dfb7 100644 +--- a/tools/patman/cros_subprocess.py ++++ b/tools/patman/cros_subprocess.py +@@ -54,7 +54,7 @@ class Popen(subprocess.Popen): + """ + + def __init__(self, args, stdin=None, stdout=PIPE_PTY, stderr=PIPE_PTY, +- shell=False, cwd=None, env=None, binary=False, **kwargs): ++ shell=False, cwd=None, env=None, **kwargs): + """Cut-down constructor + + Args: +@@ -72,7 +72,6 @@ class Popen(subprocess.Popen): + """ + stdout_pty = None + stderr_pty = None +- self.binary = binary + + if stdout == PIPE_PTY: + stdout_pty = pty.openpty() +diff --git a/tools/patman/tools.py b/tools/patman/tools.py +index 0d4705db76..97441ca796 100644 +--- a/tools/patman/tools.py ++++ b/tools/patman/tools.py +@@ -186,7 +186,7 @@ def PathHasFile(path_spec, fname): + return True + return False + +-def Run(name, *args, **kwargs): ++def Run(name, *args): + """Run a tool with some arguments + + This runs a 'tool', which is a program used by binman to process files and +@@ -196,7 +196,6 @@ def Run(name, *args, **kwargs): + Args: + name: Command name to run + args: Arguments to the tool +- kwargs: Options to pass to command.run() + + Returns: + CommandResult object +@@ -206,8 +205,8 @@ def Run(name, *args, **kwargs): + if tool_search_paths: + env = dict(os.environ) + env['PATH'] = ':'.join(tool_search_paths) + ':' + env['PATH'] +- return command.Run(name, *args, capture=True, +- capture_stderr=True, env=env, **kwargs) ++ return command.Run(name, *args, capture=True, capture_stderr=True, ++ env=env) + except: + if env and not PathHasFile(env['PATH'], name): + msg = "Please install tool '%s'" % name +@@ -401,14 +400,14 @@ def Compress(indata, algo, with_header=True): + fname = GetOutputFilename('%s.comp.tmp' % algo) + WriteFile(fname, indata) + if algo == 'lz4': +- data = Run('lz4', '--no-frame-crc', '-c', fname, binary=True) ++ data = Run('lz4', '--no-frame-crc', '-c', fname) + # cbfstool uses a very old version of lzma + elif algo == 'lzma': + outfname = GetOutputFilename('%s.comp.otmp' % algo) + Run('lzma_alone', 'e', fname, outfname, '-lc1', '-lp0', '-pb0', '-d8') + data = ReadFile(outfname) + elif algo == 'gzip': +- data = Run('gzip', '-c', fname, binary=True) ++ data = Run('gzip', '-c', fname) + else: + raise ValueError("Unknown algorithm '%s'" % algo) + if with_header: +@@ -441,13 +440,13 @@ def Decompress(indata, algo, with_header=True): + with open(fname, 'wb') as fd: + fd.write(indata) + if algo == 'lz4': +- data = Run('lz4', '-dc', fname, binary=True) ++ data = Run('lz4', '-dc', fname) + elif algo == 'lzma': + outfname = GetOutputFilename('%s.decomp.otmp' % algo) + Run('lzma_alone', 'd', fname, outfname) + data = ReadFile(outfname) + elif algo == 'gzip': +- data = Run('gzip', '-cd', fname, binary=True) ++ data = Run('gzip', '-cd', fname) + else: + raise ValueError("Unknown algorithm '%s'" % algo) + return data +-- +2.24.0 + diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-patman-Update-command.Run-to-handle-failure-better.patch b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-patman-Update-command.Run-to-handle-failure-better.patch new file mode 100644 index 00000000..bd23c458 --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-patman-Update-command.Run-to-handle-failure-better.patch @@ -0,0 +1,42 @@ +From 6eace398072a62e74f10f412ffadfe51b7402395 Mon Sep 17 00:00:00 2001 +From: Simon Glass <sjg@chromium.org> +Date: Sat, 24 Aug 2019 07:22:42 -0600 +Subject: [PATCH] patman: Update command.Run() to handle failure better + +At present tools are not expected to fail. If they do an exception is +raised but there is no detail about what went wrong. This makes it hard +to debug if something does actually go wrong. + +Fix this by outputting both stderr and stdout on failure. + +Upstream-Status: Backport + +Signed-off-by: Simon Glass <sjg@chromium.org> +--- + tools/patman/tools.py | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/tools/patman/tools.py b/tools/patman/tools.py +index 97441ca796..0952681579 100644 +--- a/tools/patman/tools.py ++++ b/tools/patman/tools.py +@@ -205,8 +205,14 @@ def Run(name, *args): + if tool_search_paths: + env = dict(os.environ) + env['PATH'] = ':'.join(tool_search_paths) + ':' + env['PATH'] +- return command.Run(name, *args, capture=True, capture_stderr=True, +- env=env) ++ all_args = (name,) + args ++ result = command.RunPipe([all_args], capture=True, capture_stderr=True, ++ env=env, raise_on_error=False) ++ if result.return_code: ++ raise Exception("Error %d running '%s': %s" % ++ (result.return_code,' '.join(all_args), ++ result.stderr)) ++ return result.stdout + except: + if env and not PathHasFile(env['PATH'], name): + msg = "Please install tool '%s'" % name +-- +2.24.0 + diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-pylibfdt-Convert-to-Python-3.patch b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-pylibfdt-Convert-to-Python-3.patch new file mode 100644 index 00000000..e74609de --- /dev/null +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq/0001-pylibfdt-Convert-to-Python-3.patch @@ -0,0 +1,117 @@ +From b4cf5f1df741e8781bed6149291823cd1a4b8baa Mon Sep 17 00:00:00 2001 +From: Simon Glass <sjg@chromium.org> +Date: Thu, 31 Oct 2019 07:42:59 -0600 +Subject: [PATCH] pylibfdt: Convert to Python 3 + +Build this swig module with Python 3. + +Upstream-Status: Backport + +Signed-off-by: Simon Glass <sjg@chromium.org> +--- + scripts/dtc/pylibfdt/Makefile | 2 +- + scripts/dtc/pylibfdt/libfdt.i_shipped | 2 +- + scripts/dtc/pylibfdt/setup.py | 2 +- + tools/binman/entry.py | 16 ++-------------- + tools/binman/entry_test.py | 15 --------------- + 5 files changed, 5 insertions(+), 32 deletions(-) + +diff --git a/scripts/dtc/pylibfdt/Makefile b/scripts/dtc/pylibfdt/Makefile +index 15e66ad44d..42342c75bb 100644 +--- a/scripts/dtc/pylibfdt/Makefile ++++ b/scripts/dtc/pylibfdt/Makefile +@@ -21,7 +21,7 @@ quiet_cmd_pymod = PYMOD $@ + CPPFLAGS="$(HOSTCFLAGS) -I$(LIBFDT_srcdir)" OBJDIR=$(obj) \ + SOURCES="$(PYLIBFDT_srcs)" \ + SWIG_OPTS="-I$(LIBFDT_srcdir) -I$(LIBFDT_srcdir)/.." \ +- $(PYTHON2) $< --quiet build_ext --inplace ++ $(PYTHON3) $< --quiet build_ext --inplace + + $(obj)/_libfdt.so: $(src)/setup.py $(PYLIBFDT_srcs) FORCE + $(call if_changed,pymod) +diff --git a/scripts/dtc/pylibfdt/libfdt.i_shipped b/scripts/dtc/pylibfdt/libfdt.i_shipped +index 76e61e98bd..53b70f8f5e 100644 +--- a/scripts/dtc/pylibfdt/libfdt.i_shipped ++++ b/scripts/dtc/pylibfdt/libfdt.i_shipped +@@ -624,7 +624,7 @@ class Fdt(FdtRo): + Raises: + FdtException if no parent found or other error occurs + """ +- val = val.encode('utf-8') + '\0' ++ val = val.encode('utf-8') + b'\0' + return check_err(fdt_setprop(self._fdt, nodeoffset, prop_name, + val, len(val)), quiet) + +diff --git a/scripts/dtc/pylibfdt/setup.py b/scripts/dtc/pylibfdt/setup.py +index 4f7cf042bf..992cdec30f 100755 +--- a/scripts/dtc/pylibfdt/setup.py ++++ b/scripts/dtc/pylibfdt/setup.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python2 ++#!/usr/bin/env python3 + + """ + setup.py file for SWIG libfdt +diff --git a/tools/binman/entry.py b/tools/binman/entry.py +index 409c0dca93..5bf5be4794 100644 +--- a/tools/binman/entry.py ++++ b/tools/binman/entry.py +@@ -7,16 +7,7 @@ + from __future__ import print_function + + from collections import namedtuple +- +-# importlib was introduced in Python 2.7 but there was a report of it not +-# working in 2.7.12, so we work around this: +-# http://lists.denx.de/pipermail/u-boot/2016-October/269729.html +-try: +- import importlib +- have_importlib = True +-except: +- have_importlib = False +- ++import importlib + import os + import sys + +@@ -119,10 +110,7 @@ class Entry(object): + old_path = sys.path + sys.path.insert(0, os.path.join(our_path, 'etype')) + try: +- if have_importlib: +- module = importlib.import_module(module_name) +- else: +- module = __import__(module_name) ++ module = importlib.import_module(module_name) + except ImportError as e: + raise ValueError("Unknown entry type '%s' in node '%s' (expected etype/%s.py, error '%s'" % + (etype, node_path, module_name, e)) +diff --git a/tools/binman/entry_test.py b/tools/binman/entry_test.py +index 13f5864516..277e10b585 100644 +--- a/tools/binman/entry_test.py ++++ b/tools/binman/entry_test.py +@@ -39,21 +39,6 @@ class TestEntry(unittest.TestCase): + else: + import entry + +- def test1EntryNoImportLib(self): +- """Test that we can import Entry subclassess successfully""" +- sys.modules['importlib'] = None +- global entry +- self._ReloadEntry() +- entry.Entry.Create(None, self.GetNode(), 'u-boot') +- self.assertFalse(entry.have_importlib) +- +- def test2EntryImportLib(self): +- del sys.modules['importlib'] +- global entry +- self._ReloadEntry() +- entry.Entry.Create(None, self.GetNode(), 'u-boot-spl') +- self.assertTrue(entry.have_importlib) +- + def testEntryContents(self): + """Test the Entry bass class""" + import entry +-- +2.24.0 + diff --git a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq_2018.09.bb b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq_2019.10.bb index 8438134d..571fadb7 100644 --- a/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq_2018.09.bb +++ b/bsp/meta-freescale/recipes-bsp/u-boot/u-boot-qoriq_2019.10.bb @@ -1,21 +1,48 @@ require recipes-bsp/u-boot/u-boot.inc -require u-boot-qoriq-common_${PV}.inc DESCRIPTION = "U-Boot provided by Freescale with focus on QorIQ boards" PROVIDES += "u-boot" +inherit fsl-u-boot-localversion + +LICENSE = "GPLv2 & BSD-3-Clause & BSD-2-Clause & LGPL-2.0 & LGPL-2.1" +LIC_FILES_CHKSUM = " \ + file://Licenses/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://Licenses/bsd-2-clause.txt;md5=6a31f076f5773aabd8ff86191ad6fdd5 \ + file://Licenses/bsd-3-clause.txt;md5=4a1190eac56a9db675d58ebe86eaf50c \ + file://Licenses/lgpl-2.0.txt;md5=5f30f0716dfdd0d91eb439ebec522ec2 \ + file://Licenses/lgpl-2.1.txt;md5=4fbd65380cdd255951079008b364516c \ +" + +SRC_URI = "git://source.codeaurora.org/external/qoriq/qoriq-components/u-boot;nobranch=1 \ + file://0001-patman-Drop-binary-parameter.patch \ + file://0001-patman-Update-command.Run-to-handle-failure-better.patch \ + file://0001-patman-Adjust-command-to-return-strings-instead-of-b.patch \ + file://0001-pylibfdt-Convert-to-Python-3.patch \ + file://0001-binman-Convert-a-few-tests-to-Python-3.patch \ + file://0001-binman-Move-to-use-Python-3.patch \ + file://0001-buildman-Convert-to-Python-3.patch \ + file://0001-Remove-redundant-YYLOC-global-declaration.patch \ +" +SRCREV= "1e55b2f9e7f56b76569089b9e950f49c1579580e" + +S = "${WORKDIR}/git" +B = "${WORKDIR}/build" +PV_append = "+fslgit" +LOCALVERSION = "+fsl" + INHIBIT_DEFAULT_DEPS = "1" -DEPENDS = "libgcc virtual/${TARGET_PREFIX}gcc bison-native bc-native swig-native python-native" -DEPENDS_append_qoriq-arm64 = " change-file-endianess-native dtc-native tcl-native" -DEPENDS_append_qoriq-arm = " change-file-endianess-native dtc-native tcl-native" +DEPENDS = "libgcc virtual/${TARGET_PREFIX}gcc bison-native bc-native swig-native python3-native" +DEPENDS_append_qoriq-arm64 = " dtc-native" +DEPENDS_append_qoriq-arm = " dtc-native" DEPENDS_append_qoriq-ppc = " boot-format-native" python () { - if d.getVar("TCMODE", True) == "external-fsl": + if d.getVar("TCMODE") == "external-fsl": return - ml = d.getVar("MULTILIB_VARIANTS", True) - arch = d.getVar("OVERRIDES", True) + ml = d.getVar("MULTILIB_VARIANTS") + arch = d.getVar("OVERRIDES") if "e5500-64b:" in arch or "e6500-64b:" in arch: if not "lib32" in ml: @@ -46,6 +73,7 @@ ENDIANNESS_LD = "${@bb.utils.contains("LE_UBOOT_FOR_ARMBE_TARGET", "1", "-EL", " WRAP_TARGET_PREFIX ?= "${TARGET_PREFIX}" EXTRA_OEMAKE = 'CROSS_COMPILE=${WRAP_TARGET_PREFIX} CC="${WRAP_TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS} ${ENDIANNESS_GCC}" LD="${WRAP_TARGET_PREFIX}ld ${ENDIANNESS_LD}" V=1' EXTRA_OEMAKE += 'HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}"' +EXTRA_OEMAKE += 'STAGING_INCDIR=${STAGING_INCDIR_NATIVE} STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE}' do_compile_append_qoriq() { unset i j k diff --git a/bsp/meta-freescale/recipes-bsp/uefi/uefi_git.bb b/bsp/meta-freescale/recipes-bsp/uefi/uefi_git.bb index 8b63f501..f94a67e2 100644 --- a/bsp/meta-freescale/recipes-bsp/uefi/uefi_git.bb +++ b/bsp/meta-freescale/recipes-bsp/uefi/uefi_git.bb @@ -3,10 +3,10 @@ SECTION = "bootloaders" LICENSE = "NXP-Binary-EULA" LIC_FILES_CHKSUM = "file://NXP-Binary-EULA;md5=343ec8f06efc37467a6de53686fa6315" -inherit deploy fsl-eula-unpack +inherit deploy -SRC_URI = "git://github.com/NXP/qoriq-uefi-binary.git;fsl-eula=true;nobranch=1" -SRCREV= "5b259f75decbc478bcab0612d79a58562bef1838" +SRC_URI = "git://github.com/NXP/qoriq-uefi-binary.git;nobranch=1" +SRCREV= "e95ed52322f15437f98dee2b27de45a7495d648c" S = "${WORKDIR}/git" |