1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0+ 3# 4# script to generate FIT image source for K3 Family boards with 5# ATF, OPTEE, SPL and multiple device trees (given on the command line). 6# Inspired from board/sunxi/mksunxi_fit_atf.sh 7# 8# usage: $0 <dt_name> [<dt_name> [<dt_name] ...] 9 10[ -z "$ATF" ] && ATF="bl31.bin" 11 12if [ ! -f $ATF ]; then 13 echo "WARNING ATF file $ATF NOT found, resulting binary is non-functional" >&2 14 ATF=/dev/null 15fi 16 17[ -z "$TEE" ] && TEE="bl32.bin" 18 19if [ ! -f $TEE ]; then 20 echo "WARNING OPTEE file $TEE NOT found, resulting might be non-functional" >&2 21 TEE=/dev/null 22fi 23 24cat << __HEADER_EOF 25/dts-v1/; 26 27/ { 28 description = "Configuration to load ATF and SPL"; 29 #address-cells = <1>; 30 31 images { 32 atf { 33 description = "ARM Trusted Firmware"; 34 data = /incbin/("$ATF"); 35 type = "firmware"; 36 arch = "arm64"; 37 compression = "none"; 38 os = "arm-trusted-firmware"; 39 load = <0x70000000>; 40 entry = <0x70000000>; 41 }; 42 tee { 43 description = "OPTEE"; 44 data = /incbin/("$TEE"); 45 type = "tee"; 46 arch = "arm64"; 47 compression = "none"; 48 os = "tee"; 49 load = <0x9e800000>; 50 entry = <0x9e800000>; 51 }; 52 spl { 53 description = "SPL (64-bit)"; 54 data = /incbin/("spl/u-boot-spl-nodtb.bin"); 55 type = "standalone"; 56 os = "U-Boot"; 57 arch = "arm64"; 58 compression = "none"; 59 load = <0x80080000>; 60 entry = <0x80080000>; 61 }; 62__HEADER_EOF 63 64for dtname in $* 65do 66 cat << __FDT_IMAGE_EOF 67 $(basename $dtname) { 68 description = "$(basename $dtname .dtb)"; 69 data = /incbin/("$dtname"); 70 type = "flat_dt"; 71 arch = "arm"; 72 compression = "none"; 73 }; 74__FDT_IMAGE_EOF 75done 76 77cat << __CONF_HEADER_EOF 78 }; 79 configurations { 80 default = "$(basename $1)"; 81 82__CONF_HEADER_EOF 83 84for dtname in $* 85do 86 cat << __CONF_SECTION_EOF 87 $(basename $dtname) { 88 description = "$(basename $dtname .dtb)"; 89 firmware = "atf"; 90 loadables = "tee", "spl"; 91 fdt = "$(basename $dtname)"; 92 }; 93__CONF_SECTION_EOF 94done 95 96cat << __ITS_EOF 97 }; 98}; 99__ITS_EOF 100