From: Tomasz Maciej Nowak <[email protected]> Some older U-Boot versions don't know about Device Tree overlays, which could be used to accommodate for different variants of single board. Extend fit command to pack multiple dtb to workaround that shortcoming.
Signed-off-by: Tomasz Maciej Nowak <[email protected]> --- v1 -> v2 No changes. include/image-commands.mk | 2 +- scripts/mkits.sh | 51 +++++++++++++++++++++-------- target/linux/airoha/image/an7581.mk | 2 +- 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/include/image-commands.mk b/include/image-commands.mk index fb5ad8e51e0e..b1c99efe4cb1 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -438,7 +438,7 @@ define Build/fit-its -D $(DEVICE_NAME) -o [email protected] -k $@ \ -C $(word 1,$(1)) \ $(if $(DEVICE_DTS),\ - -d $(KERNEL_BUILD_DIR)/image-$$(basename $(firstword $(DEVICE_DTS)).dtb)) \ + $(foreach dts, $(DEVICE_DTS), -d $(dts):$(KERNEL_BUILD_DIR)/image-$$(basename $(dts)).dtb)) \ $(if $(findstring with-rootfs,$(word 2,$(1))),-r $(IMAGE_ROOTFS)) \ $(if $(findstring with-initrd,$(word 2,$(1))), \ $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS_SEPARATE), \ diff --git a/scripts/mkits.sh b/scripts/mkits.sh index 33ef3012c5c6..94592b932fce 100755 --- a/scripts/mkits.sh +++ b/scripts/mkits.sh @@ -29,7 +29,7 @@ usage() { printf "\n\t-k ==> include kernel image 'kernel'" printf "\n\t-D ==> human friendly Device Tree Blob 'name'" printf "\n\t-n ==> fdt unit-address 'address'" - printf "\n\t-d ==> include Device Tree Blob 'dtb'" + printf "\n\t-d ==> include Device Tree Blob 'name:dtb'" printf "\n\t-r ==> include RootFS blob 'rootfs'" printf "\n\t-H ==> specify hash algo instead of SHA1" printf "\n\t-l ==> legacy mode character (@ etc otherwise -)" @@ -48,6 +48,7 @@ HASH=sha1 LOADABLES= DTOVERLAY= DTADDR= +DTB= while getopts ":A:a:c:C:D:d:e:f:i:k:l:n:o:O:v:r:s:H:" OPTION do @@ -57,7 +58,7 @@ do c ) CONFIG=$OPTARG;; C ) COMPRESS=$OPTARG;; D ) DEVICE=$OPTARG;; - d ) DTB=$OPTARG;; + d ) DTB="$DTB ${OPTARG}";; e ) ENTRY_ADDR=$OPTARG;; f ) COMPATIBLE=$OPTARG;; i ) INITRD=$OPTARG;; @@ -117,13 +118,20 @@ if [ -n "${INITRD}" ]; then INITRD_PROP="ramdisk=\"initrd${REFERENCE_CHAR}${INITRDNUM}\";" fi +DEFCONFIG="$CONFIG" +FDT_NODE="" +CONFIGS="" # Conditionally create fdt information if [ -n "${DTB}" ]; then - FDT_NODE=" + for dtb in $DTB; do + dtb_blob=${dtb##*:} + dtb_name=${dtb%%:*} + FDT_NODE="$FDT_NODE + fdt${REFERENCE_CHAR}$FDTNUM { description = \"${ARCH_UPPER} OpenWrt ${DEVICE} device tree blob\"; ${COMPATIBLE_PROP} - data = /incbin/(\"${DTB}\"); + data = /incbin/(\"${dtb_blob}\"); type = \"flat_dt\"; ${DTADDR:+load = <${DTADDR}>;} arch = \"${ARCH}\"; @@ -136,7 +144,29 @@ if [ -n "${DTB}" ]; then }; }; " - FDT_PROP="fdt = \"fdt${REFERENCE_CHAR}$FDTNUM\";" + CONFIGS="$CONFIGS + ${CONFIG:-$dtb_name} { + description = \"OpenWrt ${dtb_name}\"; + kernel = \"kernel${REFERENCE_CHAR}1\"; + fdt = \"fdt${REFERENCE_CHAR}$FDTNUM\"; + ${LOADABLES:+loadables = ${LOADABLES};} + ${COMPATIBLE_PROP} + ${INITRD_PROP} + }; +" + FDTNUM=$((FDTNUM + 1)) + CONFIG="" + done +else + CONFIGS=" + ${CONFIG} { + description = \"OpenWrt ${DEVICE}\"; + kernel = \"kernel${REFERENCE_CHAR}1\"; + ${LOADABLES:+loadables = ${LOADABLES};} + ${COMPATIBLE_PROP} + ${INITRD_PROP} + }; +" fi # add DT overlay blobs @@ -226,15 +256,8 @@ ${ROOTFS_NODE} }; configurations { - default = \"${CONFIG}\"; - ${CONFIG} { - description = \"OpenWrt ${DEVICE}\"; - kernel = \"kernel${REFERENCE_CHAR}1\"; - ${FDT_PROP} - ${LOADABLES:+loadables = ${LOADABLES};} - ${COMPATIBLE_PROP} - ${INITRD_PROP} - }; + default = \"${DEFCONFIG}\"; + ${CONFIGS} ${OVCONFIGS} }; };" diff --git a/target/linux/airoha/image/an7581.mk b/target/linux/airoha/image/an7581.mk index 0af5d5e1f8c2..2e670f410f1c 100644 --- a/target/linux/airoha/image/an7581.mk +++ b/target/linux/airoha/image/an7581.mk @@ -29,7 +29,7 @@ define Build/an7581-chainloader -a 0x80200000 -e 0x80200000 \ -c conf-uboot \ -A arm64 -v u-boot \ - -d $(STAGING_DIR_IMAGE)/an7581_$1-u-boot.dtb \ + -d $(DEVICE_NAME):$(STAGING_DIR_IMAGE)/an7581_$1-u-boot.dtb \ -s 0x82000000 PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) \ $(STAGING_DIR_HOST)/bin/mkimage \ -- 2.55.0 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
