* [Buildroot] [RFC PATCH 0/2] linux: install in-tree device-tree blob overlays
@ 2024-04-12 14:09 Gaël PORTAY
2024-04-12 14:09 ` [Buildroot] [RFC PATCH 1/2] " Gaël PORTAY
2024-04-12 14:09 ` [Buildroot] [RFC PATCH 2/2] board/raspberrypi: " Gaël PORTAY
0 siblings, 2 replies; 5+ messages in thread
From: Gaël PORTAY @ 2024-04-12 14:09 UTC (permalink / raw)
To: buildroot, Thomas Petazzoni
Cc: Gaël PORTAY, Martin Bark, Julien Grossholtz
Hello,
This patch serie intends to address a possible out-of-sync for the
device-tree blob and overlays with the raspberrypi's. This follows
up[1].
The first patch adds the three configurations to install the dtbo's;
these configurations are copies of the original dtb's configurations.
The second patch applies these configurations to the raspberrypi's.
Note: All the story lives in the commit message of the first patch; this
could be drop if this patch serie is something you are interested in.
Note 2: I have also pending patches to support for wildcards for both
dtb's and dtbo's filenames that simplifies the integrator life if the
whole output files need to be installed.
Note 3: If you known other downstream trees that compiles dtbo's,
please tell me.
[1]: https://patchwork.ozlabs.org/project/buildroot/cover/20231121193448.1151936-1-gael.portay@rtone.fr/
Kind Regards,
Gaël PORTAY (2):
linux: install in-tree device-tree blob overlays
board/raspberrypi: install in-tree device-tree blob overlays
board/raspberrypi/post-image.sh | 2 +-
configs/raspberrypi0w_defconfig | 5 +++++
configs/raspberrypi3_64_defconfig | 4 ++++
configs/raspberrypi3_defconfig | 4 ++++
configs/raspberrypi3_qt5we_defconfig | 4 ++++
configs/raspberrypi4_64_defconfig | 4 ++++
configs/raspberrypi4_defconfig | 4 ++++
configs/raspberrypicm4io_64_defconfig | 4 ++++
configs/raspberrypicm4io_defconfig | 4 ++++
configs/raspberrypizero2w_defconfig | 4 ++++
linux/Config.in | 23 +++++++++++++++++++++++
linux/linux.mk | 24 ++++++++++++++++++++++++
12 files changed, 85 insertions(+), 1 deletion(-)
--
2.44.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [RFC PATCH 1/2] linux: install in-tree device-tree blob overlays
2024-04-12 14:09 [Buildroot] [RFC PATCH 0/2] linux: install in-tree device-tree blob overlays Gaël PORTAY
@ 2024-04-12 14:09 ` Gaël PORTAY
2024-08-30 12:20 ` Niklas Cassel via buildroot
2024-04-12 14:09 ` [Buildroot] [RFC PATCH 2/2] board/raspberrypi: " Gaël PORTAY
1 sibling, 1 reply; 5+ messages in thread
From: Gaël PORTAY @ 2024-04-12 14:09 UTC (permalink / raw)
To: buildroot, Thomas Petazzoni
Cc: Gaël PORTAY, Martin Bark, Julien Grossholtz
The device-tree blob overlays are automatically built from the custom
raspberrypi linux tree (for both architectures arm and arm64).
The device-tree overlays is mostly a downstream feature even though the
upstream kernel generates the symbols node into the device-tree blobs it
compiles (thanks to the option -@ in the DTC_FLAGS); and it does not
have intree device-tree overlays.
Note: The device-tree overlays require the node __symbols__ to be part
of the device-tree blob to get successfully loaded at runtime if the
overlaied nodes make reference to symbols from the original devicetree
blob.
The kernel image and the device-tree blobs for the raspberrypi boards
are built from the downstream linux package, and the device-tree blob
overlays are taken from the package rpi-firmware. Both packages linux
and rpi-firmware have to be closely synced.
The buildroot tree maintains the packages and the board configurations,
and it keeps things synced.
The downstream configurations in br2-external trees require to pay
attention to that synchronization as well. If the files are out-of-sync,
(i.e. the dtbos in the rpi-firmware package from the buildroot tree do
not match the linux commit in the br2-external tree), then the boot may
fail.
Since the Raspberry Pi's with Bluetooth have no dedicated debugging UART,
they require to merge the bt-miniuart.dtbo to restore the UART0 to the
accessible GPIOs of 40-pin GPIO header.
The investigation of the boot failure is comlicated if the root cause is
due to the out-of-sync merge of the debugging uart's dtbo to the dtb and
if firmware bootloader does not output the debug traces.
MESS:00:00:05.389885:0: brfs: File read: /mfs/sd/overlays/miniuart-bt.dtbo
MESS:00:00:05.408881:0: dterror: can't find symbol 'uart1_bt_pins'
MESS:00:00:05.411942:0: Failed to resolve overlay 'miniuart-bt'
All this long story to introduce the three new dtbos configs to build
in-tree or out-of-tree dtbos, and to keep the directory name (assuming
the downstream trees uses the directory name overlays).
The three configs are the equivalent to existing dts configs:
- BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES is equivalent to
BR2_LINUX_KERNEL_INTREE_DTS_NAME
- BR2_LINUX_KERNEL_CUSTOM_DTS_OVERLAY_PATH is equivalent to
BR2_LINUX_KERNEL_CUSTOM_DTS_PATH
- BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME is equivalent to
BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME
Signed-off-by: Gaël PORTAY <gael.portay@rtone.fr>
---
linux/Config.in | 23 +++++++++++++++++++++++
linux/linux.mk | 24 ++++++++++++++++++++++++
2 files changed, 47 insertions(+)
diff --git a/linux/Config.in b/linux/Config.in
index 2767b709d4..fdd57e6ff9 100644
--- a/linux/Config.in
+++ b/linux/Config.in
@@ -434,6 +434,29 @@ config BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT
Choose this option to support Device Tree overlays
on the target system.
+config BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES
+ string "In-tree Device Tree Source Overlay file names"
+ depends on BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT
+ help
+ Name of in-tree device tree source file, without
+ the trailing -overlay.dts. You can provide a list of
+ dts files to build, separated by spaces.
+
+config BR2_LINUX_KERNEL_CUSTOM_DTS_OVERLAY_PATH
+ string "Out-of-tree Device Tree Source Overlay file paths"
+ help
+ Paths to out-of-tree Device Tree Source Overlay (-overlay.dts)
+ and Device Tree Source Include (.dtsi) files, separated by
+ spaces. These files will be copied to the kernel sources and
+ the .dts files will be compiled from there.
+
+config BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME
+ bool "Keep the directory name of the Device Tree Overlay"
+ help
+ If enabled, the device tree blob overlays keep their
+ directory prefixes when they get copied to the
+ output image directory or the target directory.
+
endif
config BR2_LINUX_KERNEL_INSTALL_TARGET
diff --git a/linux/linux.mk b/linux/linux.mk
index 4e12b36c1f..8b3563394d 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -199,6 +199,14 @@ LINUX_DTS_NAME += $(basename $(filter %.dts,$(notdir $(call qstrip,$(BR2_LINUX_K
LINUX_DTBS = $(addsuffix .dtb,$(LINUX_DTS_NAME))
+ifeq ($(BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT),y)
+LINUX_DTS_OVERLAY_NAMES += $(call qstrip,$(BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES))
+
+LINUX_DTS_OVERLAY_NAMES += $(basename $(filter %-overlay.dts,$(notdir $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_OVERLAY_PATH)))))
+
+LINUX_DTBOS = $(addsuffix .dtbo,$(LINUX_DTS_OVERLAY_NAMES))
+endif
+
ifeq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),y)
LINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_NAME))
LINUX_TARGET_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME))
@@ -459,10 +467,23 @@ define LINUX_INSTALL_DTB
$(1)/$(if $(BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME),$(dtb),$(notdir $(dtb)))
)
endef
+define LINUX_INSTALL_DTBO
+ $(foreach dtbo,$(LINUX_DTBOS), \
+ install -D \
+ $(wildcard $(LINUX_ARCH_PATH)/boot/dts/$(dtbo)) \
+ $(1)/$(if $(BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME),$(dtbo),$(notdir $(dtbo)))
+ )
+endef
endif # BR2_LINUX_KERNEL_APPENDED_DTB
endif # BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT
endif # BR2_LINUX_KERNEL_DTS_SUPPORT
+ifeq ($(BR2_LINUX_KERNEL_DTS_OVERLAY_SUPPORT),y)
+define LINUX_BUILD_DTBO
+ $(LINUX_MAKE_ENV) $(BR2_MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_DTBOS)
+endef
+endif # BR2_LINUX_KERNEL_DTS_OVERLAY_SUPPORT
+
ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y)
# dtbs moved from arch/$ARCH/boot to arch/$ARCH/boot/dts since 3.8-rc1
define LINUX_APPEND_DTB
@@ -509,6 +530,7 @@ define LINUX_BUILD_CMDS
$(LINUX_MAKE_ENV) $(BR2_MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME)
$(LINUX_BUILD_DTB)
$(LINUX_APPEND_DTB)
+ $(LINUX_BUILD_DTBO)
endef
ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y)
@@ -530,6 +552,7 @@ ifeq ($(BR2_LINUX_KERNEL_INSTALL_TARGET),y)
define LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET
$(call LINUX_INSTALL_IMAGE,$(TARGET_DIR)/boot)
$(call LINUX_INSTALL_DTB,$(TARGET_DIR)/boot)
+ $(call LINUX_INSTALL_DTBO,$(TARGET_DIR)/boot/overlays)
endef
endif
@@ -544,6 +567,7 @@ endef
define LINUX_INSTALL_IMAGES_CMDS
$(call LINUX_INSTALL_IMAGE,$(BINARIES_DIR))
$(call LINUX_INSTALL_DTB,$(BINARIES_DIR))
+ $(call LINUX_INSTALL_DTBO,$(BINARIES_DIR))
endef
ifeq ($(BR2_STRIP_strip),y)
--
2.44.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Buildroot] [RFC PATCH 2/2] board/raspberrypi: install in-tree device-tree blob overlays
2024-04-12 14:09 [Buildroot] [RFC PATCH 0/2] linux: install in-tree device-tree blob overlays Gaël PORTAY
2024-04-12 14:09 ` [Buildroot] [RFC PATCH 1/2] " Gaël PORTAY
@ 2024-04-12 14:09 ` Gaël PORTAY
1 sibling, 0 replies; 5+ messages in thread
From: Gaël PORTAY @ 2024-04-12 14:09 UTC (permalink / raw)
To: buildroot, Thomas Petazzoni
Cc: Gaël PORTAY, Martin Bark, Julien Grossholtz
This installs some device-tree blob overlays built in-tree by the
instead of installing the ones from the rpi-firmware.
Signed-off-by: Gaël PORTAY <gael.portay@rtone.fr>
---
board/raspberrypi/post-image.sh | 2 +-
configs/raspberrypi0w_defconfig | 5 +++++
configs/raspberrypi3_64_defconfig | 4 ++++
configs/raspberrypi3_defconfig | 4 ++++
configs/raspberrypi3_qt5we_defconfig | 4 ++++
configs/raspberrypi4_64_defconfig | 4 ++++
configs/raspberrypi4_defconfig | 4 ++++
configs/raspberrypicm4io_64_defconfig | 4 ++++
configs/raspberrypicm4io_defconfig | 4 ++++
configs/raspberrypizero2w_defconfig | 4 ++++
10 files changed, 38 insertions(+), 1 deletion(-)
diff --git a/board/raspberrypi/post-image.sh b/board/raspberrypi/post-image.sh
index 9b9eac972b..8e6d19066b 100755
--- a/board/raspberrypi/post-image.sh
+++ b/board/raspberrypi/post-image.sh
@@ -12,7 +12,7 @@ if [ ! -e "${GENIMAGE_CFG}" ]; then
GENIMAGE_CFG="${BINARIES_DIR}/genimage.cfg"
FILES=()
- for i in "${BINARIES_DIR}"/*.dtb "${BINARIES_DIR}"/rpi-firmware/*; do
+ for i in "${BINARIES_DIR}"/{overlays,*.dtb} "${BINARIES_DIR}"/rpi-firmware/*; do
FILES+=( "${i#${BINARIES_DIR}/}" )
done
diff --git a/configs/raspberrypi0w_defconfig b/configs/raspberrypi0w_defconfig
index ac72d49f92..683fd7ec8c 100644
--- a/configs/raspberrypi0w_defconfig
+++ b/configs/raspberrypi0w_defconfig
@@ -13,12 +13,17 @@ BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,17f135
BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-zero-w"
+BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES="overlays/miniuart-bt"
+BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME=y
+
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi0w/config_0w.txt"
+# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set
# Required tools to create the SD image
BR2_PACKAGE_HOST_DOSFSTOOLS=y
diff --git a/configs/raspberrypi3_64_defconfig b/configs/raspberrypi3_64_defconfig
index 6871dc0fe0..2dbf6cf363 100644
--- a/configs/raspberrypi3_64_defconfig
+++ b/configs/raspberrypi3_64_defconfig
@@ -17,6 +17,9 @@ BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi3"
# Build the DTB from the kernel sources
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2837-rpi-3-b"
+BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES="overlays/miniuart-bt"
+BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
@@ -24,6 +27,7 @@ BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi3-64/config_3_64bit.txt"
+# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set
# Required tools to create the SD image
BR2_PACKAGE_HOST_DOSFSTOOLS=y
diff --git a/configs/raspberrypi3_defconfig b/configs/raspberrypi3_defconfig
index f0e7b82191..92e74002cb 100644
--- a/configs/raspberrypi3_defconfig
+++ b/configs/raspberrypi3_defconfig
@@ -17,6 +17,9 @@ BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
# Build the DTB from the kernel sources
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3"
+BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES="overlays/miniuart-bt"
+BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
@@ -24,6 +27,7 @@ BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi3/config_3.txt"
+# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set
# Required tools to create the SD image
BR2_PACKAGE_HOST_DOSFSTOOLS=y
diff --git a/configs/raspberrypi3_qt5we_defconfig b/configs/raspberrypi3_qt5we_defconfig
index 532b3ed686..0e6236dea4 100644
--- a/configs/raspberrypi3_qt5we_defconfig
+++ b/configs/raspberrypi3_qt5we_defconfig
@@ -18,6 +18,9 @@ BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
# Build the DTB from the kernel sources
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3"
+BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES="overlays/miniuart-bt"
+BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
@@ -34,6 +37,7 @@ BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi3/config_3_qt5we.txt"
+# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set
BR2_PACKAGE_RPI_USERLAND=y
BR2_PACKAGE_CA_CERTIFICATES=y
BR2_PACKAGE_NTP=y
diff --git a/configs/raspberrypi4_64_defconfig b/configs/raspberrypi4_64_defconfig
index 453bbe9440..6be9d3f366 100644
--- a/configs/raspberrypi4_64_defconfig
+++ b/configs/raspberrypi4_64_defconfig
@@ -17,12 +17,16 @@ BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
# Build the DTB from the kernel sources
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-4-b"
+BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES="overlays/miniuart-bt overlays/vc4-kms-v3d-pi4 overlays/imx219"
+BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi4-64/config_4_64bit.txt"
+# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set
# Required tools to create the SD image
BR2_PACKAGE_HOST_DOSFSTOOLS=y
diff --git a/configs/raspberrypi4_defconfig b/configs/raspberrypi4_defconfig
index 1ed5d34b56..5a4fa2b69b 100644
--- a/configs/raspberrypi4_defconfig
+++ b/configs/raspberrypi4_defconfig
@@ -17,12 +17,16 @@ BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
# Build the DTB from the kernel sources
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2711-rpi-4-b"
+BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES="overlays/miniuart-bt"
+BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi4/config_4.txt"
+# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set
# Required tools to create the SD image
BR2_PACKAGE_HOST_DOSFSTOOLS=y
diff --git a/configs/raspberrypicm4io_64_defconfig b/configs/raspberrypicm4io_64_defconfig
index d53711c3a7..f74bfd04fa 100644
--- a/configs/raspberrypicm4io_64_defconfig
+++ b/configs/raspberrypicm4io_64_defconfig
@@ -17,12 +17,16 @@ BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
# Build the DTB from the kernel sources
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-cm4"
+BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES="overlays/miniuart-bt overlays/i2c-rtc overlays/dwc2"
+BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypicm4io-64/config_cm4io_64bit.txt"
+# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set
# Required tools to create the SD image
BR2_PACKAGE_HOST_DOSFSTOOLS=y
diff --git a/configs/raspberrypicm4io_defconfig b/configs/raspberrypicm4io_defconfig
index 4b50dc9ef9..54ff528f51 100644
--- a/configs/raspberrypicm4io_defconfig
+++ b/configs/raspberrypicm4io_defconfig
@@ -17,12 +17,16 @@ BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
# Build the DTB from the kernel sources
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2711-rpi-cm4"
+BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES="overlays/miniuart-bt overlays/i2c-rtc overlays/dwc2"
+BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME=y
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypicm4io-64/config_cm4io.txt"
+# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set
# Required tools to create the SD image
BR2_PACKAGE_HOST_DOSFSTOOLS=y
diff --git a/configs/raspberrypizero2w_defconfig b/configs/raspberrypizero2w_defconfig
index 1bf335c076..66cea3721e 100644
--- a/configs/raspberrypizero2w_defconfig
+++ b/configs/raspberrypizero2w_defconfig
@@ -16,11 +16,15 @@ BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-zero-2-w"
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
+BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES="overlays/miniuart-bt"
+BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypizero2w/config_zero2w.txt"
+# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set
# MicroSD images generation tools
BR2_PACKAGE_HOST_DOSFSTOOLS=y
--
2.44.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Buildroot] [RFC PATCH 1/2] linux: install in-tree device-tree blob overlays
2024-04-12 14:09 ` [Buildroot] [RFC PATCH 1/2] " Gaël PORTAY
@ 2024-08-30 12:20 ` Niklas Cassel via buildroot
2024-09-02 19:57 ` Gaël PORTAY
0 siblings, 1 reply; 5+ messages in thread
From: Niklas Cassel via buildroot @ 2024-08-30 12:20 UTC (permalink / raw)
To: Gaël PORTAY
Cc: Julien Grossholtz, Michael Walle, Damien Le Moal,
Thomas Petazzoni, buildroot@buildroot.org, Martin Bark
Hello Gaël,
On Fri, Apr 12, 2024 at 04:09:44PM +0200, Gaël PORTAY wrote:
> The device-tree blob overlays are automatically built from the custom
> raspberrypi linux tree (for both architectures arm and arm64).
>
> The device-tree overlays is mostly a downstream feature even though the
> upstream kernel generates the symbols node into the device-tree blobs it
> compiles (thanks to the option -@ in the DTC_FLAGS); and it does not
> have intree device-tree overlays.
>
> Note: The device-tree overlays require the node __symbols__ to be part
> of the device-tree blob to get successfully loaded at runtime if the
> overlaied nodes make reference to symbols from the original devicetree
> blob.
>
> The kernel image and the device-tree blobs for the raspberrypi boards
> are built from the downstream linux package, and the device-tree blob
> overlays are taken from the package rpi-firmware. Both packages linux
> and rpi-firmware have to be closely synced.
>
> The buildroot tree maintains the packages and the board configurations,
> and it keeps things synced.
>
> The downstream configurations in br2-external trees require to pay
> attention to that synchronization as well. If the files are out-of-sync,
> (i.e. the dtbos in the rpi-firmware package from the buildroot tree do
> not match the linux commit in the br2-external tree), then the boot may
> fail.
>
> Since the Raspberry Pi's with Bluetooth have no dedicated debugging UART,
> they require to merge the bt-miniuart.dtbo to restore the UART0 to the
> accessible GPIOs of 40-pin GPIO header.
>
> The investigation of the boot failure is comlicated if the root cause is
> due to the out-of-sync merge of the debugging uart's dtbo to the dtb and
> if firmware bootloader does not output the debug traces.
>
> MESS:00:00:05.389885:0: brfs: File read: /mfs/sd/overlays/miniuart-bt.dtbo
> MESS:00:00:05.408881:0: dterror: can't find symbol 'uart1_bt_pins'
> MESS:00:00:05.411942:0: Failed to resolve overlay 'miniuart-bt'
>
> All this long story to introduce the three new dtbos configs to build
> in-tree or out-of-tree dtbos, and to keep the directory name (assuming
> the downstream trees uses the directory name overlays).
>
> The three configs are the equivalent to existing dts configs:
> - BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES is equivalent to
> BR2_LINUX_KERNEL_INTREE_DTS_NAME
> - BR2_LINUX_KERNEL_CUSTOM_DTS_OVERLAY_PATH is equivalent to
> BR2_LINUX_KERNEL_CUSTOM_DTS_PATH
> - BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME is equivalent to
> BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME
>
> Signed-off-by: Gaël PORTAY <gael.portay@rtone.fr>
> ---
> linux/Config.in | 23 +++++++++++++++++++++++
> linux/linux.mk | 24 ++++++++++++++++++++++++
> 2 files changed, 47 insertions(+)
>
> diff --git a/linux/Config.in b/linux/Config.in
> index 2767b709d4..fdd57e6ff9 100644
> --- a/linux/Config.in
> +++ b/linux/Config.in
> @@ -434,6 +434,29 @@ config BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT
> Choose this option to support Device Tree overlays
> on the target system.
>
> +config BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES
> + string "In-tree Device Tree Source Overlay file names"
> + depends on BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT
> + help
> + Name of in-tree device tree source file, without
> + the trailing -overlay.dts. You can provide a list of
> + dts files to build, separated by spaces.
I do not like that you assume that the DT overlay has a -overlay.dts suffix,
that seems to be something specific for the raspberry pi downstream kernel.
Most device tree overlays in the upstream kernel simply have a .dtso suffix:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=40658534756f8369e93b84fa75c20bde6528cb82
So it would be nice if your patch supported that as well.
Also see this other proposal from Michael Walle:
https://lore.kernel.org/buildroot/20240213154847.914068-1-michael@walle.cc/
Kind regards,
Niklas
> +
> +config BR2_LINUX_KERNEL_CUSTOM_DTS_OVERLAY_PATH
> + string "Out-of-tree Device Tree Source Overlay file paths"
> + help
> + Paths to out-of-tree Device Tree Source Overlay (-overlay.dts)
> + and Device Tree Source Include (.dtsi) files, separated by
> + spaces. These files will be copied to the kernel sources and
> + the .dts files will be compiled from there.
> +
> +config BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME
> + bool "Keep the directory name of the Device Tree Overlay"
> + help
> + If enabled, the device tree blob overlays keep their
> + directory prefixes when they get copied to the
> + output image directory or the target directory.
> +
> endif
>
> config BR2_LINUX_KERNEL_INSTALL_TARGET
> diff --git a/linux/linux.mk b/linux/linux.mk
> index 4e12b36c1f..8b3563394d 100644
> --- a/linux/linux.mk
> +++ b/linux/linux.mk
> @@ -199,6 +199,14 @@ LINUX_DTS_NAME += $(basename $(filter %.dts,$(notdir $(call qstrip,$(BR2_LINUX_K
>
> LINUX_DTBS = $(addsuffix .dtb,$(LINUX_DTS_NAME))
>
> +ifeq ($(BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT),y)
> +LINUX_DTS_OVERLAY_NAMES += $(call qstrip,$(BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES))
> +
> +LINUX_DTS_OVERLAY_NAMES += $(basename $(filter %-overlay.dts,$(notdir $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_OVERLAY_PATH)))))
> +
> +LINUX_DTBOS = $(addsuffix .dtbo,$(LINUX_DTS_OVERLAY_NAMES))
> +endif
> +
> ifeq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),y)
> LINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_NAME))
> LINUX_TARGET_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME))
> @@ -459,10 +467,23 @@ define LINUX_INSTALL_DTB
> $(1)/$(if $(BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME),$(dtb),$(notdir $(dtb)))
> )
> endef
> +define LINUX_INSTALL_DTBO
> + $(foreach dtbo,$(LINUX_DTBOS), \
> + install -D \
> + $(wildcard $(LINUX_ARCH_PATH)/boot/dts/$(dtbo)) \
> + $(1)/$(if $(BR2_LINUX_KERNEL_DTBO_KEEP_DIRNAME),$(dtbo),$(notdir $(dtbo)))
> + )
> +endef
> endif # BR2_LINUX_KERNEL_APPENDED_DTB
> endif # BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT
> endif # BR2_LINUX_KERNEL_DTS_SUPPORT
>
> +ifeq ($(BR2_LINUX_KERNEL_DTS_OVERLAY_SUPPORT),y)
> +define LINUX_BUILD_DTBO
> + $(LINUX_MAKE_ENV) $(BR2_MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_DTBOS)
> +endef
> +endif # BR2_LINUX_KERNEL_DTS_OVERLAY_SUPPORT
> +
> ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y)
> # dtbs moved from arch/$ARCH/boot to arch/$ARCH/boot/dts since 3.8-rc1
> define LINUX_APPEND_DTB
> @@ -509,6 +530,7 @@ define LINUX_BUILD_CMDS
> $(LINUX_MAKE_ENV) $(BR2_MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME)
> $(LINUX_BUILD_DTB)
> $(LINUX_APPEND_DTB)
> + $(LINUX_BUILD_DTBO)
> endef
>
> ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y)
> @@ -530,6 +552,7 @@ ifeq ($(BR2_LINUX_KERNEL_INSTALL_TARGET),y)
> define LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET
> $(call LINUX_INSTALL_IMAGE,$(TARGET_DIR)/boot)
> $(call LINUX_INSTALL_DTB,$(TARGET_DIR)/boot)
> + $(call LINUX_INSTALL_DTBO,$(TARGET_DIR)/boot/overlays)
> endef
> endif
>
> @@ -544,6 +567,7 @@ endef
> define LINUX_INSTALL_IMAGES_CMDS
> $(call LINUX_INSTALL_IMAGE,$(BINARIES_DIR))
> $(call LINUX_INSTALL_DTB,$(BINARIES_DIR))
> + $(call LINUX_INSTALL_DTBO,$(BINARIES_DIR))
> endef
>
> ifeq ($(BR2_STRIP_strip),y)
> --
> 2.44.0
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Buildroot] [RFC PATCH 1/2] linux: install in-tree device-tree blob overlays
2024-08-30 12:20 ` Niklas Cassel via buildroot
@ 2024-09-02 19:57 ` Gaël PORTAY
0 siblings, 0 replies; 5+ messages in thread
From: Gaël PORTAY @ 2024-09-02 19:57 UTC (permalink / raw)
To: Niklas Cassel, Gaël PORTAY
Cc: Julien Grossholtz, Michael Walle, Damien Le Moal,
Thomas Petazzoni, buildroot@buildroot.org, Martin Bark
Hello Niklas,
On Fri Aug 30, 2024 at 2:20 PM CEST, Niklas Cassel via buildroot wrote:
> > +config BR2_LINUX_KERNEL_INTREE_DTS_OVERLAY_NAMES
> > + string "In-tree Device Tree Source Overlay file names"
> > + depends on BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT
> > + help
> > + Name of in-tree device tree source file, without
> > + the trailing -overlay.dts. You can provide a list of
> > + dts files to build, separated by spaces.
>
> I do not like that you assume that the DT overlay has a -overlay.dts suffix,
> that seems to be something specific for the raspberry pi downstream kernel.
>
> Most device tree overlays in the upstream kernel simply have a .dtso suffix:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=40658534756f8369e93b84fa75c20bde6528cb82
>
> So it would be nice if your patch supported that as well.
>
Thank you very much to let me know about that! I have missed it
entirely.
I based my work on linux 5.15 (raspberrypi), that may explain.
However, I figured out the out-of-tree built is broken, facepalm.
I will post a v1 with the fix.
> Also see this other proposal from Michael Walle:
> https://lore.kernel.org/buildroot/20240213154847.914068-1-michael@walle.cc/
>
I will have a look at it later, thanks.
> Kind regards,
> Niklas
Kind Regards,
Gaël
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-09-02 19:57 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-12 14:09 [Buildroot] [RFC PATCH 0/2] linux: install in-tree device-tree blob overlays Gaël PORTAY
2024-04-12 14:09 ` [Buildroot] [RFC PATCH 1/2] " Gaël PORTAY
2024-08-30 12:20 ` Niklas Cassel via buildroot
2024-09-02 19:57 ` Gaël PORTAY
2024-04-12 14:09 ` [Buildroot] [RFC PATCH 2/2] board/raspberrypi: " Gaël PORTAY
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox