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