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