From 53db2eec7aa60b07f11c9d46f12041b571319dbc Mon Sep 17 00:00:00 2001
From: Simon Glass <sjg@chromium.org>
Date: Tue, 22 Dec 2020 19:30:13 -0700
Subject: [PATCH] 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>
---
 dts/Makefile         | 11 ++++++++---
 scripts/Makefile.spl |  4 +++-
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/dts/Makefile b/dts/Makefile
index a20930eb9a..4cd65ce73d 100644
--- a/dts/Makefile
+++ b/dts/Makefile
@@ -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
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
index 9f1f7445d7..8ebe6a9840 100644
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -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
-- 
2.39.5