diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0001-configs-rpi4-Add-defconfigs-for-rpi4-32-64.patch b/recipes-bsp/u-boot/u-boot-2019.07/0001-configs-rpi4-Add-defconfigs-for-rpi4-32-64.patch new file mode 100644 index 0000000..2fe7b9e --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0001-configs-rpi4-Add-defconfigs-for-rpi4-32-64.patch @@ -0,0 +1,111 @@ +From 2a59e8a0d574c5f878e7cf640dd2337ac5721372 Mon Sep 17 00:00:00 2001 +From: Andrei Gherzan +Date: Wed, 17 Jul 2019 15:32:11 +0100 +Subject: [PATCH 01/12] configs: rpi4: Add defconfigs for rpi4 (32/64) + +Signed-off-by: Andrei Gherzan +Upstream-status: Pending +--- + configs/rpi_4_32b_defconfig | 41 +++++++++++++++++++++++++++++++++++++ + configs/rpi_4_defconfig | 41 +++++++++++++++++++++++++++++++++++++ + 2 files changed, 82 insertions(+) + create mode 100644 configs/rpi_4_32b_defconfig + create mode 100644 configs/rpi_4_defconfig + +diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig +new file mode 100644 +index 0000000000..3ee33174bc +--- /dev/null ++++ b/configs/rpi_4_32b_defconfig +@@ -0,0 +1,41 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_BCM283X=y ++CONFIG_SYS_TEXT_BASE=0x00008000 ++CONFIG_TARGET_RPI_4_32B=y ++CONFIG_SYS_MALLOC_F_LEN=0x2000 ++CONFIG_DISTRO_DEFAULTS=y ++CONFIG_NR_DRAM_BANKS=1 ++# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set ++CONFIG_OF_BOARD_SETUP=y ++CONFIG_MISC_INIT_R=y ++# CONFIG_DISPLAY_CPUINFO is not set ++# CONFIG_DISPLAY_BOARDINFO is not set ++CONFIG_SYS_PROMPT="U-Boot> " ++# CONFIG_CMD_FLASH is not set ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_USB=y ++CONFIG_CMD_FS_UUID=y ++CONFIG_OF_EMBED=y ++CONFIG_DEFAULT_DEVICE_TREE="bcm2838-rpi-4-b" ++CONFIG_ENV_FAT_INTERFACE="mmc" ++CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" ++CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++CONFIG_DM_KEYBOARD=y ++CONFIG_DM_MMC=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_BCM2835=y ++CONFIG_PHYLIB=y ++CONFIG_DM_ETH=y ++CONFIG_PINCTRL=y ++# CONFIG_PINCTRL_GENERIC is not set ++# CONFIG_REQUIRE_SERIAL_CONSOLE is not set ++CONFIG_USB=y ++CONFIG_DM_USB=y ++CONFIG_USB_KEYBOARD=y ++CONFIG_USB_HOST_ETHER=y ++CONFIG_DM_VIDEO=y ++CONFIG_SYS_WHITE_ON_BLACK=y ++CONFIG_CONSOLE_SCROLL_LINES=10 ++CONFIG_PHYS_TO_BUS=y ++CONFIG_OF_LIBFDT_OVERLAY=y +diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig +new file mode 100644 +index 0000000000..b91b0869e5 +--- /dev/null ++++ b/configs/rpi_4_defconfig +@@ -0,0 +1,41 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_BCM283X=y ++CONFIG_SYS_TEXT_BASE=0x00080000 ++CONFIG_TARGET_RPI_4=y ++CONFIG_SYS_MALLOC_F_LEN=0x2000 ++CONFIG_DISTRO_DEFAULTS=y ++CONFIG_NR_DRAM_BANKS=1 ++# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set ++CONFIG_OF_BOARD_SETUP=y ++CONFIG_MISC_INIT_R=y ++# CONFIG_DISPLAY_CPUINFO is not set ++# CONFIG_DISPLAY_BOARDINFO is not set ++CONFIG_SYS_PROMPT="U-Boot> " ++# CONFIG_CMD_FLASH is not set ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_USB=y ++CONFIG_CMD_FS_UUID=y ++CONFIG_OF_EMBED=y ++CONFIG_DEFAULT_DEVICE_TREE="bcm2838-rpi-4-b" ++CONFIG_ENV_FAT_INTERFACE="mmc" ++CONFIG_ENV_FAT_DEVICE_AND_PART="0:1" ++CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++CONFIG_DM_KEYBOARD=y ++CONFIG_DM_MMC=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_BCM2835=y ++CONFIG_PHYLIB=y ++CONFIG_DM_ETH=y ++CONFIG_PINCTRL=y ++# CONFIG_PINCTRL_GENERIC is not set ++# CONFIG_REQUIRE_SERIAL_CONSOLE is not set ++CONFIG_USB=y ++CONFIG_DM_USB=y ++CONFIG_USB_KEYBOARD=y ++CONFIG_USB_HOST_ETHER=y ++CONFIG_DM_VIDEO=y ++CONFIG_SYS_WHITE_ON_BLACK=y ++CONFIG_CONSOLE_SCROLL_LINES=10 ++CONFIG_PHYS_TO_BUS=y ++CONFIG_OF_LIBFDT_OVERLAY=y +-- +2.22.0 + diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0002-dts-Create-a-dtsi-for-BCM2835-6-7-specific-configura.patch b/recipes-bsp/u-boot/u-boot-2019.07/0002-dts-Create-a-dtsi-for-BCM2835-6-7-specific-configura.patch new file mode 100644 index 0000000..eda8b56 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0002-dts-Create-a-dtsi-for-BCM2835-6-7-specific-configura.patch @@ -0,0 +1,209 @@ +From 9ef5ac66aaa8e52d1ed3a6fd6390d7d8d91a537d Mon Sep 17 00:00:00 2001 +From: Andrei Gherzan +Date: Wed, 17 Jul 2019 15:32:34 +0100 +Subject: [PATCH 02/12] dts: Create a dtsi for BCM2835/6/7 specific + configuration + +This follows a similar change in kernel[1]. The change moves +configuration that was not applicable for all bcm2835/6/7/8 out of +bcm283x.dtsi. The new file is bcm2835-common.dtsi and contains +conifguration that is common for bcm2835/6/7 (not bcm2838). + +[1] https://github.com/raspberrypi/linux/commit/769a7330aa5bebcc98b1ff12ecb767db4e5c644d#diff-5979fba23a5bab2cf66dde09db872dfc + +Signed-off-by: Andrei Gherzan +Upstream-status: Pending +--- + arch/arm/dts/bcm2835-common.dtsi | 53 ++++++++++++++++++++++++++++++++ + arch/arm/dts/bcm2835.dtsi | 1 + + arch/arm/dts/bcm2836.dtsi | 1 + + arch/arm/dts/bcm2837.dtsi | 1 + + arch/arm/dts/bcm283x.dtsi | 45 +-------------------------- + 5 files changed, 57 insertions(+), 44 deletions(-) + create mode 100644 arch/arm/dts/bcm2835-common.dtsi + +diff --git a/arch/arm/dts/bcm2835-common.dtsi b/arch/arm/dts/bcm2835-common.dtsi +new file mode 100644 +index 0000000000..17771730a3 +--- /dev/null ++++ b/arch/arm/dts/bcm2835-common.dtsi +@@ -0,0 +1,53 @@ ++// SPDX-License-Identifier: GPL-2.0 ++ ++/* This include file covers the common peripherals and configuration between ++ * bcm2835, bcm2836 and bcm2837 implementations. ++ */ ++ ++/ { ++ soc { ++ timer@7e003000 { ++ compatible = "brcm,bcm2835-system-timer"; ++ reg = <0x7e003000 0x1000>; ++ interrupts = <1 0>, <1 1>, <1 2>, <1 3>; ++ /* This could be a reference to BCM2835_CLOCK_TIMER, ++ * but we don't have the driver using the common clock ++ * support yet. ++ */ ++ clock-frequency = <1000000>; ++ }; ++ ++ intc: interrupt-controller@7e00b200 { ++ compatible = "brcm,bcm2835-armctrl-ic"; ++ reg = <0x7e00b200 0x200>; ++ interrupt-controller; ++ #interrupt-cells = <2>; ++ }; ++ ++ thermal: thermal@7e212000 { ++ compatible = "brcm,bcm2835-thermal"; ++ reg = <0x7e212000 0x8>; ++ clocks = <&clocks BCM2835_CLOCK_TSENS>; ++ #thermal-sensor-cells = <0>; ++ status = "disabled"; ++ }; ++ ++ v3d: v3d@7ec00000 { ++ compatible = "brcm,bcm2835-v3d"; ++ reg = <0x7ec00000 0x1000>; ++ interrupts = <1 10>; ++ }; ++ }; ++}; ++ ++&gpio { ++ i2c_slave_gpio18: i2c_slave_gpio18 { ++ brcm,pins = <18 19 20 21>; ++ brcm,function = ; ++ }; ++ ++ jtag_gpio4: jtag_gpio4 { ++ brcm,pins = <4 5 6 12 13>; ++ brcm,function = ; ++ }; ++}; +diff --git a/arch/arm/dts/bcm2835.dtsi b/arch/arm/dts/bcm2835.dtsi +index a5c3824c80..53bf4579cc 100644 +--- a/arch/arm/dts/bcm2835.dtsi ++++ b/arch/arm/dts/bcm2835.dtsi +@@ -1,5 +1,6 @@ + // SPDX-License-Identifier: GPL-2.0 + #include "bcm283x.dtsi" ++#include "bcm2835-common.dtsi" + + / { + compatible = "brcm,bcm2835"; +diff --git a/arch/arm/dts/bcm2836.dtsi b/arch/arm/dts/bcm2836.dtsi +index c933e84138..82d6c4662a 100644 +--- a/arch/arm/dts/bcm2836.dtsi ++++ b/arch/arm/dts/bcm2836.dtsi +@@ -1,5 +1,6 @@ + // SPDX-License-Identifier: GPL-2.0 + #include "bcm283x.dtsi" ++#include "bcm2835-common.dtsi" + + / { + compatible = "brcm,bcm2836"; +diff --git a/arch/arm/dts/bcm2837.dtsi b/arch/arm/dts/bcm2837.dtsi +index beb6c502da..9e95fee78e 100644 +--- a/arch/arm/dts/bcm2837.dtsi ++++ b/arch/arm/dts/bcm2837.dtsi +@@ -1,4 +1,5 @@ + #include "bcm283x.dtsi" ++#include "bcm2835-common.dtsi" + + / { + compatible = "brcm,bcm2837"; +diff --git a/arch/arm/dts/bcm283x.dtsi b/arch/arm/dts/bcm283x.dtsi +index 9777644c6c..a024727e4d 100644 +--- a/arch/arm/dts/bcm283x.dtsi ++++ b/arch/arm/dts/bcm283x.dtsi +@@ -56,17 +56,6 @@ + #address-cells = <1>; + #size-cells = <1>; + +- timer@7e003000 { +- compatible = "brcm,bcm2835-system-timer"; +- reg = <0x7e003000 0x1000>; +- interrupts = <1 0>, <1 1>, <1 2>, <1 3>; +- /* This could be a reference to BCM2835_CLOCK_TIMER, +- * but we don't have the driver using the common clock +- * support yet. +- */ +- clock-frequency = <1000000>; +- }; +- + txp@7e004000 { + compatible = "brcm,bcm2835-txp"; + reg = <0x7e004000 0x20>; +@@ -114,13 +103,6 @@ + brcm,dma-channel-mask = <0x7f35>; + }; + +- intc: interrupt-controller@7e00b200 { +- compatible = "brcm,bcm2835-armctrl-ic"; +- reg = <0x7e00b200 0x200>; +- interrupt-controller; +- #interrupt-cells = <2>; +- }; +- + pm: watchdog@7e100000 { + compatible = "brcm,bcm2835-pm", "brcm,bcm2835-pm-wdt"; + #power-domain-cells = <1>; +@@ -184,8 +166,7 @@ + interrupt-controller; + #interrupt-cells = <2>; + +- /* Defines pin muxing groups according to +- * BCM2835-ARM-Peripherals.pdf page 102. ++ /* Defines common pin muxing groups + * + * While each pin can have its mux selected + * for various functions individually, some +@@ -263,15 +244,6 @@ + brcm,pins = <44 45>; + brcm,function = ; + }; +- i2c_slave_gpio18: i2c_slave_gpio18 { +- brcm,pins = <18 19 20 21>; +- brcm,function = ; +- }; +- +- jtag_gpio4: jtag_gpio4 { +- brcm,pins = <4 5 6 12 13>; +- brcm,function = ; +- }; + jtag_gpio22: jtag_gpio22 { + brcm,pins = <22 23 24 25 26 27>; + brcm,function = ; +@@ -488,14 +460,6 @@ + + }; + +- thermal: thermal@7e212000 { +- compatible = "brcm,bcm2835-thermal"; +- reg = <0x7e212000 0x8>; +- clocks = <&clocks BCM2835_CLOCK_TSENS>; +- #thermal-sensor-cells = <0>; +- status = "disabled"; +- }; +- + aux: aux@7e215000 { + compatible = "brcm,bcm2835-aux"; + #clock-cells = <1>; +@@ -635,13 +599,6 @@ + phy-names = "usb2-phy"; + }; + +- v3d: v3d@7ec00000 { +- compatible = "brcm,bcm2835-v3d"; +- reg = <0x7ec00000 0x1000>; +- interrupts = <1 10>; +- power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>; +- }; +- + vc4: gpu { + compatible = "brcm,bcm2835-vc4"; + }; +-- +2.22.0 + diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0003-dts-Add-initial-support-for-bcm2838.patch b/recipes-bsp/u-boot/u-boot-2019.07/0003-dts-Add-initial-support-for-bcm2838.patch new file mode 100644 index 0000000..b6b8ca7 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0003-dts-Add-initial-support-for-bcm2838.patch @@ -0,0 +1,333 @@ +From 9a6dca219480423f6c9dd5804e5890d434cc11b8 Mon Sep 17 00:00:00 2001 +From: Andrei Gherzan +Date: Wed, 17 Jul 2019 15:32:46 +0100 +Subject: [PATCH 03/12] dts: Add initial support for bcm2838 + +Signed-off-by: Andrei Gherzan +Upstream-status: Pending +--- + arch/arm/dts/Makefile | 3 +- + arch/arm/dts/bcm2838-rpi-4-b.dts | 52 +++++++ + arch/arm/dts/bcm2838.dtsi | 237 +++++++++++++++++++++++++++++++ + 3 files changed, 291 insertions(+), 1 deletion(-) + create mode 100644 arch/arm/dts/bcm2838-rpi-4-b.dts + create mode 100644 arch/arm/dts/bcm2838.dtsi + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 20dbc2ff84..fdb55f7fde 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -749,7 +749,8 @@ dtb-$(CONFIG_ARCH_BCM283X) += \ + bcm2837-rpi-3-a-plus.dtb \ + bcm2837-rpi-3-b.dtb \ + bcm2837-rpi-3-b-plus.dtb \ +- bcm2837-rpi-cm3-io3.dtb ++ bcm2837-rpi-cm3-io3.dtb \ ++ bcm2838-rpi-4-b.dtb + + dtb-$(CONFIG_ARCH_BCM63158) += \ + bcm963158.dtb +diff --git a/arch/arm/dts/bcm2838-rpi-4-b.dts b/arch/arm/dts/bcm2838-rpi-4-b.dts +new file mode 100644 +index 0000000000..fa7fcfed9d +--- /dev/null ++++ b/arch/arm/dts/bcm2838-rpi-4-b.dts +@@ -0,0 +1,52 @@ ++/dts-v1/; ++#include "bcm2838.dtsi" ++ ++/ { ++ compatible = "raspberrypi,4-model-b","brcm,bcm2838","brcm,bcm2837"; ++ model = "Raspberry Pi 4 Model B"; ++ ++ memory { ++ reg = <0 0 0x0>; ++ }; ++ ++ leds { ++ act { ++ gpios = <&gpio 47 0>; ++ }; ++ }; ++}; ++ ++/* uart0 communicates with the BT module */ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_gpio32 &gpclk2_gpio43>; ++ status = "okay"; ++}; ++ ++/* uart1 is mapped to the pin header */ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>; ++ status = "okay"; ++}; ++ ++&sdhci { ++ status = "disabled"; ++}; ++ ++&sdhost { ++ status = "disabled"; ++}; ++ ++&emmc2 { ++ compatible = "brcm,bcm2711-emmc2"; ++ status = "okay"; ++}; ++ ++&gpio { ++ uart1_pins: uart1_pins { ++ brcm,pins; ++ brcm,function; ++ brcm,pull; ++ }; ++}; +diff --git a/arch/arm/dts/bcm2838.dtsi b/arch/arm/dts/bcm2838.dtsi +new file mode 100644 +index 0000000000..19b2d7b905 +--- /dev/null ++++ b/arch/arm/dts/bcm2838.dtsi +@@ -0,0 +1,237 @@ ++#include "bcm283x.dtsi" ++#include ++#include ++ ++/ { ++ compatible = "brcm,bcm2838"; ++ ++ #address-cells = <2>; ++ #size-cells = <1>; ++ ++ interrupt-parent = <&gic>; ++ ++ soc { ++ ranges = <0x7e000000 0x0 0xfe000000 0x01800000>, ++ <0x7c000000 0x0 0xfc000000 0x02000000>, ++ <0x40000000 0x0 0xff800000 0x00800000>; ++ dma-ranges = <0xc0000000 0x0 0x00000000 0x3c000000>; ++ ++ gic: gic400@40041000 { ++ interrupt-controller; ++ #interrupt-cells = <3>; ++ compatible = "arm,gic-400"; ++ reg = <0x40041000 0x1000>, ++ <0x40042000 0x2000>, ++ <0x40044000 0x2000>, ++ <0x40046000 0x2000>; ++ }; ++ ++ thermal: thermal@7d5d2200 { ++ compatible = "brcm,avs-tmon-bcm2838"; ++ reg = <0x7d5d2200 0x2c>; ++ interrupts = ; ++ interrupt-names = "tmon"; ++ clocks = <&clocks BCM2835_CLOCK_TSENS>; ++ #thermal-sensor-cells = <0>; ++ status = "okay"; ++ }; ++ ++ spi@7e204000 { ++ reg = <0x7e204000 0x0200>; ++ interrupts = ; ++ }; ++ ++ pixelvalve@7e206000 { ++ interrupts = ; ++ }; ++ ++ pixelvalve@7e207000 { ++ interrupts = ; ++ }; ++ ++ hvs@7e400000 { ++ interrupts = ; ++ }; ++ ++ emmc2: emmc2@7e340000 { ++ compatible = "brcm,bcm2711-emmc2"; ++ status = "okay"; ++ interrupts = ; ++ clocks = <&clocks BCM2838_CLOCK_EMMC2>; ++ reg = <0x7e340000 0x100>; ++ }; ++ ++ pixelvalve@7e807000 { ++ interrupts = ; ++ }; ++ ++ }; ++ ++ arm-pmu { ++ /* ++ * N.B. the A72 PMU support only exists in arch/arm64, hence ++ * the fallback to the A53 version. ++ */ ++ compatible = "arm,cortex-a72-pmu", "arm,cortex-a53-pmu"; ++ interrupts = , ++ , ++ , ++ ; ++ }; ++ ++ timer { ++ compatible = "arm,armv7-timer"; ++ interrupts = , ++ , ++ , ++ ; ++ arm,cpu-registers-not-fw-configured; ++ always-on; ++ }; ++ ++ cpus: cpus { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit ++ ++ cpu0: cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a72"; ++ reg = <0>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000d8>; ++ }; ++ ++ cpu1: cpu@1 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a72"; ++ reg = <1>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000e0>; ++ }; ++ ++ cpu2: cpu@2 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a72"; ++ reg = <2>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000e8>; ++ }; ++ ++ cpu3: cpu@3 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a72"; ++ reg = <3>; ++ enable-method = "spin-table"; ++ cpu-release-addr = <0x0 0x000000f0>; ++ }; ++ }; ++}; ++ ++&clk_osc { ++ clock-frequency = <54000000>; ++}; ++ ++&clocks { ++ compatible = "brcm,bcm2838-cprman"; ++}; ++ ++&cpu_thermal { ++ coefficients = <(-487) 410040>; ++}; ++ ++&dsi0 { ++ interrupts = ; ++}; ++ ++&dsi1 { ++ interrupts = ; ++}; ++ ++&gpio { ++ compatible = "brcm,bcm2838-gpio", "brcm,bcm2835-gpio"; ++ interrupts = , ++ , ++ , ++ ; ++}; ++ ++&vec { ++ interrupts = ; ++}; ++ ++&usb { ++ interrupts = ; ++}; ++ ++&hdmi { ++ interrupts = , ++ ; ++}; ++ ++&uart1 { ++ interrupts = ; ++}; ++ ++&spi1 { ++ interrupts = ; ++}; ++ ++&spi2 { ++ interrupts = ; ++}; ++ ++&i2c0 { ++ interrupts = ; ++}; ++ ++&i2c1 { ++ interrupts = ; ++}; ++ ++&i2c2 { ++ interrupts = ; ++}; ++ ++&mailbox { ++ interrupts = ; ++}; ++ ++&sdhost { ++ interrupts = ; ++}; ++ ++&uart0 { ++ interrupts = ; ++}; ++ ++&dma { ++ reg = <0x7e007000 0xb00>; ++ interrupts = , ++ , ++ , ++ , ++ , ++ , ++ , ++ , /* dmalite 7 */ ++ , /* dmalite 8 */ ++ , /* dmalite 9 */ ++ ; /* dmalite 10 */ ++ interrupt-names = "dma0", ++ "dma1", ++ "dma2", ++ "dma3", ++ "dma4", ++ "dma5", ++ "dma6", ++ "dma7", ++ "dma8", ++ "dma9", ++ "dma10"; ++ brcm,dma-channel-mask = <0x07f5>; ++}; +-- +2.22.0 + diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0004-arm-mach-bcm283x-Define-configs-for-RaspberryPi-4.patch b/recipes-bsp/u-boot/u-boot-2019.07/0004-arm-mach-bcm283x-Define-configs-for-RaspberryPi-4.patch new file mode 100644 index 0000000..ce2a664 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0004-arm-mach-bcm283x-Define-configs-for-RaspberryPi-4.patch @@ -0,0 +1,67 @@ +From a343e3755ff8b85f453800fe165624687e4d5879 Mon Sep 17 00:00:00 2001 +From: Andrei Gherzan +Date: Wed, 17 Jul 2019 15:33:01 +0100 +Subject: [PATCH 04/12] arm: mach-bcm283x: Define configs for RaspberryPi 4 + +Signed-off-by: Andrei Gherzan +Upstream-status: Pending +--- + arch/arm/mach-bcm283x/Kconfig | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig +index 3eb5a9a897..d5069fe688 100644 +--- a/arch/arm/mach-bcm283x/Kconfig ++++ b/arch/arm/mach-bcm283x/Kconfig +@@ -26,6 +26,23 @@ config BCM2837_64B + select BCM2837 + select ARM64 + ++config BCM2838 ++ bool "Broadcom BCM2838 SoC support" ++ depends on ARCH_BCM283X ++ ++config BCM2838_32B ++ bool "Broadcom BCM2838 SoC 32-bit support" ++ depends on ARCH_BCM283X ++ select BCM2838 ++ select ARMV7_LPAE ++ select CPU_V7A ++ ++config BCM2838_64B ++ bool "Broadcom BCM2838 SoC 64-bit support" ++ depends on ARCH_BCM283X ++ select BCM2838 ++ select ARM64 ++ + menu "Broadcom BCM283X family" + depends on ARCH_BCM283X + +@@ -127,6 +144,24 @@ config TARGET_RPI_3 + This option creates a build targeting the ARMv8/AArch64 ISA. + select BCM2837_64B + ++config TARGET_RPI_4 ++ bool "Raspberry Pi 4 64-bit build" ++ help ++ Support for all BCM2838-based Raspberry Pi variants, such as ++ the RPi 4 model B, in AArch64 (64-bit) mode. ++ ++ This option creates a build targeting the ARMv8/AArch64 ISA. ++ select BCM2838_64B ++ ++config TARGET_RPI_4_32B ++ bool "Raspberry Pi 4 32-bit build" ++ help ++ Support for all BCM2838-based Raspberry Pi variants, such as ++ the RPi 4 model B, in AArch32 (32-bit) mode. ++ ++ This option creates a build targeting the ARMv7/AArch32 ISA. ++ select BCM2838_32B ++ + endchoice + + config SYS_BOARD +-- +2.22.0 + diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0005-arm-mach-bcm283x-Define-mbox-address-for-BCM2838.patch b/recipes-bsp/u-boot/u-boot-2019.07/0005-arm-mach-bcm283x-Define-mbox-address-for-BCM2838.patch new file mode 100644 index 0000000..a7def93 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0005-arm-mach-bcm283x-Define-mbox-address-for-BCM2838.patch @@ -0,0 +1,35 @@ +From 32546abed12ff4c9b8b1480b31e6306bec876218 Mon Sep 17 00:00:00 2001 +From: Andrei Gherzan +Date: Wed, 17 Jul 2019 15:34:07 +0100 +Subject: [PATCH 05/12] arm: mach-bcm283x: Define mbox address for BCM2838 + +Signed-off-by: Andrei Gherzan +Upstream-status: Pending +--- + arch/arm/mach-bcm283x/include/mach/mbox.h | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h +index e3a893e49c..2d711daaa8 100644 +--- a/arch/arm/mach-bcm283x/include/mach/mbox.h ++++ b/arch/arm/mach-bcm283x/include/mach/mbox.h +@@ -38,11 +38,16 @@ + /* Raw mailbox HW */ + + #ifndef CONFIG_BCM2835 ++#ifdef CONFIG_BCM2838 ++#define BCM2835_MBOX_PHYSADDR 0xfe00b880 ++#else + #define BCM2835_MBOX_PHYSADDR 0x3f00b880 ++#endif + #else + #define BCM2835_MBOX_PHYSADDR 0x2000b880 + #endif + ++ + struct bcm2835_mbox_regs { + u32 read; + u32 rsvd0[5]; +-- +2.22.0 + diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0006-rpi-Add-rpi_model-entry-for-RaspberryPi-4.patch b/recipes-bsp/u-boot/u-boot-2019.07/0006-rpi-Add-rpi_model-entry-for-RaspberryPi-4.patch new file mode 100644 index 0000000..b279d11 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0006-rpi-Add-rpi_model-entry-for-RaspberryPi-4.patch @@ -0,0 +1,35 @@ +From 8a8e6c7364d41bbd3eb20dc7e4ec1c0a3e3b5259 Mon Sep 17 00:00:00 2001 +From: Andrei Gherzan +Date: Wed, 17 Jul 2019 15:34:18 +0100 +Subject: [PATCH 06/12] rpi: Add rpi_model entry for RaspberryPi 4 + +The Raspebrry Pi 4 uses the new revision code scheme as documented by +the foundation[1]. This change adds an entry for this board as well. + +[1] https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md + +Signed-off-by: Andrei Gherzan +Upstream-status: Pending +--- + board/raspberrypi/rpi/rpi.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c +index 617c892dde..6d6f1ef39a 100644 +--- a/board/raspberrypi/rpi/rpi.c ++++ b/board/raspberrypi/rpi/rpi.c +@@ -148,6 +148,11 @@ static const struct rpi_model rpi_models_new_scheme[] = { + DTB_DIR "bcm2837-rpi-cm3.dtb", + false, + }, ++ [0x11] = { ++ "4 Model B", ++ DTB_DIR "bcm2711-rpi-4-b.dtb", ++ true, ++ }, + }; + + static const struct rpi_model rpi_models_old_scheme[] = { +-- +2.22.0 + diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0007-dt-bindings-Define-BCM2838_CLOCK_EMMC2-needed-for-Ra.patch b/recipes-bsp/u-boot/u-boot-2019.07/0007-dt-bindings-Define-BCM2838_CLOCK_EMMC2-needed-for-Ra.patch new file mode 100644 index 0000000..597b492 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0007-dt-bindings-Define-BCM2838_CLOCK_EMMC2-needed-for-Ra.patch @@ -0,0 +1,27 @@ +From 8ba1934b184fcdb967c5046ddace112bf3be21f1 Mon Sep 17 00:00:00 2001 +From: Andrei Gherzan +Date: Wed, 17 Jul 2019 15:34:28 +0100 +Subject: [PATCH 07/12] dt-bindings: Define BCM2838_CLOCK_EMMC2 needed for + RaspberryPi 4 + +On BCM2838 there is an additional clock. This clock was added in the +same bcm2835-cprman driver and is used by the emmc2 dt node. + +Signed-off-by: Andrei Gherzan +Upstream-status: Pending +--- + include/dt-bindings/clock/bcm2835.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/dt-bindings/clock/bcm2835.h b/include/dt-bindings/clock/bcm2835.h +index 2cec01f968..b75031abb1 100644 +--- a/include/dt-bindings/clock/bcm2835.h ++++ b/include/dt-bindings/clock/bcm2835.h +@@ -58,3 +58,4 @@ + #define BCM2835_CLOCK_DSI1E 48 + #define BCM2835_CLOCK_DSI0P 49 + #define BCM2835_CLOCK_DSI1P 50 ++#define BCM2838_CLOCK_EMMC2 51 +-- +2.22.0 + diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0008-arm-bcm283x-Include-definition-for-additional-emmc-c.patch b/recipes-bsp/u-boot/u-boot-2019.07/0008-arm-bcm283x-Include-definition-for-additional-emmc-c.patch new file mode 100644 index 0000000..546e786 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0008-arm-bcm283x-Include-definition-for-additional-emmc-c.patch @@ -0,0 +1,32 @@ +From cb85ecba76fde3c96007eae9eda58a083f177333 Mon Sep 17 00:00:00 2001 +From: Andrei Gherzan +Date: Fri, 12 Jul 2019 11:26:10 +0100 +Subject: [PATCH 08/12] arm: bcm283x: Include definition for additional emmc + clock + +This clock has a different mbox ID[1] so have this included in the +relevant header file. + +[1] https://github.com/raspberrypi/firmware/issues/1179 + +Signed-off-by: Andrei Gherzan +Upstream-status: Pending +--- + arch/arm/mach-bcm283x/include/mach/mbox.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h +index 2d711daaa8..cad035e8cd 100644 +--- a/arch/arm/mach-bcm283x/include/mach/mbox.h ++++ b/arch/arm/mach-bcm283x/include/mach/mbox.h +@@ -239,6 +239,7 @@ struct bcm2835_mbox_tag_set_power_state { + #define BCM2835_MBOX_CLOCK_ID_SDRAM 8 + #define BCM2835_MBOX_CLOCK_ID_PIXEL 9 + #define BCM2835_MBOX_CLOCK_ID_PWM 10 ++#define BCM2835_MBOX_CLOCK_ID_EMMC2 12 + + struct bcm2835_mbox_tag_get_clock_rate { + struct bcm2835_mbox_tag_hdr tag_hdr; +-- +2.22.0 + diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0009-mmc-bcm2835_sdhci-Add-support-for-bcm2711-device.patch b/recipes-bsp/u-boot/u-boot-2019.07/0009-mmc-bcm2835_sdhci-Add-support-for-bcm2711-device.patch new file mode 100644 index 0000000..762cb7e --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0009-mmc-bcm2835_sdhci-Add-support-for-bcm2711-device.patch @@ -0,0 +1,53 @@ +From 8fd71dfaeab0ae350c8fa56b039eaafd577a1787 Mon Sep 17 00:00:00 2001 +From: Matthias Brugger +Date: Wed, 10 Jul 2019 13:24:36 +0200 +Subject: [PATCH 09/12] mmc: bcm2835_sdhci: Add support for bcm2711 device + +The bcm2711 has two emmc controller. The difference is the clocks +they use. Add support for the second emmc contoller. + +Signed-off-by: Matthias Brugger +Signed-off-by: Andrei Gherzan +Upstream-status: Pending +--- + drivers/mmc/bcm2835_sdhci.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/drivers/mmc/bcm2835_sdhci.c b/drivers/mmc/bcm2835_sdhci.c +index 08bddd410e..e68dec3be7 100644 +--- a/drivers/mmc/bcm2835_sdhci.c ++++ b/drivers/mmc/bcm2835_sdhci.c +@@ -178,12 +178,13 @@ static int bcm2835_sdhci_probe(struct udevice *dev) + fdt_addr_t base; + int emmc_freq; + int ret; ++ int clock_id = (int)dev_get_driver_data(dev); + + base = devfdt_get_addr(dev); + if (base == FDT_ADDR_T_NONE) + return -EINVAL; + +- ret = bcm2835_get_mmc_clock(BCM2835_MBOX_CLOCK_ID_EMMC); ++ ret = bcm2835_get_mmc_clock(clock_id); + if (ret < 0) { + debug("%s: Failed to set MMC clock (err=%d)\n", __func__, ret); + return ret; +@@ -228,7 +229,14 @@ static int bcm2835_sdhci_probe(struct udevice *dev) + } + + static const struct udevice_id bcm2835_sdhci_match[] = { +- { .compatible = "brcm,bcm2835-sdhci" }, ++ { ++ .compatible = "brcm,bcm2835-sdhci", ++ .data = BCM2835_MBOX_CLOCK_ID_EMMC ++ }, ++ { ++ .compatible = "brcm,bcm2711-emmc2", ++ .data = BCM2835_MBOX_CLOCK_ID_EMMC2 ++ }, + { /* sentinel */ } + }; + +-- +2.22.0 + diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0010-arm-bcm283x-Define-device-base-addresses-for-bcm2835.patch b/recipes-bsp/u-boot/u-boot-2019.07/0010-arm-bcm283x-Define-device-base-addresses-for-bcm2835.patch new file mode 100644 index 0000000..bfba764 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0010-arm-bcm283x-Define-device-base-addresses-for-bcm2835.patch @@ -0,0 +1,64 @@ +From 1f7bbd8ee6f4781473d87f6194ad2f815b1c1a19 Mon Sep 17 00:00:00 2001 +From: Andrei Gherzan +Date: Fri, 12 Jul 2019 11:38:11 +0100 +Subject: [PATCH 10/12] arm: bcm283x: Define device base addresses for bcm2835 + +Signed-off-by: Andrei Gherzan +Upstream-status: Pending +--- + arch/arm/mach-bcm283x/include/mach/sdhci.h | 4 ++++ + arch/arm/mach-bcm283x/include/mach/timer.h | 4 ++++ + arch/arm/mach-bcm283x/include/mach/wdog.h | 4 ++++ + 3 files changed, 12 insertions(+) + +diff --git a/arch/arm/mach-bcm283x/include/mach/sdhci.h b/arch/arm/mach-bcm283x/include/mach/sdhci.h +index 5cb6ec3340..262b016a1b 100644 +--- a/arch/arm/mach-bcm283x/include/mach/sdhci.h ++++ b/arch/arm/mach-bcm283x/include/mach/sdhci.h +@@ -7,7 +7,11 @@ + #define _BCM2835_SDHCI_H_ + + #ifndef CONFIG_BCM2835 ++#ifdef CONFIG_BCM2838 ++#define BCM2835_SDHCI_BASE 0xfe300000 ++#else + #define BCM2835_SDHCI_BASE 0x3f300000 ++#endif + #else + #define BCM2835_SDHCI_BASE 0x20300000 + #endif +diff --git a/arch/arm/mach-bcm283x/include/mach/timer.h b/arch/arm/mach-bcm283x/include/mach/timer.h +index 56b0c356bb..dc3ed98879 100644 +--- a/arch/arm/mach-bcm283x/include/mach/timer.h ++++ b/arch/arm/mach-bcm283x/include/mach/timer.h +@@ -7,7 +7,11 @@ + #define _BCM2835_TIMER_H + + #ifndef CONFIG_BCM2835 ++#ifdef CONFIG_BCM2838 ++#define BCM2835_TIMER_PHYSADDR 0xfe003000 ++#else + #define BCM2835_TIMER_PHYSADDR 0x3f003000 ++#endif + #else + #define BCM2835_TIMER_PHYSADDR 0x20003000 + #endif +diff --git a/arch/arm/mach-bcm283x/include/mach/wdog.h b/arch/arm/mach-bcm283x/include/mach/wdog.h +index 99c88e5df7..ef040f385d 100644 +--- a/arch/arm/mach-bcm283x/include/mach/wdog.h ++++ b/arch/arm/mach-bcm283x/include/mach/wdog.h +@@ -7,7 +7,11 @@ + #define _BCM2835_WDOG_H + + #ifndef CONFIG_BCM2835 ++#ifdef CONFIG_BCM2838 ++#define BCM2835_WDOG_PHYSADDR 0xfe100000 ++#else + #define BCM2835_WDOG_PHYSADDR 0x3f100000 ++#endif + #else + #define BCM2835_WDOG_PHYSADDR 0x20100000 + #endif +-- +2.22.0 + diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0011-rpi-Add-memory-map-for-bcm2838.patch b/recipes-bsp/u-boot/u-boot-2019.07/0011-rpi-Add-memory-map-for-bcm2838.patch new file mode 100644 index 0000000..b2d25d0 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0011-rpi-Add-memory-map-for-bcm2838.patch @@ -0,0 +1,59 @@ +From ab0137601cea84296f607da22d27f0bbf1265e1a Mon Sep 17 00:00:00 2001 +From: Andrei Gherzan +Date: Fri, 12 Jul 2019 14:27:31 +0100 +Subject: [PATCH 11/12] rpi: Add memory map for bcm2838 + +Signed-off-by: Andrei Gherzan +Upstream-status: Pending +--- + board/raspberrypi/rpi/rpi.c | 27 ++++++++++++++++++++++++--- + 1 file changed, 24 insertions(+), 3 deletions(-) + +diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c +index 6d6f1ef39a..1c4fae9166 100644 +--- a/board/raspberrypi/rpi/rpi.c ++++ b/board/raspberrypi/rpi/rpi.c +@@ -249,7 +249,8 @@ static uint32_t rev_type; + static const struct rpi_model *model; + + #ifdef CONFIG_ARM64 +-static struct mm_region bcm2837_mem_map[] = { ++#ifndef CONFIG_BCM2838 ++static struct mm_region bcm283x_mem_map[] = { + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, +@@ -268,8 +269,28 @@ static struct mm_region bcm2837_mem_map[] = { + 0, + } + }; +- +-struct mm_region *mem_map = bcm2837_mem_map; ++#else ++static struct mm_region bcm283x_mem_map[] = { ++ { ++ .virt = 0x00000000UL, ++ .phys = 0x00000000UL, ++ .size = 0xfe000000UL, ++ .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | ++ PTE_BLOCK_INNER_SHARE ++ }, { ++ .virt = 0xfe000000UL, ++ .phys = 0xfe000000UL, ++ .size = 0x01800000UL, ++ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | ++ PTE_BLOCK_NON_SHARE | ++ PTE_BLOCK_PXN | PTE_BLOCK_UXN ++ }, { ++ /* List terminator */ ++ 0, ++ } ++}; ++#endif ++struct mm_region *mem_map = bcm283x_mem_map; + #endif + + int dram_init(void) +-- +2.22.0 + diff --git a/recipes-bsp/u-boot/u-boot-2019.07/0012-bcm283x-mbox-Correctly-wait-for-space-to-send.patch b/recipes-bsp/u-boot/u-boot-2019.07/0012-bcm283x-mbox-Correctly-wait-for-space-to-send.patch new file mode 100644 index 0000000..47d443b --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-2019.07/0012-bcm283x-mbox-Correctly-wait-for-space-to-send.patch @@ -0,0 +1,68 @@ +From 29f48584f6c4b40124396c77547e34febc015a36 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Fri, 28 Jun 2019 14:25:53 +0200 +Subject: [PATCH 12/12] bcm283x mbox: Correctly wait for space to send + +For sending, the second mailbox is used, but previously the status register of +the first one was read. + +Signed-off-by: Andrei Gherzan +Upstream-status: Submitted [https://lists.denx.de/pipermail/u-boot/2019-July/376774.html] +--- + arch/arm/mach-bcm283x/include/mach/mbox.h | 7 +++++-- + arch/arm/mach-bcm283x/mbox.c | 6 +++--- + 2 files changed, 8 insertions(+), 5 deletions(-) + +diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h +index cad035e8cd..cd78966150 100644 +--- a/arch/arm/mach-bcm283x/include/mach/mbox.h ++++ b/arch/arm/mach-bcm283x/include/mach/mbox.h +@@ -51,9 +51,12 @@ + struct bcm2835_mbox_regs { + u32 read; + u32 rsvd0[5]; +- u32 status; +- u32 config; ++ u32 status_r; ++ u32 config_r; + u32 write; ++ u32 rsvd1[5]; ++ u32 status_w; ++ u32 config_w; + }; + + #define BCM2835_MBOX_STATUS_WR_FULL 0x80000000 +diff --git a/arch/arm/mach-bcm283x/mbox.c b/arch/arm/mach-bcm283x/mbox.c +index 1642ebd103..f7483bf423 100644 +--- a/arch/arm/mach-bcm283x/mbox.c ++++ b/arch/arm/mach-bcm283x/mbox.c +@@ -27,7 +27,7 @@ int bcm2835_mbox_call_raw(u32 chan, u32 send, u32 *recv) + /* Drain any stale responses */ + + for (;;) { +- val = readl(®s->status); ++ val = readl(®s->status_r); + if (val & BCM2835_MBOX_STATUS_RD_EMPTY) + break; + if (get_timer(0) >= endtime) { +@@ -40,7 +40,7 @@ int bcm2835_mbox_call_raw(u32 chan, u32 send, u32 *recv) + /* Wait for space to send */ + + for (;;) { +- val = readl(®s->status); ++ val = readl(®s->status_w); + if (!(val & BCM2835_MBOX_STATUS_WR_FULL)) + break; + if (get_timer(0) >= endtime) { +@@ -58,7 +58,7 @@ int bcm2835_mbox_call_raw(u32 chan, u32 send, u32 *recv) + /* Wait for the response */ + + for (;;) { +- val = readl(®s->status); ++ val = readl(®s->status_r); + if (!(val & BCM2835_MBOX_STATUS_RD_EMPTY)) + break; + if (get_timer(0) >= endtime) { +-- +2.22.0 + diff --git a/recipes-bsp/u-boot/u-boot_2019.07.bbappend b/recipes-bsp/u-boot/u-boot_2019.07.bbappend index 6dfcc2c..f39db10 100644 --- a/recipes-bsp/u-boot/u-boot_2019.07.bbappend +++ b/recipes-bsp/u-boot/u-boot_2019.07.bbappend @@ -1,4 +1,17 @@ -SRC_URI_raspberrypi4 = "git://github.com/balena-os/u-boot;branch=ag/rpi4" -SRCREV_raspberrypi4 = "62b6e39a53c56a9085aeab1b47b5cc6020fcdb6f" -SRC_URI_raspberrypi4-64 = "git://github.com/balena-os/u-boot;branch=ag/rpi4" -SRCREV_raspberrypi4-64 = "62b6e39a53c56a9085aeab1b47b5cc6020fcdb6f" +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:" +UBOOT_RPI4_SUPPORT_PATCHES = " \ + file://0001-configs-rpi4-Add-defconfigs-for-rpi4-32-64.patch \ + file://0002-dts-Create-a-dtsi-for-BCM2835-6-7-specific-configura.patch \ + file://0003-dts-Add-initial-support-for-bcm2838.patch \ + file://0004-arm-mach-bcm283x-Define-configs-for-RaspberryPi-4.patch \ + file://0005-arm-mach-bcm283x-Define-mbox-address-for-BCM2838.patch \ + file://0006-rpi-Add-rpi_model-entry-for-RaspberryPi-4.patch \ + file://0007-dt-bindings-Define-BCM2838_CLOCK_EMMC2-needed-for-Ra.patch \ + file://0008-arm-bcm283x-Include-definition-for-additional-emmc-c.patch \ + file://0009-mmc-bcm2835_sdhci-Add-support-for-bcm2711-device.patch \ + file://0010-arm-bcm283x-Define-device-base-addresses-for-bcm2835.patch \ + file://0011-rpi-Add-memory-map-for-bcm2838.patch \ + file://0012-bcm283x-mbox-Correctly-wait-for-space-to-send.patch \ +" + +SRC_URI_append_raspberrypi4 = "${UBOOT_RPI4_SUPPORT_PATCHES}"