Hi Marek, On Sat, 5 Oct 2024 at 06:43, Marek Vasut <[email protected]> wrote: > > Currently the enablement of OF_UPSTREAM results on the build system > searching for DTs only in dts/upstream/ . There are platforms which > use U-Boot specific DTBOs applied on top of U-Boot control DT during > SPL stage, and source DTs for these are located in arch/$(ARCH)/dtb. > > Add dedicated 'dtbos' target which builds only .dtbos and not .dtbs and > in case CONFIG_OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS is enabled, build > this target for arch/$(ARCH)/dtb to generate local U-Boot specific DTBOs. > > Adjust top level Makefile so binman would search for .dtb and .dtbo in > both OF_UPSTREAM specific paths and arch/$(ARCH)/dtb for the .dtbo case > in case CONFIG_OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS is enabled. > > Signed-off-by: Marek Vasut <[email protected]> > --- > Cc: "NXP i.MX U-Boot Team" <[email protected]> > Cc: Caleb Connolly <[email protected]> > Cc: Christoph Niedermaier <[email protected]> > Cc: Fabio Estevam <[email protected]> > Cc: Heinrich Schuchardt <[email protected]> > Cc: Jonas Karlman <[email protected]> > Cc: Lothar Rubusch <[email protected]> > Cc: Michal Simek <[email protected]> > Cc: Nobuhiro Iwamatsu <[email protected]> > Cc: Rasmus Villemoes <[email protected]> > Cc: Simon Glass <[email protected]> > Cc: Stefano Babic <[email protected]> > Cc: Sumit Garg <[email protected]> > Cc: Tom Rini <[email protected]> > Cc: [email protected] > Cc: [email protected] > --- > V2: Gate this functionality behind > CONFIG_OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS > --- > NOTE: Depends on > https://lore.kernel.org/u-boot/[email protected]/ > --- > Makefile | 4 ++++ > dts/Kconfig | 16 ++++++++++++++++ > dts/Makefile | 14 +++++++++++++- > scripts/Makefile.dts | 6 ++++++ > 4 files changed, 39 insertions(+), 1 deletion(-) > > diff --git a/Makefile b/Makefile > index af24de4165e..a5258e8cb3f 100644 > --- a/Makefile > +++ b/Makefile > @@ -1375,7 +1375,11 @@ of_list := "$(ext_dtb_list)" > of_list_dirs := $(dir $(EXT_DTB)) > else > of_list := $(CONFIG_OF_LIST) > +ifneq ($(CONFIG_OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS),) > +of_list_dirs := $(dt_dir) arch/$(ARCH)/dts > +else > of_list_dirs := $(dt_dir) > +endif > default_dt := $(if > $(DEVICE_TREE),$(DEVICE_TREE),$(CONFIG_DEFAULT_DEVICE_TREE)) > endif > > diff --git a/dts/Kconfig b/dts/Kconfig > index 569d4be338e..385058b429f 100644 > --- a/dts/Kconfig > +++ b/dts/Kconfig > @@ -125,6 +125,22 @@ config OF_UPSTREAM_VENDOR > help > Select the vendor to build all devicetree files for. > > +config OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS > + bool "Build local DTBOs as fallback for DTBOs missing upstream" > + default n > + depends on OF_UPSTREAM > + help > + Enable building DTBOs from arch/$(ARCH)/dts as a fallback for > + DTBOs which are not part of Linux kernel upstream yet. This is > + a stopgap measure to expedite OF_UPSTREAM switch for platforms > + which already have main DT in Linux kernel upstream, but still > + have leftover DTBOs in U-Boot tree. > + > + Do not use this option, upstream your DTs and DTBOs instead. > + If the upstreaming is in progress, use with utmost caution. > + > + If unsure, say N. > + > choice > prompt "Provider of DTB for DT control" > depends on OF_CONTROL > diff --git a/dts/Makefile b/dts/Makefile > index d6c2c9daf31..32c749a043a 100644 > --- a/dts/Makefile > +++ b/dts/Makefile > @@ -11,12 +11,18 @@ DEVICE_TREE := unset > endif > > ifeq ($(CONFIG_OF_UPSTREAM),y) > +ifneq ($(CONFIG_OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS),)
Since CONFIG_OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS already has a dependency on CONFIG_OF_UPSTREAM via Kconfig, can we avoid the nested ifeq sequence here? This will avoid a redundant local_dtbos assignment... > +local_dtbos := local-dtbos > +else > +local_dtbos := > +endif > ifeq ($(CONFIG_ARM64),y) > dt_dir := dts/upstream/src/arm64 > else > dt_dir := dts/upstream/src/$(ARCH) > endif > else > +local_dtbos := ...here. With that fixed, feel free to add: Reviewed-by: Sumit Garg <[email protected]> -Sumit > dt_dir := arch/$(ARCH)/dts > endif > > @@ -40,7 +46,7 @@ endif > > targets += dt.dtb > > -$(DTB): arch-dtbs > +$(DTB): arch-dtbs $(local_dtbos) > $(Q)test -e $@ || ( \ > echo >&2; \ > echo >&2 "Device Tree Source ($@) is not correctly specified."; \ > @@ -53,6 +59,12 @@ PHONY += arch-dtbs > arch-dtbs: > $(Q)$(MAKE) $(build)=$(dt_dir) dtbs > > +ifneq ($(CONFIG_OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS),) > +PHONY += local-dtbos > +local-dtbos: > + $(Q)$(MAKE) $(build)=arch/$(ARCH)/dts dtbos > +endif > + > ifeq ($(CONFIG_SPL_BUILD),y) > obj-$(CONFIG_OF_EMBED) := dt-spl.dtb.o > # support "out-of-tree" build for dtb-spl > diff --git a/scripts/Makefile.dts b/scripts/Makefile.dts > index 1fe142f2bbf..3ab67b3c247 100644 > --- a/scripts/Makefile.dts > +++ b/scripts/Makefile.dts > @@ -21,4 +21,10 @@ PHONY += dtbs > dtbs: $(addprefix $(obj)/, $(dtb-y)) > @: > > +ifneq ($(CONFIG_OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS),) > +PHONY += dtbos > +dtbos: $(addprefix $(obj)/, $(filter-out %.dtb,$(dtb-y))) > + @: > +endif > + > clean-files := *.dtb *.dtbo */*.dtb */*.dtbo *_HS > -- > 2.45.2 >

