Subject: [PATCH] ARM: add dtbImage.<dt> and dtbuImage.<dt> rules

From: [email-masked] (Gregory CLEMENT)
Date: Mon, 10 Sep 2012 16:39:59 +0200

On 09/10/2012 03:38 PM, Richard Genoud wrote:
> This rules are useful for appended device tree conforming to the
> CONFIG_ARM_APPENDED_DTB kernel option.
> 
> The rule dtbImage.<dt> is actually just a:
> cat zImage <dt>.dtb > dtbImage.<dt>
> 
> The dtbuImage.<dt> makes an uImage out of the dtbImage.<dt> file.

Tested on my Armada XP board, it worked as expected.
You can add my Tested-by.

> 
> KernelVersion: v3.6-rc5
> 
> Signed-off-by: Richard Genoud <[email-masked]>
> ---
>  arch/arm/Makefile      |   30 ++++++++++++++++--------------
>  arch/arm/boot/Makefile |   11 +++++++++++
>  scripts/Makefile.lib   |    6 ++++++
>  3 files changed, 33 insertions(+), 14 deletions(-)
> 
> diff --git a/arch/arm/Makefile b/arch/arm/Makefile
> index 30eae87..c5f2673 100644
> --- a/arch/arm/Makefile
> +++ b/arch/arm/Makefile
> @@ -278,7 +278,7 @@ archprepare:
>  # Convert bzImage to zImage
>  bzImage: zImage
>  
> -zImage Image xipImage bootpImage uImage: vmlinux
> +zImage Image xipImage bootpImage uImage dtbImage.% dtbuImage.% : vmlinux
>  	$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
>  
>  zinstall uinstall install: vmlinux
> @@ -300,17 +300,19 @@ i zi:;	$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@
>  
>  
>  define archhelp
> -  echo  '* zImage        - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
> -  echo  '  Image         - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
> -  echo  '* xipImage      - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)'
> -  echo  '  uImage        - U-Boot wrapped zImage'
> -  echo  '  bootpImage    - Combined zImage and initial RAM disk' 
> -  echo  '                  (supply initrd image via make variable INITRD=<path>)'
> -  echo  '  dtbs          - Build device tree blobs for enabled boards'
> -  echo  '  install       - Install uncompressed kernel'
> -  echo  '  zinstall      - Install compressed kernel'
> -  echo  '  uinstall      - Install U-Boot wrapped compressed kernel'
> -  echo  '                  Install using (your) ~/bin/$(INSTALLKERNEL) or'
> -  echo  '                  (distribution) /sbin/$(INSTALLKERNEL) or'
> -  echo  '                  install to $$(INSTALL_PATH) and run lilo'
> +  echo  '* zImage         - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
> +  echo  '  Image          - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
> +  echo  '* xipImage       - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)'
> +  echo  '  uImage         - U-Boot wrapped zImage'
> +  echo  '  bootpImage     - Combined zImage and initial RAM disk'
> +  echo  '                   (supply initrd image via make variable INITRD=<path>)'
> +  echo  '  dtbs           - Build device tree blobs for enabled boards'
> +  echo  '  dtbImage.<dt>  - zImage with an appended device tree blob'
> +  echo  '  dtbuImage.<dt> - uImage with an embedded device tree blob'
> +  echo  '  install        - Install uncompressed kernel'
> +  echo  '  zinstall       - Install compressed kernel'
> +  echo  '  uinstall       - Install U-Boot wrapped compressed kernel'
> +  echo  '                   Install using (your) ~/bin/$(INSTALLKERNEL) or'
> +  echo  '                   (distribution) /sbin/$(INSTALLKERNEL) or'
> +  echo  '                   install to $$(INSTALL_PATH) and run lilo'
>  endef
> diff --git a/arch/arm/boot/Makefile b/arch/arm/boot/Makefile
> index c877087..35c01a8 100644
> --- a/arch/arm/boot/Makefile
> +++ b/arch/arm/boot/Makefile
> @@ -98,6 +98,17 @@ $(obj)/bootpImage: $(obj)/bootp/bootp FORCE
>  	$(call if_changed,objcopy)
>  	@echo '  Kernel: $@ is ready'
>  
> +# dtbImage.% - a dtbImage is a zImage with an appended device tree blob
> +$(obj)/dtbImage.%: $(obj)/zImage $(obj)/%.dtb FORCE
> +	$(call if_changed,cat)
> +	@echo '  Kernel: $@ is ready'
> +
> +# dtbuImage.% - a dtbuImage is a uImage with an embedded device tree blob
> +$(obj)/dtbuImage.%: $(obj)/dtbImage.% FORCE
> +	@$(check_for_multiple_loadaddr)
> +	$(call if_changed,uimage)
> +	@echo '  Image $@ is ready'
> +
>  PHONY += initrd FORCE
>  initrd:
>  	@test "$(INITRD_PHYS)" != "" || \
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index 0be6f11..8550466 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -235,6 +235,12 @@ cmd_ld = $(LD) $(LDFLAGS) $(ldflags-y) $(LDFLAGS_$(@F)) \
>  quiet_cmd_objcopy = OBJCOPY $@
>  cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
>  
> +# Cat
> +# ---------------------------------------------------------------------------
> +
> +quiet_cmd_cat = CAT     $@
> +cmd_cat = (cat $(filter-out FORCE,$^) > $@) || (rm -f $@ ; false)
> +
>  # Gzip
>  # ---------------------------------------------------------------------------
>  
> 

-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com