]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - arch/arm/cpu/arm926ejs/mxs/Makefile
Merge branch 'u-boot/master' into 'u-boot-arm/master'
[karo-tx-uboot.git] / arch / arm / cpu / arm926ejs / mxs / Makefile
index 540e58955276c9a91bb0d78960e88c829db4fc40..6c594945582bbdd3a6a1538f7b2492f3d6a857a2 100644 (file)
@@ -14,88 +14,72 @@ obj-y       += spl_boot.o spl_lradc_init.o spl_mem_init.o spl_power_init.o
 endif
 
 # Specify the target for use in elftosb call
-MKIMAGE_TARGET-$(CONFIG_MX23) = mx23
-MKIMAGE_TARGET-$(CONFIG_MX28) = mx28
+MKIMAGE_TARGET-$(CONFIG_MX23) = mxsimage.mx23.cfg
+MKIMAGE_TARGET-$(CONFIG_MX28) = mxsimage.mx28.cfg
 
-# Convert hexadecimal value to bytes
-define hex2bin
-$(shell echo -n "$1" | sed 's/0x//;s/\(..\)\(..\)\(..\)\(..\)/\4\3\2\1/;s/../\\\\x&/g')
-endef
-
-# Compute the post-IVT size field value for the U-Boot binary.
+# Generate HAB-capable IVT
+#
+# Note on computing the post-IVT size field value for the U-Boot binary.
 # The value is the result of adding the following:
 #  -> The size of U-Boot binary aligned to 64B (u-boot.bin)
 #  -> The size of IVT block aligned to 64B (u-boot.ivt)
 #  -> The size of U-Boot signature (u-boot.sig), 3904 B
 #  -> The 64B hole in front of U-Boot binary for 'struct mxs_spl_data' passing
-define uboot_ivt_size
-$(shell expr `stat -c "%s" $1` + 64 + 3904 + 128 | xargs printf 0x%08x)
-endef
+#
+quiet_cmd_mkivt_mxs = MXSIVT  $@
+cmd_mkivt_mxs =                                                                \
+       sz=`expr \`stat -c "%s" $^\` + 64 + 3904 + 128` ;               \
+       echo -n "0x402000d1 $2 0 0 0 $3 $4 0 $$sz 0 0 0 0 0 0 0" |      \
+       tr -s " " | xargs -d " " -i printf "%08x\n" "{}" | rev |        \
+       sed "s/\(.\)\(.\)/\\\\\\\\x\2\1\n/g" | xargs -i printf "{}" >$@
 
-$(OBJTREE)/mxsimage.cfg: $(SRCTREE)/$(CPUDIR)/$(SOC)/mxsimage.$(MKIMAGE_TARGET-y).cfg
-       sed "s@OBJTREE@$(OBJTREE)@g" $^ > $@
+# Align binary to 64B
+quiet_cmd_mkalign_mxs = MXSALGN $@
+cmd_mkalign_mxs =                                                      \
+       dd if=$^ of=$@ ibs=64 conv=sync 2>/dev/null &&                  \
+       mv $@ $^
 
-# HAB signature is i.MX28 only
-$(OBJTREE)/mxsimage-signed.cfg: $(SRCTREE)/$(CPUDIR)/$(SOC)/mxsimage-signed.cfg
-       sed "s@OBJTREE@$(OBJTREE)@g" $^ > $@
+# Assemble the CSF file
+quiet_cmd_mkcsfreq_mxs = MXSCSFR $@
+cmd_mkcsfreq_mxs =                                                     \
+       ivt=$(word 1,$^) ;                                              \
+       bin=$(word 2,$^) ;                                              \
+       csf=$(word 3,$^) ;                                              \
+       sed "s@VENDOR@$(VENDOR)@g;s@BOARD@$(BOARD)@g" "$$csf" |         \
+               sed '/^\#\#Blocks/ d' > $@ ;                            \
+       echo "  Blocks = $2 0x0 `stat -c '%s' $$bin` \"$$bin\" , \\" >> $@ ; \
+       echo "           $3 0x0 0x40 \"$$ivt\"" >> $@
 
