diff options
author | Oleksij Rempel <o.rempel@pengutronix.de> | 2022-04-26 10:38:21 +0200 |
---|---|---|
committer | Robert Schwebel <r.schwebel@pengutronix.de> | 2022-04-26 15:23:37 +0200 |
commit | 17e0620b641f671a91a4e439e2789a87b9124d41 (patch) | |
tree | eed77846af3cf990a4e20630500d35a27437ef4a /configs | |
parent | f586445a24ac00dd841deb6b2d8e365a99d9f870 (diff) | |
download | DistroKit-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')
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 |