include/image*: add support for device-tree overlays
authorDaniel Golle <daniel@makrotopia.org>
Wed, 17 Mar 2021 17:30:48 +0000 (17:30 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Wed, 17 Mar 2021 17:45:34 +0000 (17:45 +0000)
Add new target feature 'dt-overlay' which makes DTC keep the symbol
names in the generated dtb.
Make sure additional DT overlay sources specified by the new device
variable DEVICE_DTS_OVERLAY get compiled together with the main DTS
(currently overlays got to be in the same folder). Let Build/fit pass
the generated DT overlay blobs to mkits.sh.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
include/image-commands.mk
include/image.mk
scripts/target-metadata.pl
target/Config.in

index daa01a3d099e2530bfcfa0e3faddef1456c03516..684646e233cc223ae93527e9613fe6fadb1a6753 100644 (file)
@@ -207,13 +207,16 @@ endef
 define Build/fit
        $(TOPDIR)/scripts/mkits.sh \
                -D $(DEVICE_NAME) -o $@.its -k $@ \
-               $(if $(word 2,$(1)),-d $(word 2,$(1))) -C $(word 1,$(1)) \
+               -C $(word 1,$(1)) $(if $(word 2,$(1)),\
+               $(if $(DEVICE_DTS_OVERLAY),-d $(KERNEL_BUILD_DIR)/image-$$(basename $(word 2,$(1))),\
+                       -d $(word 2,$(1)))) \
                $(if $(findstring with-rootfs,$(word 3,$(1))),-r $(IMAGE_ROOTFS)) \
                $(if $(findstring with-initrd,$(word 3,$(1))), \
                        $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS_SEPARATE), \
                                -i $(KERNEL_BUILD_DIR)/initrd.cpio$(strip $(call Build/initrd_compression)))) \
                -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
                $(if $(DEVICE_FDT_NUM),-n $(DEVICE_FDT_NUM)) \
+               $(if $(DEVICE_DTS_OVERLAY),$(foreach dtso,$(DEVICE_DTS_OVERLAY), -O $(dtso):$(KERNEL_BUILD_DIR)/image-$(dtso).dtb)) \
                -c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config-1") \
                -A $(LINUX_KARCH) -v $(LINUX_VERSION)
        PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage $(if $(findstring external,$(word 3,$(1))),\
index cae3e734389c63d5036e61411b9809bba5461eee..29df0938bc478dc8fa9eb1e54f1614a854f73c88 100644 (file)
@@ -190,6 +190,7 @@ define Image/BuildDTB
                -o $(2).tmp $(1)
        $(LINUX_DIR)/scripts/dtc/dtc -O dtb \
                -i$(dir $(1)) $(DTC_FLAGS) $(4) \
+       $(if $(CONFIG_HAS_DT_OVERLAY_SUPPORT),-@) \
                -o $(2) $(2).tmp
        $(RM) $(2).tmp
 endef
@@ -393,6 +394,7 @@ define Device/Init
   DEVICE_DTS :=
   DEVICE_DTS_CONFIG :=
   DEVICE_DTS_DIR :=
+  DEVICE_DTS_OVERLAY :=
   DEVICE_FDT_NUM :=
   SOC :=
 
@@ -416,8 +418,8 @@ DEFAULT_DEVICE_VARS := \
   DEVICE_NAME KERNEL KERNEL_INITRAMFS KERNEL_INITRAMFS_IMAGE KERNEL_SIZE \
   CMDLINE UBOOTENV_IN_UBI KERNEL_IN_UBI BLOCKSIZE PAGESIZE SUBPAGESIZE \
   VID_HDR_OFFSET UBINIZE_OPTS UBINIZE_PARTS MKUBIFS_OPTS DEVICE_DTS \
-  DEVICE_DTS_CONFIG DEVICE_DTS_DIR DEVICE_FDT_NUM SOC BOARD_NAME \
-  UIMAGE_MAGIC UIMAGE_NAME \
+  DEVICE_DTS_CONFIG DEVICE_DTS_DIR DEVICE_DTS_OVERLAY DEVICE_FDT_NUM \
+  SOC BOARD_NAME UIMAGE_MAGIC UIMAGE_NAME \
   SUPPORTED_DEVICES IMAGE_METADATA KERNEL_ENTRY KERNEL_LOADADDR \
   UBOOT_PATH IMAGE_SIZE \
   DEVICE_COMPAT_VERSION DEVICE_COMPAT_MESSAGE \
@@ -539,7 +541,7 @@ endef
 endif
 
 define Device/Build/kernel
-  $$(eval $$(foreach dts,$$(DEVICE_DTS), \
+  $$(eval $$(foreach dts,$$(DEVICE_DTS) $$(DEVICE_DTS_OVERLAY), \
        $$(call Device/Build/dtb,$$(notdir $$(dts)), \
                $$(if $$(DEVICE_DTS_DIR),$$(DEVICE_DTS_DIR),$$(DTS_DIR)), \
                $$(dts) \
index 09a2d993c1b0a369b37be5af1a60167e35fcc651..990235182dd5ebb95f74b64aaff3efb3d3ef7700 100755 (executable)
@@ -45,6 +45,7 @@ sub target_config_features(@) {
                /^rootfs-part$/ and $ret .= "\tselect USES_ROOTFS_PART\n";
                /^boot-part$/ and $ret .= "\tselect USES_BOOT_PART\n";
                /^testing-kernel$/ and $ret .= "\tselect HAS_TESTING_KERNEL\n";
+               /^dt-overlay$/ and $ret .= "\tselect HAS_DT_OVERLAY_SUPPORT\n";
        }
        return $ret;
 }
index 86d39ce07c61fd3cf733d614d2f7abf9694fee96..51a278cae94ea7e85979ac4217521d97357985e7 100644 (file)
@@ -13,6 +13,9 @@ config HAS_SPE_FPU
 config HAS_FPU
        bool
 
+config HAS_DT_OVERLAY_SUPPORT
+       bool
+
 config AUDIO_SUPPORT
        bool