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