Makefile: Build a separate .dtb for TPL

At present both SPL and TPL use the same devicetree binary. While there
is logic to run fdtgrep separately on each one, it does not actually
happen.

Add a new TPL rule and use that instead. Make this rule conditional on
there actually being a TPL. Do the same for SPL for consistency.

Note that the SPL and TPL dtbs are build by a Makefule rule used for
U-Boot proper. This is the 'dtbs' target in dts/Makefile. So the check
for CONFIG_TPL_BUILD in cmd_fdtgrep never actually works at present.

We don't support CONFIG_OF_EMBED for TPL at present.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2020-12-22 19:30:13 -07:00
parent c86b18074c
commit 53db2eec7a
2 changed files with 11 additions and 4 deletions

View File

@ -19,6 +19,9 @@ endif
$(obj)/dt-spl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
$(call if_changed,fdtgrep)
$(obj)/dt-tpl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
$(call if_changed,fdtgrep)
ifeq ($(CONFIG_OF_DTB_PROPS_REMOVE),y)
$(obj)/dt.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
$(call if_changed,fdt_rm_props)
@ -27,7 +30,7 @@ $(obj)/dt.dtb: $(DTB) FORCE
$(call if_changed,shipped)
endif
targets += dt.dtb dt-spl.dtb
targets += dt.dtb dt-spl.dtb dt-tpl.dtb
$(DTB): arch-dtbs
$(Q)test -e $@ || ( \
@ -51,10 +54,12 @@ else
obj-$(CONFIG_OF_EMBED) := dt.dtb.o
endif
dtbs: $(obj)/dt.dtb $(obj)/dt-spl.dtb
dtbs: $(obj)/dt.dtb \
$(if $(CONFIG_SPL),$(obj)/dt-spl.dtb) \
$(if $(CONFIG_TPL),$(obj)/dt-tpl.dtb)
@:
clean-files := dt.dtb.S dt-spl.dtb.S
clean-files := dt.dtb.S dt-spl.dtb.S dt-tpl.dtb.S
# Let clean descend into dts directories
subdir- += ../arch/arm/dts ../arch/microblaze/dts ../arch/mips/dts ../arch/sandbox/dts ../arch/x86/dts ../arch/powerpc/dts ../arch/riscv/dts

View File

@ -31,8 +31,10 @@ endif
ifeq ($(CONFIG_TPL_BUILD),y)
SPL_BIN := u-boot-tpl
SPL_NAME := tpl
else
SPL_BIN := u-boot-spl
SPL_NAME := spl
endif
ifdef CONFIG_SPL_BUILD
@ -298,7 +300,7 @@ $(obj)/$(SPL_BIN)-pad.bin: $(obj)/$(SPL_BIN)
@bss_size_str=$(shell $(NM) $< | awk 'BEGIN {size = 0} /__bss_size/ {size = $$1} END {print "ibase=16; " toupper(size)}' | bc); \
dd if=/dev/zero of=$@ bs=1 count=$${bss_size_str} 2>/dev/null;
$(obj)/$(SPL_BIN).dtb: dts/dt-spl.dtb FORCE
$(obj)/$(SPL_BIN).dtb: dts/dt-$(SPL_NAME).dtb FORCE
$(call if_changed,copy)
pythonpath = PYTHONPATH=scripts/dtc/pylibfdt