diff --git a/classes/image_types_tegra.bbclass b/classes/image_types_tegra.bbclass index 5c9b90a1..d7dd9fb7 100644 --- a/classes/image_types_tegra.bbclass +++ b/classes/image_types_tegra.bbclass @@ -46,6 +46,7 @@ IMAGE_TEGRAFLASH_ROOTFS ?= "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${IMAGE_TEGRAFLAS TEGRAFLASH_ROOTFS_EXTERNAL = "${@'1' if d.getVar('TNSPEC_BOOTDEV') != 'mmcblk0p1' else '0'}" ROOTFS_DEVICE_FOR_INITRD_FLASH = "${@tegra_rootfs_device(d)}" TEGRAFLASH_NO_INTERNAL_STORAGE ??= "0" +OVERLAY_DTB_FILE ??= "" def tegra_initrd_image(d): if d.getVar('IMAGE_UBOOT'): @@ -297,22 +298,44 @@ copy_dtbs() { bbnote "Overwriting $destination/$dtbf with KERNEL_DEVICETREE content" rm -f $destination/$dtbf fi - bbnote "Copying KERNEL_DEVICETREE entry $dtbf to $destination" - cp -L "${DEPLOY_DIR_IMAGE}/$dtbf" $destination/$dtbf + bbnote "Copying KERNEL_DEVICETREE entry $dtb to $destination" + cp -L "${DEPLOY_DIR_IMAGE}/$dtb" $destination/$dtbf done if [ -n "${EXTERNAL_KERNEL_DEVICETREE}" ]; then - for dtb in $(find "${EXTERNAL_KERNEL_DEVICETREE}" \( -name '*.dtb' -o -name '*.dtbo' \) -printf '%P\n' | sort); do + for dtb in $(find "${EXTERNAL_KERNEL_DEVICETREE}" \( -name '*.dtb' \) -printf '%P\n' | sort); do dtbf=`basename $dtb` if [ -e $destination/$dtbf ]; then bbnote "Overwriting $destination/$dtbf with EXTERNAL_KERNEL_DEVICETREE content" rm -f $destination/$dtbf fi - bbnote "Copying EXTERNAL_KERNEL_DEVICETREE entry $dtbf to $destination" - cp -L "${EXTERNAL_KERNEL_DEVICETREE}/$dtbf" $destination/$dtbf + bbnote "Copying EXTERNAL_KERNEL_DEVICETREE entry $dtb to $destination" + cp -L "${EXTERNAL_KERNEL_DEVICETREE}/$dtb" $destination/$dtbf done fi } +copy_dtb_overlays() { + local destination=$1 + local dtb dtbf extdtb + local extraoverlays=$(echo "${OVERLAY_DTB_FILE}" | sed -e"s/,/ /g") + if [ -n "${IMAGE_TEGRAFLASH_INITRD_FLASHER}" ]; then + extraoverlays="$extraoverlays L4TConfiguration-rcmboot.dtbo" + fi + for dtb in ${TEGRA_BOOTCONTROL_OVERLAYS} ${TEGRA_PLUGIN_MANAGER_OVERLAYS} $extraoverlays; do + dtbf=`basename $dtb` + if [ -n "${EXTERNAL_KERNEL_DEVICETREE}" ]; then + local extdtb=$(find "${EXTERNAL_KERNEL_DEVICETREE}" -name $dtbf -printf '%P' 2>/dev/null) + if [ -n "$extdtb" ]; then + bbnote "Copying external overlay $extdtb to $destination" + cp -L "${EXTERNAL_KERNEL_DEVICETREE}/$extdtb" $destination/$dtbf + continue + fi + fi + bbnote "Copying overlay $dtb to $destination" + cp -L "${DEPLOY_DIR_IMAGE}/$dtb" $destination/$dtbf + done +} + create_tegraflash_pkg() { : } @@ -347,14 +370,18 @@ create_tegraflash_pkg:tegra194() { cp -R ${STAGING_DATADIR}/nv_tegra/rollback/t${@d.getVar('NVIDIA_CHIP')[2:]}x ./rollback/ cp ${STAGING_DATADIR}/tegraflash/flashvars . sed -i -e "s/@OVERLAY_DTB_FILE@/${OVERLAY_DTB_FILE}/" ./flashvars + cat >> ./flashvars <> ./flashvars <> ./flashvars <