scripts: mkits.sh make it possible to specify fdt@#
Some bootloaders are really keen on just one special fdt in a multi-image fit image. This is a problem, because currently this is fixed to "fdt@1". This patch introduces a new device variable: DEVICE_FDT_NUM that allows to specify the right fdt number. If the value is absent "1" will be chosen. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
This commit is contained in:
		| @@ -158,6 +158,7 @@ define Build/fit | |||||||
| 		-D $(DEVICE_NAME) -o $@.its -k $@ \ | 		-D $(DEVICE_NAME) -o $@.its -k $@ \ | ||||||
| 		$(if $(word 2,$(1)),-d $(word 2,$(1))) -C $(word 1,$(1)) \ | 		$(if $(word 2,$(1)),-d $(word 2,$(1))) -C $(word 1,$(1)) \ | ||||||
| 		-a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \ | 		-a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \ | ||||||
|  | 		$(if $(DEVICE_FDT_NUM),-n $(DEVICE_FDT_NUM)) \ | ||||||
| 		-c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config@1") \ | 		-c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config@1") \ | ||||||
| 		-A $(LINUX_KARCH) -v $(LINUX_VERSION) | 		-A $(LINUX_KARCH) -v $(LINUX_VERSION) | ||||||
| 	PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@.new | 	PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@.new | ||||||
|   | |||||||
| @@ -432,6 +432,7 @@ define Device/Init | |||||||
|   DEVICE_DTS := |   DEVICE_DTS := | ||||||
|   DEVICE_DTS_CONFIG := |   DEVICE_DTS_CONFIG := | ||||||
|   DEVICE_DTS_DIR := |   DEVICE_DTS_DIR := | ||||||
|  |   DEVICE_FDT_NUM := | ||||||
|   SOC := |   SOC := | ||||||
|  |  | ||||||
|   BOARD_NAME := |   BOARD_NAME := | ||||||
| @@ -453,8 +454,9 @@ DEFAULT_DEVICE_VARS := \ | |||||||
|   DEVICE_NAME KERNEL KERNEL_INITRAMFS KERNEL_INITRAMFS_IMAGE KERNEL_SIZE \ |   DEVICE_NAME KERNEL KERNEL_INITRAMFS KERNEL_INITRAMFS_IMAGE KERNEL_SIZE \ | ||||||
|   CMDLINE UBOOTENV_IN_UBI KERNEL_IN_UBI BLOCKSIZE PAGESIZE SUBPAGESIZE \ |   CMDLINE UBOOTENV_IN_UBI KERNEL_IN_UBI BLOCKSIZE PAGESIZE SUBPAGESIZE \ | ||||||
|   VID_HDR_OFFSET UBINIZE_OPTS UBINIZE_PARTS MKUBIFS_OPTS DEVICE_DTS \ |   VID_HDR_OFFSET UBINIZE_OPTS UBINIZE_PARTS MKUBIFS_OPTS DEVICE_DTS \ | ||||||
|   DEVICE_DTS_CONFIG DEVICE_DTS_DIR SOC BOARD_NAME UIMAGE_NAME SUPPORTED_DEVICES \ |   DEVICE_DTS_CONFIG DEVICE_DTS_DIR DEVICE_FDT_NUM SOC BOARD_NAME \ | ||||||
|   IMAGE_METADATA KERNEL_ENTRY KERNEL_LOADADDR UBOOT_PATH IMAGE_SIZE \ |   UIMAGE_NAME SUPPORTED_DEVICES IMAGE_METADATA KERNEL_ENTRY KERNEL_LOADADDR \ | ||||||
|  |   UBOOT_PATH IMAGE_SIZE \ | ||||||
|   DEVICE_COMPAT_VERSION DEVICE_COMPAT_MESSAGE \ |   DEVICE_COMPAT_VERSION DEVICE_COMPAT_MESSAGE \ | ||||||
|   DEVICE_VENDOR DEVICE_MODEL DEVICE_VARIANT \ |   DEVICE_VENDOR DEVICE_MODEL DEVICE_VARIANT \ | ||||||
|   DEVICE_ALT0_VENDOR DEVICE_ALT0_MODEL DEVICE_ALT0_VARIANT \ |   DEVICE_ALT0_VENDOR DEVICE_ALT0_MODEL DEVICE_ALT0_VARIANT \ | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ | |||||||
|  |  | ||||||
| usage() { | usage() { | ||||||
| 	printf "Usage: %s -A arch -C comp -a addr -e entry" "$(basename "$0")" | 	printf "Usage: %s -A arch -C comp -a addr -e entry" "$(basename "$0")" | ||||||
| 	printf " -v version -k kernel [-D name -d dtb] -o its_file" | 	printf " -v version -k kernel [-D name -n address -d dtb] -o its_file" | ||||||
|  |  | ||||||
| 	printf "\n\t-A ==> set architecture to 'arch'" | 	printf "\n\t-A ==> set architecture to 'arch'" | ||||||
| 	printf "\n\t-C ==> set compression type 'comp'" | 	printf "\n\t-C ==> set compression type 'comp'" | ||||||
| @@ -26,12 +26,15 @@ usage() { | |||||||
| 	printf "\n\t-v ==> set kernel version to 'version'" | 	printf "\n\t-v ==> set kernel version to 'version'" | ||||||
| 	printf "\n\t-k ==> include kernel image 'kernel'" | 	printf "\n\t-k ==> include kernel image 'kernel'" | ||||||
| 	printf "\n\t-D ==> human friendly Device Tree Blob 'name'" | 	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 'dtb'" | ||||||
| 	printf "\n\t-o ==> create output file 'its_file'\n" | 	printf "\n\t-o ==> create output file 'its_file'\n" | ||||||
| 	exit 1 | 	exit 1 | ||||||
| } | } | ||||||
|  |  | ||||||
| while getopts ":A:a:c:C:D:d:e:k:o:v:" OPTION | FDTNUM=1 | ||||||
|  |  | ||||||
|  | while getopts ":A:a:c:C:D:d:e:k:n:o:v:" OPTION | ||||||
| do | do | ||||||
| 	case $OPTION in | 	case $OPTION in | ||||||
| 		A ) ARCH=$OPTARG;; | 		A ) ARCH=$OPTARG;; | ||||||
| @@ -42,6 +45,7 @@ do | |||||||
| 		d ) DTB=$OPTARG;; | 		d ) DTB=$OPTARG;; | ||||||
| 		e ) ENTRY_ADDR=$OPTARG;; | 		e ) ENTRY_ADDR=$OPTARG;; | ||||||
| 		k ) KERNEL=$OPTARG;; | 		k ) KERNEL=$OPTARG;; | ||||||
|  | 		n ) FDTNUM=$OPTARG;; | ||||||
| 		o ) OUTPUT=$OPTARG;; | 		o ) OUTPUT=$OPTARG;; | ||||||
| 		v ) VERSION=$OPTARG;; | 		v ) VERSION=$OPTARG;; | ||||||
| 		* ) echo "Invalid option passed to '$0' (options:$*)" | 		* ) echo "Invalid option passed to '$0' (options:$*)" | ||||||
| @@ -61,7 +65,7 @@ ARCH_UPPER=$(echo "$ARCH" | tr '[:lower:]' '[:upper:]') | |||||||
| # Conditionally create fdt information | # Conditionally create fdt information | ||||||
| if [ -n "${DTB}" ]; then | if [ -n "${DTB}" ]; then | ||||||
| 	FDT_NODE=" | 	FDT_NODE=" | ||||||
| 		fdt@1 { | 		fdt@$FDTNUM { | ||||||
| 			description = \"${ARCH_UPPER} OpenWrt ${DEVICE} device tree blob\"; | 			description = \"${ARCH_UPPER} OpenWrt ${DEVICE} device tree blob\"; | ||||||
| 			data = /incbin/(\"${DTB}\"); | 			data = /incbin/(\"${DTB}\"); | ||||||
| 			type = \"flat_dt\"; | 			type = \"flat_dt\"; | ||||||
| @@ -75,7 +79,7 @@ if [ -n "${DTB}" ]; then | |||||||
| 			}; | 			}; | ||||||
| 		}; | 		}; | ||||||
| " | " | ||||||
| 	FDT_PROP="fdt = \"fdt@1\";" | 	FDT_PROP="fdt = \"fdt@$FDTNUM\";" | ||||||
| fi | fi | ||||||
|  |  | ||||||
| # Create a default, fully populated DTS file | # Create a default, fully populated DTS file | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Christian Lamparter
					Christian Lamparter