1*4882a593Smuzhiyun# 2*4882a593Smuzhiyun# (C) Copyright 2000-2006 3*4882a593Smuzhiyun# Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0+ 6*4882a593Smuzhiyun# 7*4882a593Smuzhiyun 8*4882a593Smuzhiyunextra-$(CONFIG_SPL_BUILD) := start.o 9*4882a593Smuzhiyun 10*4882a593Smuzhiyunobj-y = clock.o mxs.o iomux.o timer.o 11*4882a593Smuzhiyun 12*4882a593Smuzhiyunifdef CONFIG_SPL_BUILD 13*4882a593Smuzhiyunobj-y += spl_boot.o spl_lradc_init.o spl_mem_init.o spl_power_init.o 14*4882a593Smuzhiyunendif 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun# Specify the target for use in elftosb call 17*4882a593SmuzhiyunMKIMAGE_TARGET-$(CONFIG_MX23) = mxsimage.mx23.cfg 18*4882a593SmuzhiyunMKIMAGE_TARGET-$(CONFIG_MX28) = mxsimage.mx28.cfg 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun# Generate HAB-capable IVT 21*4882a593Smuzhiyun# 22*4882a593Smuzhiyun# Note on computing the post-IVT size field value for the U-Boot binary. 23*4882a593Smuzhiyun# The value is the result of adding the following: 24*4882a593Smuzhiyun# -> The size of U-Boot binary aligned to 64B (u-boot.bin) 25*4882a593Smuzhiyun# -> The size of IVT block aligned to 64B (u-boot.ivt) 26*4882a593Smuzhiyun# -> The size of U-Boot signature (u-boot.sig), 3904 B 27*4882a593Smuzhiyun# -> The 64B hole in front of U-Boot binary for 'struct mxs_spl_data' passing 28*4882a593Smuzhiyun# 29*4882a593Smuzhiyunquiet_cmd_mkivt_mxs = MXSIVT $@ 30*4882a593Smuzhiyuncmd_mkivt_mxs = \ 31*4882a593Smuzhiyun sz=`expr \`stat -c "%s" $^\` + 64 + 3904 + 128` ; \ 32*4882a593Smuzhiyun echo -n "0x402000d1 $2 0 0 0 $3 $4 0 $$sz 0 0 0 0 0 0 0" | \ 33*4882a593Smuzhiyun tr -s " " | xargs -d " " -i printf "%08x\n" "{}" | rev | \ 34*4882a593Smuzhiyun sed "s/\(.\)\(.\)/\\\\\\\\x\2\1\n/g" | xargs -i printf "{}" >$@ 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun# Align binary to 64B 37*4882a593Smuzhiyunquiet_cmd_mkalign_mxs = MXSALGN $@ 38*4882a593Smuzhiyuncmd_mkalign_mxs = \ 39*4882a593Smuzhiyun dd if=$^ of=$@ ibs=64 conv=sync 2>/dev/null && \ 40*4882a593Smuzhiyun mv $@ $^ 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun# Assemble the CSF file 43*4882a593Smuzhiyunquiet_cmd_mkcsfreq_mxs = MXSCSFR $@ 44*4882a593Smuzhiyuncmd_mkcsfreq_mxs = \ 45*4882a593Smuzhiyun ivt=$(word 1,$^) ; \ 46*4882a593Smuzhiyun bin=$(word 2,$^) ; \ 47*4882a593Smuzhiyun csf=$(word 3,$^) ; \ 48*4882a593Smuzhiyun sed "s@VENDOR@$(VENDOR)@g;s@BOARD@$(BOARD)@g" "$$csf" | \ 49*4882a593Smuzhiyun sed '/^\#\#Blocks/ d' > $@ ; \ 50*4882a593Smuzhiyun echo " Blocks = $2 0x0 `stat -c '%s' $$bin` \"$$bin\" , \\" >> $@ ; \ 51*4882a593Smuzhiyun echo " $3 0x0 0x40 \"$$ivt\"" >> $@ 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun# Sign files 54*4882a593Smuzhiyunquiet_cmd_mkcst_mxs = MXSCST $@ 55*4882a593Smuzhiyuncmd_mkcst_mxs = cst -o $@ < $^ \ 56*4882a593Smuzhiyun $(if $(KBUILD_VERBOSE:1=), >/dev/null) 57*4882a593Smuzhiyun 58*4882a593Smuzhiyunspl/u-boot-spl.ivt: spl/u-boot-spl.bin 59*4882a593Smuzhiyun $(call if_changed,mkalign_mxs) 60*4882a593Smuzhiyun $(call if_changed,mkivt_mxs,$(CONFIG_SPL_TEXT_BASE),\ 61*4882a593Smuzhiyun 0x00008000,0x00008040) 62*4882a593Smuzhiyun 63*4882a593Smuzhiyunu-boot.ivt: u-boot.bin 64*4882a593Smuzhiyun $(call if_changed,mkalign_mxs) 65*4882a593Smuzhiyun $(call if_changed,mkivt_mxs,$(CONFIG_SYS_TEXT_BASE),\ 66*4882a593Smuzhiyun 0x40001000,0x40001040) 67*4882a593Smuzhiyun 68*4882a593Smuzhiyunspl/u-boot-spl.csf: spl/u-boot-spl.ivt spl/u-boot-spl.bin board/$(VENDOR)/$(BOARD)/sign/u-boot-spl.csf 69*4882a593Smuzhiyun $(call if_changed,mkcsfreq_mxs,$(CONFIG_SPL_TEXT_BASE),0x8000) 70*4882a593Smuzhiyun 71*4882a593Smuzhiyunu-boot.csf: u-boot.ivt u-boot.bin board/$(VENDOR)/$(BOARD)/sign/u-boot.csf 72*4882a593Smuzhiyun $(call if_changed,mkcsfreq_mxs,$(CONFIG_SYS_TEXT_BASE),0x40001000) 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun%.sig: %.csf 75*4882a593Smuzhiyun $(call if_changed,mkcst_mxs) 76*4882a593Smuzhiyun 77*4882a593SmuzhiyunMKIMAGEFLAGS_u-boot.sb = -n $< -T mxsimage 78*4882a593Smuzhiyunu-boot.sb: $(src)/$(MKIMAGE_TARGET-y) u-boot.bin spl/u-boot-spl.bin FORCE 79*4882a593Smuzhiyun $(call if_changed,mkimage) 80*4882a593Smuzhiyun 81*4882a593SmuzhiyunMKIMAGEFLAGS_u-boot-signed.sb = -n $< -T mxsimage 82*4882a593Smuzhiyunu-boot-signed.sb: $(src)/mxsimage-signed.cfg u-boot.ivt u-boot.sig spl/u-boot-spl.ivt spl/u-boot-spl.sig FORCE 83*4882a593Smuzhiyun $(call if_changed,mkimage) 84