]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
dts: Add ability to build fallback DTBOs from arch/$(ARCH)/dts
authorMarek Vasut <marex@denx.de>
Thu, 17 Oct 2024 01:08:40 +0000 (03:08 +0200)
committerFabio Estevam <festevam@gmail.com>
Fri, 18 Oct 2024 12:41:09 +0000 (09:41 -0300)
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.

Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Marek Vasut <marex@denx.de>
Makefile
dts/Kconfig
dts/Makefile
scripts/Makefile.dts

index a2e9435c4f8e7f1f520bfccd2e23df737bbcfd3b..2e0a2e9f90c8c760f7a4c984759669cbdb2ba5d2 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1383,7 +1383,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
 
index 569d4be338e3ac39d648141874dd4a296b6f34ea..385058b429f5b4b7ebe08db14bc35bce30301086 100644 (file)
@@ -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
index 62a65688cf5e984f95df6ed5a1535ab01b60426f..86bf8dc215603c3c02930e9c642d7dc06ce715fc 100644 (file)
@@ -20,6 +20,12 @@ else
 dt_dir := arch/$(ARCH)/dts
 endif
 
+ifneq ($(CONFIG_OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS),)
+local_dtbos := local-dtbos
+else
+local_dtbos :=
+endif
+
 ifneq ($(EXT_DTB),)
 DTB := $(EXT_DTB)
 else
@@ -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_XPL_BUILD),y)
 obj-$(CONFIG_OF_EMBED) := dt-spl.dtb.o
 # support "out-of-tree" build for dtb-spl
index 1fe142f2bbf78efb861ec1e3af8c048f4f5967ee..3ab67b3c247808ae1c603a0c16a98e6c7a64e4a1 100644 (file)
@@ -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