-$(OBJTREE)/spl/u-boot-spl.ivt: $(OBJTREE)/spl/u-boot-spl.bin
-       # Align U-Boot SPL binary to 64B
-       dd if=$^ of=$@ ibs=64 conv=sync 2>/dev/null
-       mv $@ $^
-       # Assemble IVT, append size field and align it to 64B.
-       (echo -ne "$(call hex2bin,0x402000d1)" ;                \
-        echo -ne "$(call hex2bin,$(CONFIG_SPL_TEXT_BASE))" ;   \
-        echo -ne "$(call hex2bin,0x00000000)" ;                \
-        echo -ne "$(call hex2bin,0x00000000)" ;                \
-        echo -ne "$(call hex2bin,0x00000000)" ;                \
-        echo -ne "$(call hex2bin,0x00008000)" ;                \
-        echo -ne "$(call hex2bin,0x00008040)" ;                \
-        echo -ne "$(call hex2bin,0x00000000)" ;                \
-        echo -ne "$(call hex2bin,$(call uboot_ivt_size,$^))"   \
-       ) | dd of=$@ ibs=64 count=1 conv=sync 2>/dev/null
-
-$(OBJTREE)/u-boot.ivt: $(OBJTREE)/u-boot.bin
-       # Align U-Boot binary to 64B
-       dd if=$^ of=$@ ibs=64 conv=sync 2>/dev/null
-       mv $@ $^
-       # Assemble IVT, append size field and align it to 64B.
-       (echo -ne "$(call hex2bin,0x402000d1)" ;                \
-        echo -ne "$(call hex2bin,$(CONFIG_SYS_TEXT_BASE))" ;   \
-        echo -ne "$(call hex2bin,0x00000000)" ;                \
-        echo -ne "$(call hex2bin,0x00000000)" ;                \
-        echo -ne "$(call hex2bin,0x00000000)" ;                \
-        echo -ne "$(call hex2bin,0x40001000)" ;                \
-        echo -ne "$(call hex2bin,0x40001040)" ;                \
-        echo -ne "$(call hex2bin,0x00000000)" ;                \
-        echo -ne "$(call hex2bin,$(call uboot_ivt_size,$^))"   \
-       ) | dd of=$@ ibs=64 count=1 conv=sync 2>/dev/null
-
-$(OBJTREE)/spl/u-boot-spl.csf: $(OBJTREE)/spl/u-boot-spl.ivt $(OBJTREE)/spl/u-boot-spl.bin $(TOPDIR)/board/$(VENDOR)/$(BOARD)/sign/u-boot-spl.csf
-       # Assemble the CSF file
-       sed "s@TOPDIR@$(TOPDIR)@g;s@VENDOR@$(VENDOR)@g;s@BOARD@$(BOARD)@g" \
-               $(word 3,$^) > $@
-       sed -i "/^##Blocks.*/ d" $@
-       echo "  Blocks = $(CONFIG_SPL_TEXT_BASE) 0x0 "                  \
-               "`stat -c '%s' $(word 2,$^)` \"$(word 2,$^)\" , \\"     \
-               >> $@
-       echo "           0x8000 0x0 0x40 \"$(word 1,$^)\"" >> $@
-
-$(OBJTREE)/u-boot.csf: $(OBJTREE)/u-boot.ivt $(OBJTREE)/u-boot.bin $(TOPDIR)/board/$(VENDOR)/$(BOARD)/sign/u-boot.csf
-       # Assemble the CSF file
-       sed "s@TOPDIR@$(TOPDIR)@g;s@VENDOR@$(VENDOR)@g;s@BOARD@$(BOARD)@g" \
-               $(word 3,$^) > $@
-       sed -i "/^##Blocks.*/ d" $@
-       echo "  Blocks = $(CONFIG_SYS_TEXT_BASE) 0x0 "                  \
-               "`stat -c '%s' $(word 2,$^)` \"$(word 2,$^)\" , \\"     \
-               >> $@
-       echo "           0x40001000 0x0 0x40 \"$(word 1,$^)\"" >> $@
+# Sign files
+quiet_cmd_mkcst_mxs = MXSCST  $@
+cmd_mkcst_mxs = cst -o $@ < $^                                         \
+       $(if $(KBUILD_VERBOSE:1=), >/dev/null)
+
+spl/u-boot-spl.ivt: spl/u-boot-spl.bin
+       $(call if_changed,mkalign_mxs)
+       $(call if_changed,mkivt_mxs,$(CONFIG_SPL_TEXT_BASE),\
+               0x00008000,0x00008040)
+
+u-boot.ivt: u-boot.bin
+       $(call if_changed,mkalign_mxs)
+       $(call if_changed,mkivt_mxs,$(CONFIG_SYS_TEXT_BASE),\
+               0x40001000,0x40001040)
+
+spl/u-boot-spl.csf: spl/u-boot-spl.ivt spl/u-boot-spl.bin board/$(VENDOR)/$(BOARD)/sign/u-boot-spl.csf
+       $(call if_changed,mkcsfreq_mxs,$(CONFIG_SPL_TEXT_BASE),0x8000)
+
+u-boot.csf: u-boot.ivt u-boot.bin board/$(VENDOR)/$(BOARD)/sign/u-boot.csf
+       $(call if_changed,mkcsfreq_mxs,$(CONFIG_SYS_TEXT_BASE),0x40001000)
 
 %.sig: %.csf
-       cst -o $@ < $^
+       $(call if_changed,mkcst_mxs)
+
+quiet_cmd_mkimage_mxs = MKIMAGE $@
+cmd_mkimage_mxs = $(objtree)/tools/mkimage -n $< -T mxsimage $@ \
+       $(if $(KBUILD_VERBOSE:1=), >/dev/null)
 
-$(OBJTREE)/u-boot-signed.sb: $(OBJTREE)/u-boot.ivt $(OBJTREE)/u-boot.sig $(OBJTREE)/spl/u-boot-spl.ivt $(OBJTREE)/spl/u-boot-spl.sig $(OBJTREE)/mxsimage-signed.cfg
-       $(OBJTREE)/tools/mkimage -n $(OBJTREE)/mxsimage-signed.cfg -T mxsimage $@
+u-boot.sb: $(src)/$(MKIMAGE_TARGET-y) u-boot.bin spl/u-boot-spl.bin FORCE
+       $(call if_changed,mkimage_mxs)
 
-$(OBJTREE)/u-boot.sb: $(OBJTREE)/u-boot.bin $(OBJTREE)/spl/u-boot-spl.bin $(OBJTREE)/mxsimage.cfg
-       $(OBJTREE)/tools/mkimage -n $(OBJTREE)/mxsimage.cfg -T mxsimage $@
+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
+       $(call if_changed,mkimage_mxs)