Browse Source

mk: Support appending a DTB to kernel image

Activated by setting ADK_TARGET_KERNEL_APPEND_DTB symbol to the basename
(without suffix) of a dtb file. Not quite user-friendly, but really
meant for internal use via default symbol values depending on chosen
target system.

Signed-off-by: Phil Sutter <phil@nwl.cc>
Phil Sutter 2 years ago
parent
commit
83838a890a
3 changed files with 13 additions and 0 deletions
  1. 5 0
      mk/image.mk
  2. 5 0
      mk/kernel-build.mk
  3. 3 0
      target/config/Config.in.kernelfmt

+ 5 - 0
mk/image.mk

@@ -313,6 +313,11 @@ ifeq ($(ADK_LINUX_KERNEL_COMPRESS_NONE),y)
 		echo "CONFIG_RD_ZSTD=n" >> ${LINUX_DIR}/.config
 endif
 	@-rm $(LINUX_DIR)/usr/initramfs_data.cpio* 2>/dev/null
+ifneq ($(ADK_TARGET_KERNEL_APPEND_DTB),)
+	${KERNEL_MAKE} zImage dtbs $(MAKE_TRACE)
+	(cd $(LINUX_DIR)/arch/$(ADK_TARGET_ARCH)/boot && \
+	 cat dts/${ADK_TARGET_KERNEL_APPEND_DTB}.dtb >> zImage)
+endif
 	${KERNEL_MAKE} $(ADK_TARGET_KERNEL) $(MAKE_TRACE)
 	@cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
 

+ 5 - 0
mk/kernel-build.mk

@@ -88,6 +88,11 @@ endif
 
 $(LINUX_DIR)/$(KERNEL_FILE): $(LINUX_DIR)/.config
 	$(START_TRACE) "target/$(ADK_TARGET_ARCH)-kernel-compile.. "
+ifneq ($(ADK_TARGET_KERNEL_APPEND_DTB),)
+	${KERNEL_MAKE} zImage dtbs $(MAKE_TRACE)
+	(cd $(LINUX_DIR)/arch/$(ADK_TARGET_ARCH)/boot && \
+	 cat dts/${ADK_TARGET_KERNEL_APPEND_DTB}.dtb >> zImage)
+endif
 	${KERNEL_MAKE}  $(KERNEL_TARGET) $(MAKE_TRACE)
 	$(CMD_TRACE) " done"
 	$(END_TRACE)

+ 3 - 0
target/config/Config.in.kernelfmt

@@ -68,3 +68,6 @@ config ADK_TARGET_KERNEL_LOADADDR
 	hex
 	default 0x40008000 if ADK_TARGET_SYSTEM_BANANA_PRO
 	default 0x40008000 if ADK_TARGET_SYSTEM_ORANGE_PI0
+
+config ADK_TARGET_KERNEL_APPEND_DTB
+	string