Patchwork [U-Boot,3/8] fdt: Add DEV_TREE_BIN option to specify a device tree binary file

login
register
mail settings
Submitter Simon Glass
Date Oct. 2, 2013, 2:44 p.m.
Message ID <1380725088-20893-4-git-send-email-sjg@chromium.org>
Download mbox | patch
Permalink /patch/279758/
State Superseded
Delegated to: Tom Rini
Headers show

Comments

Simon Glass - Oct. 2, 2013, 2:44 p.m.
In some cases, an externally-built device tree binary is required to be
attached to U-Boot. An example is when using image signing, since in that
case the .dtb file must include the public keys.

Add a DEV_TREE_BIN option to the Makefile, and update the documentation.

Usage is something like:

	make DEV_TREE_BIN=boot/am335x-boneblack-pubkey.dtb

Signed-off-by: Simon Glass <sjg@chromium.org>
---
 Makefile               |  8 +++++++-
 doc/README.fdt-control | 16 ++++++++++++++--
 2 files changed, 21 insertions(+), 3 deletions(-)

Patch

diff --git a/Makefile b/Makefile
index 07abef4..c651af0 100644
--- a/Makefile
+++ b/Makefile
@@ -416,9 +416,15 @@  endif
 
 all:		$(ALL-y) $(SUBDIR_EXAMPLES)
 
+# Allow a device tree binary to be given as a make argument
+ifneq ($(DEV_TREE_BIN),)
+$(obj)u-boot.dtb:
+		cp $(DEV_TREE_BIN) $@
+else
 $(obj)u-boot.dtb:	checkdtc $(obj)u-boot
 		$(MAKE) -C dts binary
 		mv $(obj)dts/dt.dtb $@
+endif
 
 $(obj)u-boot-dtb.bin:	$(obj)u-boot.bin $(obj)u-boot.dtb
 		cat $^ >$@
@@ -452,7 +458,7 @@  ifndef CONFIG_SYS_UBOOT_START
 CONFIG_SYS_UBOOT_START := 0
 endif
 
-$(obj)u-boot.img:	$(obj)u-boot.bin
+$(obj)u-boot.img:	$(obj)u-boot$(if $(CONFIG_OF_SEPARATE),-dtb,).bin
 		$(obj)tools/mkimage -A $(ARCH) -T firmware -C none \
 		-O u-boot -a $(CONFIG_SYS_TEXT_BASE) \
 		-e $(CONFIG_SYS_UBOOT_START) \
diff --git a/doc/README.fdt-control b/doc/README.fdt-control
index 86bae68..8a4aa7a 100644
--- a/doc/README.fdt-control
+++ b/doc/README.fdt-control
@@ -122,7 +122,8 @@  This should include your CPU or SOC's device tree file, placed in
 arch/<arch>/dts, and then make any adjustments required.
 
 If CONFIG_OF_EMBED is defined, then it will be picked up and built into
-the U-Boot image (including u-boot.bin).
+the U-Boot image (including u-boot.bin). This is suitable for debugging
+and development only and is not recommended for production devices.
 
 If CONFIG_OF_SEPARATE is defined, then it will be built and placed in
 a u-boot.dtb file alongside u-boot.bin. A common approach is then to
@@ -130,7 +131,10 @@  join the two:
 
 	cat u-boot.bin u-boot.dtb >image.bin
 
-and then flash image.bin onto your board.
+and then flash image.bin onto your board. Note that U-Boot creates
+u-boot-dtb.bin which does the above step for you also. If you are using
+CONFIG_SPL_FRAMEWORK, then u-boot.img will be built to include the device
+tree binary.
 
 If CONFIG_OF_HOSTFILE is defined, then it will be read from a file on
 startup. This is only useful for sandbox. Use the -d flag to U-Boot to
@@ -138,6 +142,14 @@  specify the file to read.
 
 You cannot use more than one of these options at the same time.
 
+To use a device tree file that you have compiled yourself, pass
+DEV_TREE_BIN=<filename> to 'make', as in:
+
+	make DEV_TREE_BIN=boot/am335x-boneblack-pubkey.dtb
+
+Then U-Boot will copy that file to u-boot.dtb, put it in the .img file
+if used, and u-boot-dtb.bin.
+
 If you wish to put the fdt at a different address in memory, you can
 define the "fdtcontroladdr" environment variable. This is the hex
 address of the fdt binary blob, and will override either of the options.