summaryrefslogtreecommitdiffstats
path: root/configs
diff options
context:
space:
mode:
authorOleksij Rempel <o.rempel@pengutronix.de>2022-04-26 10:38:21 +0200
committerRobert Schwebel <r.schwebel@pengutronix.de>2022-04-26 15:23:37 +0200
commit17e0620b641f671a91a4e439e2789a87b9124d41 (patch)
treeeed77846af3cf990a4e20630500d35a27437ef4a /configs
parentf586445a24ac00dd841deb6b2d8e365a99d9f870 (diff)
downloadDistroKit-17e0620b641f671a91a4e439e2789a87b9124d41.tar.gz
DistroKit-17e0620b641f671a91a4e439e2789a87b9124d41.tar.xz
v7a: rpi: unify rpi{2, 3, cm3}.hdimg into common rpi.hdimg
barebox has had the ability to generate an extra image that's bootable like a kernel for a while now. With small adjustment, we can let the videocore use this image and pass it the appropriate device tree depending on the board used. Moving this decision into the VideoCore allows us to use the same image for both Raspberry Pi 2, Rasperry Pi 3 and Raspberry Pi CM3. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.pengutronix.de/20220426083821.1829442-3-a.fatoum@pengutronix.de Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de>
Diffstat (limited to 'configs')
-rw-r--r--configs/platform-v7a/config/images/rpi2.config7
-rw-r--r--configs/platform-v7a/config/images/rpi3.config28
-rw-r--r--configs/platform-v7a/config/images/rpicm3.config28
-rw-r--r--configs/platform-v7a/patches/barebox-2022.04.0/0004-ARM-cpu-board-dt-2nd-call-arm_cpu_lowlevel_init.patch40
-rw-r--r--configs/platform-v7a/patches/barebox-2022.04.0/0005-ARM-rpi-don-t-warn-about-lack-of-videocore-fdt.patch37
-rw-r--r--configs/platform-v7a/patches/barebox-2022.04.0/series2
-rw-r--r--configs/platform-v7a/platformconfig2
-rw-r--r--configs/platform-v7a/platforms/barebox-rpi2.in4
-rw-r--r--configs/platform-v7a/platforms/image-rpi2.in4
-rw-r--r--configs/platform-v7a/platforms/image-rpi3.in12
-rw-r--r--configs/platform-v7a/platforms/image-rpicm3.in12
-rw-r--r--configs/platform-v7a/rpi-firmware/config.txt2
-rw-r--r--configs/platform-v7a/rules/barebox-rpi2.make14
-rw-r--r--configs/platform-v7a/rules/image-rpi2.make2
-rw-r--r--configs/platform-v7a/rules/image-rpi3.make46
-rw-r--r--configs/platform-v7a/rules/image-rpicm3.make46
16 files changed, 100 insertions, 186 deletions
diff --git a/configs/platform-v7a/config/images/rpi2.config b/configs/platform-v7a/config/images/rpi2.config
index f8da7d4..08329ff 100644
--- a/configs/platform-v7a/config/images/rpi2.config
+++ b/configs/platform-v7a/config/images/rpi2.config
@@ -1,7 +1,12 @@
image rpi2-boot.vfat {
vfat {
files = { @FIRMWARE_RPI2@ }
- file barebox.img { image = barebox-raspberry-pi-2.img }
+ file barebox.img { image = barebox-dt-2nd-rpi.img }
+ file bcm2836-rpi-2-b.dtb { image = barebox-bcm2836-rpi-2.dtb }
+ file bcm2837-rpi-3-b.dtb { image = barebox-bcm2837-rpi-3.dtb }
+ file bcm2837-rpi-3-a-plus.dtb { image = barebox-bcm2837-rpi-3.dtb }
+ file bcm2837-rpi-3-b-plus.dtb { image = barebox-bcm2837-rpi-3.dtb }
+ file bcm2837-rpi-cm3-io3.dtb { image = barebox-bcm2837-rpi-cm3.dtb }
}
size = 32M
}
diff --git a/configs/platform-v7a/config/images/rpi3.config b/configs/platform-v7a/config/images/rpi3.config
deleted file mode 100644
index f87a727..0000000
--- a/configs/platform-v7a/config/images/rpi3.config
+++ /dev/null
@@ -1,28 +0,0 @@
-image rpi3-boot.vfat {
- vfat {
- files = { @FIRMWARE_RPI3@ }
- file barebox.img { image = barebox-raspberry-pi-3.img }
- }
- size = 32M
-}
-
-image @IMAGE@ {
- hdimage {
- align = 1M
- disk-signature = 0xbedf7893
- }
- partition boot {
- image = rpi3-boot.vfat
- partition-type = 0xc
- bootable = true
- }
- partition root-A {
- image = root.ext2
- partition-type = 0x83
- }
- partition data {
- partition-type = 0x83
- size = 512M
- }
-}
-/* vim: set tabstop=8 noexpandtab : */
diff --git a/configs/platform-v7a/config/images/rpicm3.config b/configs/platform-v7a/config/images/rpicm3.config
deleted file mode 100644
index d0c4c59..0000000
--- a/configs/platform-v7a/config/images/rpicm3.config
+++ /dev/null
@@ -1,28 +0,0 @@
-image rpicm3-boot.vfat {
- vfat {
- files = { @FIRMWARE_RPI3@ }
- file barebox.img { image = barebox-raspberry-pi-cm3.img }
- }
- size = 32M
-}
-
-image @IMAGE@ {
- hdimage {
- align = 1M
- disk-signature = 0xbedf7893
- }
- partition boot {
- image = rpicm3-boot.vfat
- partition-type = 0xc
- bootable = true
- }
- partition root-A {
- image = root.ext2
- partition-type = 0x83
- }
- partition data {
- partition-type = 0x83
- size = 512M
- }
-}
-/* vim: set tabstop=8 noexpandtab : */
diff --git a/configs/platform-v7a/patches/barebox-2022.04.0/0004-ARM-cpu-board-dt-2nd-call-arm_cpu_lowlevel_init.patch b/configs/platform-v7a/patches/barebox-2022.04.0/0004-ARM-cpu-board-dt-2nd-call-arm_cpu_lowlevel_init.patch
new file mode 100644
index 0000000..b0b825e
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2022.04.0/0004-ARM-cpu-board-dt-2nd-call-arm_cpu_lowlevel_init.patch
@@ -0,0 +1,40 @@
+From 92473f8169118472f0f40179eb60cb2cde765bb7 Mon Sep 17 00:00:00 2001
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Sat, 23 Apr 2022 12:24:34 +0200
+Subject: [PATCH 4/5] ARM: cpu: board-dt-2nd: call arm_cpu_lowlevel_init
+
+The generic DT image could be started by boot firmware that doesn't do
+all the initialization that we do in arm_cpu_lowlevel_init(), so call it
+always for good measure. This enables using the generic image as second
+stage to the Raspberry Pi videocore.
+
+Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
+---
+ arch/arm/cpu/board-dt-2nd.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/arch/arm/cpu/board-dt-2nd.c b/arch/arm/cpu/board-dt-2nd.c
+index 0731aecd1a51..6f4a6f26a8c7 100644
+--- a/arch/arm/cpu/board-dt-2nd.c
++++ b/arch/arm/cpu/board-dt-2nd.c
+@@ -21,6 +21,8 @@ void dt_2nd_aarch64(void *fdt)
+
+ /* entry point already set up stack */
+
++ arm_cpu_lowlevel_init();
++
+ relocate_to_current_adr();
+ setup_c();
+
+@@ -50,6 +52,8 @@ ENTRY_FUNCTION(start_dt_2nd, r0, r1, r2)
+ {
+ unsigned long image_start = (unsigned long)_text + global_variable_offset();
+
++ arm_cpu_lowlevel_init();
++
+ arm_setup_stack(image_start);
+
+ relocate_to_current_adr();
+--
+2.30.2
+
diff --git a/configs/platform-v7a/patches/barebox-2022.04.0/0005-ARM-rpi-don-t-warn-about-lack-of-videocore-fdt.patch b/configs/platform-v7a/patches/barebox-2022.04.0/0005-ARM-rpi-don-t-warn-about-lack-of-videocore-fdt.patch
new file mode 100644
index 0000000..0586085
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2022.04.0/0005-ARM-rpi-don-t-warn-about-lack-of-videocore-fdt.patch
@@ -0,0 +1,37 @@
+From 675a65a3b42ef74ae37638f780912139a7c31cc6 Mon Sep 17 00:00:00 2001
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Sat, 23 Apr 2022 12:54:55 +0200
+Subject: [PATCH 5/5] ARM: rpi: don't warn about lack of videocore fdt
+
+When barebox is booted as generic second stage DT image, it will throw
+an annoying but harmless error that the videocore FDT saved in PBL has
+invalid magic. This is expected because the generic code doesn't store
+the device tree, instead it passes it to barebox proper to probe from.
+Storing the DT in /vd.dtb would thus just be duplication.
+
+Remove the error message in this case.
+
+Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
+---
+ arch/arm/boards/raspberry-pi/rpi-common.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/arch/arm/boards/raspberry-pi/rpi-common.c b/arch/arm/boards/raspberry-pi/rpi-common.c
+index 9aa150de5680..82da4d646482 100644
+--- a/arch/arm/boards/raspberry-pi/rpi-common.c
++++ b/arch/arm/boards/raspberry-pi/rpi-common.c
+@@ -328,10 +328,8 @@ static void rpi_vc_fdt(void)
+ return;
+ }
+
+- if (magic != FDT_MAGIC) {
+- pr_err("videocore fdt saved in pbl has invalid magic\n");
++ if (magic != FDT_MAGIC)
+ return;
+- }
+
+ size = be32_to_cpu(oftree->totalsize);
+ if (write_file("/vc.dtb", saved_vc_fdt, size)) {
+--
+2.30.2
+
diff --git a/configs/platform-v7a/patches/barebox-2022.04.0/series b/configs/platform-v7a/patches/barebox-2022.04.0/series
index 8947868..be48ede 100644
--- a/configs/platform-v7a/patches/barebox-2022.04.0/series
+++ b/configs/platform-v7a/patches/barebox-2022.04.0/series
@@ -1,3 +1,5 @@
0001-ARM-asm-fix-miscompilation-of-32-bit-ENTRY_FUNCTION_.patch
0002-clk-add-BCM2835-auxiliary-peripheral-clock-driver.patch
0003-clocksource-assign-non-zero-priorities-to-all-clocks.patch
+0004-ARM-cpu-board-dt-2nd-call-arm_cpu_lowlevel_init.patch
+0005-ARM-rpi-don-t-warn-about-lack-of-videocore-fdt.patch
diff --git a/configs/platform-v7a/platformconfig b/configs/platform-v7a/platformconfig
index 3a2a1f8..a399f60 100644
--- a/configs/platform-v7a/platformconfig
+++ b/configs/platform-v7a/platformconfig
@@ -281,8 +281,6 @@ PTXCONF_IMAGE_ROOT_TGZ_LABEL=""
# PTXCONF_IMAGE_ROOT_UBI is not set
# PTXCONF_IMAGE_ROOT_UBIFS is not set
PTXCONF_IMAGE_RPI2=y
-PTXCONF_IMAGE_RPI3=y
-PTXCONF_IMAGE_RPICM3=y
PTXCONF_IMAGE_SABRELITE=y
PTXCONF_IMAGE_SAMA5D27_GIANTBOARD=y
PTXCONF_IMAGE_SAMA5D27_SOM1_EK=y
diff --git a/configs/platform-v7a/platforms/barebox-rpi2.in b/configs/platform-v7a/platforms/barebox-rpi2.in
index d62acd3..82ef1c5 100644
--- a/configs/platform-v7a/platforms/barebox-rpi2.in
+++ b/configs/platform-v7a/platforms/barebox-rpi2.in
@@ -2,7 +2,7 @@
menuconfig BAREBOX_RPI2
tristate
- prompt "Barebox (rpi2)"
+ prompt "Barebox (rpi2/3/CM3)"
select BAREBOX_COMMON
help
- Raspberry Pi 2 support for barebox.
+ Raspberry Pi 2, 3, CM3 support for barebox.
diff --git a/configs/platform-v7a/platforms/image-rpi2.in b/configs/platform-v7a/platforms/image-rpi2.in
index c1ad7c9..cf14b80 100644
--- a/configs/platform-v7a/platforms/image-rpi2.in
+++ b/configs/platform-v7a/platforms/image-rpi2.in
@@ -7,6 +7,6 @@ config IMAGE_RPI2
select HOST_MTOOLS
select IMAGE_ROOT_EXT
select BAREBOX_RPI2
- prompt "Generate images/rpi2.hdimg"
+ prompt "Generate images/rpi.hdimg"
help
- SD card image for the Raspberry Pi 2
+ SD card image for the Raspberry Pi 2, 3 and CM3
diff --git a/configs/platform-v7a/platforms/image-rpi3.in b/configs/platform-v7a/platforms/image-rpi3.in
deleted file mode 100644
index 022de98..0000000
--- a/configs/platform-v7a/platforms/image-rpi3.in
+++ /dev/null
@@ -1,12 +0,0 @@
-## SECTION=image
-
-config IMAGE_RPI3
- tristate
- select HOST_GENIMAGE
- select HOST_DOSFSTOOLS
- select HOST_MTOOLS
- select IMAGE_ROOT_EXT
- select BAREBOX_RPI2
- prompt "Generate images/rpi3.hdimg"
- help
- SD card image for the Raspberry Pi 3
diff --git a/configs/platform-v7a/platforms/image-rpicm3.in b/configs/platform-v7a/platforms/image-rpicm3.in
deleted file mode 100644
index 5cecf9a..0000000
--- a/configs/platform-v7a/platforms/image-rpicm3.in
+++ /dev/null
@@ -1,12 +0,0 @@
-## SECTION=image
-
-config IMAGE_RPICM3
- tristate
- select HOST_GENIMAGE
- select HOST_DOSFSTOOLS
- select HOST_MTOOLS
- select IMAGE_ROOT_EXT
- select BAREBOX_RPI2
- prompt "Generate images/rpiCM3.hdimg"
- help
- SD card image for the Raspberry Pi Compute Module 3
diff --git a/configs/platform-v7a/rpi-firmware/config.txt b/configs/platform-v7a/rpi-firmware/config.txt
index 75093b1..d6ecc1e 100644
--- a/configs/platform-v7a/rpi-firmware/config.txt
+++ b/configs/platform-v7a/rpi-firmware/config.txt
@@ -1,3 +1,5 @@
+# use kernel upstream devicetree names and pass it to barebox
+upstream_kernel=1
# Enable the UART (miniuart for RPI3, PL011 for RPI2)
enable_uart=1
# Set barebox as third state bootloader
diff --git a/configs/platform-v7a/rules/barebox-rpi2.make b/configs/platform-v7a/rules/barebox-rpi2.make
index 17f7a33..f1dff40 100644
--- a/configs/platform-v7a/rules/barebox-rpi2.make
+++ b/configs/platform-v7a/rules/barebox-rpi2.make
@@ -46,8 +46,7 @@ BAREBOX_RPI2_CONF_OPT := \
BAREBOX_RPI2_MAKE_OPT := $(BAREBOX_RPI2_CONF_OPT)
-BAREBOX_RPI2_IMAGES := images/barebox-raspberry-pi-2.img images/barebox-raspberry-pi-3.img images/barebox-raspberry-pi-cm3.img
-BAREBOX_RPI2_IMAGES := $(addprefix $(BAREBOX_RPI2_BUILD_DIR)/,$(BAREBOX_RPI2_IMAGES))
+BAREBOX_RPI2_DTB_DIR := $(BAREBOX_RPI2_BUILD_DIR)/arch/arm/dts
ifdef PTXCONF_BAREBOX_RPI2
$(BAREBOX_RPI2_CONFIG):
@@ -82,9 +81,11 @@ $(STATEDIR)/barebox-rpi2.install:
$(STATEDIR)/barebox-rpi2.targetinstall:
@$(call targetinfo)
- @$(foreach image, $(BAREBOX_RPI2_IMAGES), \
+ @$(foreach dtb, $(wildcard $(BAREBOX_RPI2_DTB_DIR)/*.dtb), \
install -m 644 \
- $(image) $(IMAGEDIR)/$(notdir $(image))$(ptx/nl))
+ $(dtb) $(IMAGEDIR)/barebox-$(notdir $(dtb))$(ptx/nl))
+ @install -m 644 $(BAREBOX_RPI2_BUILD_DIR)/images/barebox-dt-2nd.img \
+ $(IMAGEDIR)/barebox-dt-2nd-rpi.img
@$(call touch)
# ----------------------------------------------------------------------------
@@ -94,8 +95,9 @@ $(STATEDIR)/barebox-rpi2.targetinstall:
$(STATEDIR)/barebox-rpi2.clean:
@$(call targetinfo)
@$(call clean_pkg, BAREBOX_RPI2)
- @$(foreach image, $(BAREBOX_RPI2_IMAGES), \
- rm -fv $(IMAGEDIR)/$(notdir $(image))$(ptx/nl))
+ @$(foreach dtb, $(wildcard $(BAREBOX_RPI2_DTB_DIR)/*.dtb), \
+ rm -fv $(IMAGEDIR)/barebox-$(notdir $(dtb))$(ptx/nl))
+ @rm -fv $(IMAGEDIR)/barebox-dt-2nd-rpi.img
# ----------------------------------------------------------------------------
# oldconfig / menuconfig
diff --git a/configs/platform-v7a/rules/image-rpi2.make b/configs/platform-v7a/rules/image-rpi2.make
index 8e192e4..db5cbc1 100644
--- a/configs/platform-v7a/rules/image-rpi2.make
+++ b/configs/platform-v7a/rules/image-rpi2.make
@@ -16,7 +16,7 @@ IMAGE_PACKAGES-$(PTXCONF_IMAGE_RPI2) += image-rpi2
#
IMAGE_RPI2 := image-rpi2
IMAGE_RPI2_DIR := $(BUILDDIR)/$(IMAGE_RPI2)
-IMAGE_RPI2_IMAGE := $(IMAGEDIR)/rpi2.hdimg
+IMAGE_RPI2_IMAGE := $(IMAGEDIR)/rpi.hdimg
IMAGE_RPI2_FILES := $(IMAGEDIR)/root.tgz
IMAGE_RPI2_CONFIG := rpi2.config
IMAGE_RPI2_DATA_DIR := $(call ptx/in-platformconfigdir, rpi-firmware)
diff --git a/configs/platform-v7a/rules/image-rpi3.make b/configs/platform-v7a/rules/image-rpi3.make
deleted file mode 100644
index 5c56c3a..0000000
--- a/configs/platform-v7a/rules/image-rpi3.make
+++ /dev/null
@@ -1,46 +0,0 @@
-# -*-makefile-*-
-#
-# Copyright (C) 2017 by Sascha Hauer <s.hauer@pengutronix.de>
-#
-# For further information about the PTXdist project and license conditions
-# see the README file.
-#
-
-#
-# We provide this package
-#
-IMAGE_PACKAGES-$(PTXCONF_IMAGE_RPI3) += image-rpi3
-
-#
-# Paths and names
-#
-IMAGE_RPI3 := image-rpi3
-IMAGE_RPI3_DIR := $(BUILDDIR)/$(IMAGE_RPI3)
-IMAGE_RPI3_IMAGE := $(IMAGEDIR)/rpi3.hdimg
-IMAGE_RPI3_FILES := $(IMAGEDIR)/root.tgz
-IMAGE_RPI3_CONFIG := rpi3.config
-IMAGE_RPI3_DATA_DIR := $(call ptx/in-platformconfigdir, rpi-firmware)
-IMAGE_RPI3_DATA := \
- $(wildcard $(IMAGE_RPI3_DATA_DIR)/*.bin) \
- $(wildcard $(IMAGE_RPI3_DATA_DIR)/*.elf) \
- $(wildcard $(IMAGE_RPI3_DATA_DIR)/*.dat) \
- $(wildcard $(IMAGE_RPI3_DATA_DIR)/*.dtb) \
- $(wildcard $(IMAGE_RPI3_DATA_DIR)/config.txt)
-
-# ----------------------------------------------------------------------------
-# Image
-# ----------------------------------------------------------------------------
-
-define squote_and_comma
-$(subst $(ptx/def/space),$(comma) ,$(addsuffix $(ptx/def/squote),$(addprefix $(ptx/def/squote),$(1))))
-endef
-
-IMAGE_RPI3_ENV := \
- FIRMWARE_RPI3="$(call squote_and_comma,$(IMAGE_RPI3_DATA))"
-
-$(IMAGE_RPI3_IMAGE):
- @$(call targetinfo)
- @$(call image/genimage, IMAGE_RPI3)
- @$(call finish)
-
-# vim: syntax=make
diff --git a/configs/platform-v7a/rules/image-rpicm3.make b/configs/platform-v7a/rules/image-rpicm3.make
deleted file mode 100644
index 81cdd26..0000000
--- a/configs/platform-v7a/rules/image-rpicm3.make
+++ /dev/null
@@ -1,46 +0,0 @@
-# -*-makefile-*-
-#
-# Copyright (C) 2017 by Sascha Hauer <s.hauer@pengutronix.de>
-#
-# For further information about the PTXdist project and license conditions
-# see the README file.
-#
-
-#
-# We provide this package
-#
-IMAGE_PACKAGES-$(PTXCONF_IMAGE_RPICM3) += image-rpicm3
-
-#
-# Paths and names
-#
-IMAGE_RPICM3 := image-rpicm3
-IMAGE_RPICM3_DIR := $(BUILDDIR)/$(IMAGE_RPICM3)
-IMAGE_RPICM3_IMAGE := $(IMAGEDIR)/rpicm3.hdimg
-IMAGE_RPICM3_FILES := $(IMAGEDIR)/root.tgz
-IMAGE_RPICM3_CONFIG := rpicm3.config
-IMAGE_RPICM3_DATA_DIR := $(call ptx/in-platformconfigdir, rpi-firmware)
-IMAGE_RPICM3_DATA := \
- $(wildcard $(IMAGE_RPICM3_DATA_DIR)/*.bin) \
- $(wildcard $(IMAGE_RPICM3_DATA_DIR)/*.elf) \
- $(wildcard $(IMAGE_RPICM3_DATA_DIR)/*.dat) \
- $(wildcard $(IMAGE_RPICM3_DATA_DIR)/*.dtb) \
- $(wildcard $(IMAGE_RPICM3_DATA_DIR)/config.txt)
-
-# ----------------------------------------------------------------------------
-# Image
-# ----------------------------------------------------------------------------
-
-define squote_and_comma
-$(subst $(ptx/def/space),$(comma) ,$(addsuffix $(ptx/def/squote),$(addprefix $(ptx/def/squote),$(1))))
-endef
-
-IMAGE_RPICM3_ENV := \
- FIRMWARE_RPI3="$(call squote_and_comma,$(IMAGE_RPICM3_DATA))"
-
-$(IMAGE_RPICM3_IMAGE):
- @$(call targetinfo)
- @$(call image/genimage, IMAGE_RPICM3)
- @$(call finish)
-
-# vim: syntax=make