On Mon, Jan 10, 2022 at 02:34:41PM +0100, Rasmus Villemoes wrote: > When building for a custom board, it is quite common to maintain a > private branch which include some defconfig and .dts files. But to > hook up those .dts files requires modifying a file "belonging" to > upstream U-Boot, the arch/*/dts/Makefile. Forward-porting that branch > to a newer upstream then often results in a conflict which, while it > is trivial to resolve by hand, makes it harder to have a CI do "try to > build our board against latest upstream". > > The .config usually includes information on precisely what .dtb(s) are > needed, so to avoid having to modify the Makefile, simply add the > files in (SPL_)OF_LIST to dtb-y. > > A technicality is that (SPL_)OF_LIST is not always defined, so rework > the Kconfig symbols so that (SPL_)OF_LIST is always defined (when > (SPL_)OF_CONTROL), but only prompted for in the cases which used to be > their "depends on". > > nios2 and microblaze already have something like this in their > dts/Makefile, and the rationale in commit 41f59f68539 is similar to > the above. So this simply generalizes existing practice. Followup > patches could remove the logic in those two makefiles, just as there's > potential for moving some common boilerplate from all the > arch/*/dts/Makefile files to the new scripts/Makefile.dts. > > Signed-off-by: Rasmus Villemoes <rasmus.villem...@prevas.dk> > --- > arch/arc/dts/Makefile | 2 ++ > arch/arm/dts/Makefile | 2 ++ > arch/m68k/dts/Makefile | 2 ++ > arch/microblaze/dts/Makefile | 2 ++ > arch/mips/dts/Makefile | 2 ++ > arch/nds32/dts/Makefile | 2 ++ > arch/nios2/dts/Makefile | 2 ++ > arch/powerpc/dts/Makefile | 2 ++ > arch/riscv/dts/Makefile | 2 ++ > arch/sandbox/dts/Makefile | 2 ++ > arch/sh/dts/Makefile | 2 ++ > arch/x86/dts/Makefile | 2 ++ > arch/xtensa/dts/Makefile | 2 ++ > dts/Kconfig | 8 ++++---- > scripts/Makefile.dts | 3 +++ > 15 files changed, 33 insertions(+), 4 deletions(-) > create mode 100644 scripts/Makefile.dts > > diff --git a/arch/arc/dts/Makefile b/arch/arc/dts/Makefile > index 515fe1fe53..532a8131c5 100644 > --- a/arch/arc/dts/Makefile > +++ b/arch/arc/dts/Makefile > @@ -8,6 +8,8 @@ dtb-$(CONFIG_TARGET_EMSDP) += emsdp.dtb > dtb-$(CONFIG_TARGET_HSDK) += hsdk.dtb hsdk-4xd.dtb > dtb-$(CONFIG_TARGET_IOT_DEVKIT) += iot_devkit.dtb > > +include $(srctree)/scripts/Makefile.dts > + > targets += $(dtb-y) > > DTC_FLAGS += -R 4 -p 0x1000 > diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile > index b3e2a9c9d7..ef58be0381 100644 > --- a/arch/arm/dts/Makefile > +++ b/arch/arm/dts/Makefile > @@ -1163,6 +1163,8 @@ dtb-$(CONFIG_TARGET_IMX8MM_CL_IOT_GATE_OPTEE) += > imx8mm-cl-iot-gate-optee.dtb > > dtb-$(CONFIG_TARGET_EA_LPC3250DEVKITV2) += lpc3250-ea3250.dtb > > +include $(srctree)/scripts/Makefile.dts > + > targets += $(dtb-y) > > # Add any required device tree compiler flags here > diff --git a/arch/m68k/dts/Makefile b/arch/m68k/dts/Makefile > index fdd435bc34..7988522eb9 100644 > --- a/arch/m68k/dts/Makefile > +++ b/arch/m68k/dts/Makefile > @@ -18,6 +18,8 @@ dtb-$(CONFIG_TARGET_M5373EVB) += M5373EVB.dtb > dtb-$(CONFIG_TARGET_AMCORE) += amcore.dtb > dtb-$(CONFIG_TARGET_STMARK2) += stmark2.dtb > > +include $(srctree)/scripts/Makefile.dts > + > targets += $(dtb-y) > > DTC_FLAGS += -R 4 -p 0x1000 > diff --git a/arch/microblaze/dts/Makefile b/arch/microblaze/dts/Makefile > index 4690dc1b9f..427a8f9aac 100644 > --- a/arch/microblaze/dts/Makefile > +++ b/arch/microblaze/dts/Makefile > @@ -2,6 +2,8 @@ > > dtb-y += $(shell echo $(CONFIG_DEFAULT_DEVICE_TREE)).dtb > > +include $(srctree)/scripts/Makefile.dts > + > targets += $(dtb-y) > > DTC_FLAGS += -R 4 -p 0x1000 > diff --git a/arch/mips/dts/Makefile b/arch/mips/dts/Makefile > index 215283cfa0..95144b24dc 100644 > --- a/arch/mips/dts/Makefile > +++ b/arch/mips/dts/Makefile > @@ -34,6 +34,8 @@ dtb-$(CONFIG_SOC_JR2) += jr2_pcb110.dtb jr2_pcb111.dtb > serval2_pcb112.dtb > dtb-$(CONFIG_SOC_SERVALT) += servalt_pcb116.dtb > dtb-$(CONFIG_SOC_SERVAL) += serval_pcb105.dtb serval_pcb106.dtb > > +include $(srctree)/scripts/Makefile.dts > + > targets += $(dtb-y) > > # Add any required device tree compiler flags here > diff --git a/arch/nds32/dts/Makefile b/arch/nds32/dts/Makefile > index a8e23ad9ad..5a09e3b45b 100644 > --- a/arch/nds32/dts/Makefile > +++ b/arch/nds32/dts/Makefile > @@ -2,6 +2,8 @@ > > dtb-$(CONFIG_TARGET_ADP_AG101P) += ag101p.dtb > dtb-$(CONFIG_TARGET_ADP_AE3XX) += ae3xx.dtb > +include $(srctree)/scripts/Makefile.dts > + > targets += $(dtb-y) > > DTC_FLAGS += -R 4 -p 0x1000 > diff --git a/arch/nios2/dts/Makefile b/arch/nios2/dts/Makefile > index 0014acfdfb..2b29fa90f6 100644 > --- a/arch/nios2/dts/Makefile > +++ b/arch/nios2/dts/Makefile > @@ -2,6 +2,8 @@ > > dtb-y += $(CONFIG_DEFAULT_DEVICE_TREE:"%"=%).dtb > > +include $(srctree)/scripts/Makefile.dts > + > targets += $(dtb-y) > > DTC_FLAGS += -R 4 -p 0x1000 > diff --git a/arch/powerpc/dts/Makefile b/arch/powerpc/dts/Makefile > index ceaa8ce5c8..6f0e4d69f2 100644 > --- a/arch/powerpc/dts/Makefile > +++ b/arch/powerpc/dts/Makefile > @@ -29,6 +29,8 @@ dtb-$(CONFIG_TARGET_TUXX1) += kmtuxa1.dtb > dtb-$(CONFIG_TARGET_MCR3000) += mcr3000.dtb > dtb-$(CONFIG_TARGET_GAZERBEAM) += gazerbeam.dtb > > +include $(srctree)/scripts/Makefile.dts > + > targets += $(dtb-y) > > # Add any required device tree compiler flags here > diff --git a/arch/riscv/dts/Makefile b/arch/riscv/dts/Makefile > index b6e9166767..45b6381139 100644 > --- a/arch/riscv/dts/Makefile > +++ b/arch/riscv/dts/Makefile > @@ -8,6 +8,8 @@ dtb-$(CONFIG_TARGET_SIFIVE_UNLEASHED) += > hifive-unleashed-a00.dtb > dtb-$(CONFIG_TARGET_SIFIVE_UNMATCHED) += hifive-unmatched-a00.dtb > dtb-$(CONFIG_TARGET_SIPEED_MAIX) += k210-maix-bit.dtb > > +include $(srctree)/scripts/Makefile.dts > + > targets += $(dtb-y) > > DTC_FLAGS += -R 4 -p 0x1000 > diff --git a/arch/sandbox/dts/Makefile b/arch/sandbox/dts/Makefile > index 3e5dc67d53..6cbc9bbcaa 100644 > --- a/arch/sandbox/dts/Makefile > +++ b/arch/sandbox/dts/Makefile > @@ -8,6 +8,8 @@ endif > dtb-$(CONFIG_UT_DM) += test.dtb > dtb-$(CONFIG_CMD_EXTENSION) += overlay0.dtbo overlay1.dtbo > > +include $(srctree)/scripts/Makefile.dts > + > targets += $(dtb-y) > > DTC_FLAGS += -R 4 -p 0x1000 > diff --git a/arch/sh/dts/Makefile b/arch/sh/dts/Makefile > index e423bfd566..144fd3e7d2 100644 > --- a/arch/sh/dts/Makefile > +++ b/arch/sh/dts/Makefile > @@ -1,5 +1,7 @@ > dtb-y += sh7751-r2dplus.dtb > > +include $(srctree)/scripts/Makefile.dts > + > targets += $(dtb-y) > > # Add any required device tree compiler flags here > diff --git a/arch/x86/dts/Makefile b/arch/x86/dts/Makefile > index be209aaaf8..8c1c366546 100644 > --- a/arch/x86/dts/Makefile > +++ b/arch/x86/dts/Makefile > @@ -22,6 +22,8 @@ dtb-y += bayleybay.dtb \ > slimbootloader.dtb \ > baytrail_som-db5800-som-6867.dtb > > +include $(srctree)/scripts/Makefile.dts > + > targets += $(dtb-y) > > DTC_FLAGS += -R 4 -p 0x1000 > diff --git a/arch/xtensa/dts/Makefile b/arch/xtensa/dts/Makefile > index 06ee25d2da..fbbdefaf2c 100644 > --- a/arch/xtensa/dts/Makefile > +++ b/arch/xtensa/dts/Makefile > @@ -2,6 +2,8 @@ > > dtb-$(CONFIG_XTFPGA) += ml605.dtb ml605_nommu.dtb kc705.dtb kc705_nommu.dtb > > +include $(srctree)/scripts/Makefile.dts > + > targets += $(dtb-y) > > DTC_FLAGS += > diff --git a/dts/Kconfig b/dts/Kconfig > index b7c4a2fec0..446d709715 100644 > --- a/dts/Kconfig > +++ b/dts/Kconfig > @@ -132,8 +132,8 @@ config DEFAULT_DEVICE_TREE > $ make DEVICE_TREE=<device-tree-name> > > config OF_LIST > - string "List of device tree files to include for DT control" > - depends on SPL_LOAD_FIT || MULTI_DTB_FIT > + string "List of device tree files to include for DT control" if > SPL_LOAD_FIT || MULTI_DTB_FIT > + depends on OF_CONTROL > default DEFAULT_DEVICE_TREE > help > This option specifies a list of device tree files to use for DT > @@ -240,8 +240,8 @@ config SPL_MULTI_DTB_FIT > capabilities, pad configurations). > > config SPL_OF_LIST > - string "List of device tree files to include for DT control in SPL" > - depends on SPL_MULTI_DTB_FIT > + string "List of device tree files to include for DT control in SPL" if > SPL_MULTI_DTB_FIT > + depends on SPL_OF_CONTROL > default OF_LIST > help > This option specifies a list of device tree files to use for DT > diff --git a/scripts/Makefile.dts b/scripts/Makefile.dts > new file mode 100644 > index 0000000000..2561025da8 > --- /dev/null > +++ b/scripts/Makefile.dts > @@ -0,0 +1,3 @@ > +# SPDX-License-Identifier: GPL-2.0+ > + > +dtb-y += $(patsubst %,%.dtb,$(subst ",,$(CONFIG_$(SPL_)OF_LIST)))
This seems like a good thing to me. Simon? -- Tom
signature.asc
Description: PGP signature