u-boot-2019.07: Fix for Raspberry Pi 4 24/22424/2
authorLeon Anavi <leon.anavi@konsulko.com>
Fri, 13 Sep 2019 17:51:56 +0000 (20:51 +0300)
committerLeon Anavi <leon.anavi@konsulko.com>
Fri, 13 Sep 2019 17:57:52 +0000 (20:57 +0300)
Following recent changes in the BSP the recipe for u-boot 2019.07
was failing to build for Raspberry Pi 4. This fix brings existing
patches from master branch of meta-raspberrypi to AGL which is
still based on Yocto project release Thud.

Bug-AGL: SPEC-2656

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Change-Id: Ic544d02032198dc05da24bc3246e8911d300c1ea
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0001-configs-rpi4-Add-defconfigs-for-rpi4-32-64.patch [new file with mode: 0644]
meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0002-ARM-bcm283x-Add-BCM283x_BASE-define.patch [new file with mode: 0644]
meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0003-arm-mach-bcm283x-Define-configs-for-RaspberryPi-4.patch [new file with mode: 0644]
meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0004-rpi-Add-entry-for-Raspberry-Pi-4-model-B.patch [new file with mode: 0644]
meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0005-arm-bcm283x-Include-definition-for-additional-emmc-c.patch [new file with mode: 0644]
meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0006-mmc-bcm2835_sdhci-Add-support-for-bcm2711-device.patch [new file with mode: 0644]
meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0007-rpi-Add-memory-map-for-bcm2838.patch [new file with mode: 0644]
meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-fw-utils_2019.07.bbappend [new file with mode: 0644]
meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-rpi4-2019.07.inc [new file with mode: 0644]
meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot_2019.07.bbappend

diff --git a/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0001-configs-rpi4-Add-defconfigs-for-rpi4-32-64.patch b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0001-configs-rpi4-Add-defconfigs-for-rpi4-32-64.patch
new file mode 100644 (file)
index 0000000..391b26a
--- /dev/null
@@ -0,0 +1,104 @@
+From 5bf85d04b440ce874310e701abded823dc1864bc Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei@balena.io>
+Date: Wed, 17 Jul 2019 15:32:11 +0100
+Subject: [PATCH 1/7] configs: rpi4: Add defconfigs for rpi4 (32/64)
+
+This defines a minimum defconfig for each of the two Raspberry Pi 4
+variants. One notable difference is that we don't have a embedded dt for
+this board given that the fw supplies us with one which we can reuse.
+Furthermore, the ram size is not queryable through mbox interface as the
+maximum reported size is 1G. The fw patches the dt with the right
+memory configuration and uboot uses it as it is. We avoid u-boot
+touching this configuration by making sure CONFIG_ARCH_FIXUP_FDT_MEMORY
+is deactivated.
+
+Signed-off-by: Andrei Gherzan <andrei@balena.io>
+Upstream-status: Pending
+---
+ configs/rpi_4_32b_defconfig | 33 +++++++++++++++++++++++++++++++++
+ configs/rpi_4_defconfig     | 33 +++++++++++++++++++++++++++++++++
+ 2 files changed, 66 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..a31a617a5f
+--- /dev/null
++++ b/configs/rpi_4_32b_defconfig
+@@ -0,0 +1,33 @@
++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=y
++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_FS_UUID=y
++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_PINCTRL=y
++# CONFIG_PINCTRL_GENERIC is not set
++# CONFIG_REQUIRE_SERIAL_CONSOLE is not set
++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..da8c960a2a
+--- /dev/null
++++ b/configs/rpi_4_defconfig
+@@ -0,0 +1,33 @@
++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=y
++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_FS_UUID=y
++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_PINCTRL=y
++# CONFIG_PINCTRL_GENERIC is not set
++# CONFIG_REQUIRE_SERIAL_CONSOLE is not set
++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/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0002-ARM-bcm283x-Add-BCM283x_BASE-define.patch b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0002-ARM-bcm283x-Add-BCM283x_BASE-define.patch
new file mode 100644 (file)
index 0000000..fcf91a6
--- /dev/null
@@ -0,0 +1,105 @@
+From df2aa4c6be33b468adc09de337a055556d1f37fb Mon Sep 17 00:00:00 2001
+From: Matthias Brugger <mbrugger@suse.com>
+Date: Fri, 12 Jul 2019 18:20:53 +0200
+Subject: [PATCH 2/7] ARM: bcm283x: Add BCM283x_BASE define
+
+Devices of bcm283x have different base address, depending if they are on
+bcm2835 or bcm2836/7. Use BCM283x_BASE depending on the SoC you want to
+build and only add the offset in the header files.
+
+Signed-off-by: Matthias Brugger <mbrugger@suse.com>
+Signed-off-by: Andrei Gherzan <andrei@balena.io>
+Upstream-status: Pending
+---
+ arch/arm/mach-bcm283x/Kconfig              | 5 +++++
+ arch/arm/mach-bcm283x/include/mach/mbox.h  | 6 +-----
+ arch/arm/mach-bcm283x/include/mach/sdhci.h | 6 +-----
+ arch/arm/mach-bcm283x/include/mach/timer.h | 6 +-----
+ arch/arm/mach-bcm283x/include/mach/wdog.h  | 6 +-----
+ 5 files changed, 9 insertions(+), 20 deletions(-)
+
+diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig
+index 3eb5a9a897..8e69914a83 100644
+--- a/arch/arm/mach-bcm283x/Kconfig
++++ b/arch/arm/mach-bcm283x/Kconfig
+@@ -141,4 +141,9 @@ config SYS_SOC
+ config SYS_CONFIG_NAME
+       default "rpi"
++config BCM283x_BASE
++      hex
++      default "0x20000000" if BCM2835
++      default "0x3f000000" if BCM2836 || BCM2837
++
+ endmenu
+diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h
+index e3a893e49c..e44c7577da 100644
+--- a/arch/arm/mach-bcm283x/include/mach/mbox.h
++++ b/arch/arm/mach-bcm283x/include/mach/mbox.h
+@@ -37,11 +37,7 @@
+ /* Raw mailbox HW */
+-#ifndef CONFIG_BCM2835
+-#define BCM2835_MBOX_PHYSADDR 0x3f00b880
+-#else
+-#define BCM2835_MBOX_PHYSADDR 0x2000b880
+-#endif
++#define BCM2835_MBOX_PHYSADDR (CONFIG_BCM283x_BASE + 0x0000b880)
+ struct bcm2835_mbox_regs {
+       u32 read;
+diff --git a/arch/arm/mach-bcm283x/include/mach/sdhci.h b/arch/arm/mach-bcm283x/include/mach/sdhci.h
+index 5cb6ec3340..b443c379d8 100644
+--- a/arch/arm/mach-bcm283x/include/mach/sdhci.h
++++ b/arch/arm/mach-bcm283x/include/mach/sdhci.h
+@@ -6,11 +6,7 @@
+ #ifndef _BCM2835_SDHCI_H_
+ #define _BCM2835_SDHCI_H_
+-#ifndef CONFIG_BCM2835
+-#define BCM2835_SDHCI_BASE 0x3f300000
+-#else
+-#define BCM2835_SDHCI_BASE 0x20300000
+-#endif
++#define BCM2835_SDHCI_BASE (CONFIG_BCM283x_BASE + 0x00300000)
+ int bcm2835_sdhci_init(u32 regbase, u32 emmc_freq);
+diff --git a/arch/arm/mach-bcm283x/include/mach/timer.h b/arch/arm/mach-bcm283x/include/mach/timer.h
+index 56b0c356bb..014355e759 100644
+--- a/arch/arm/mach-bcm283x/include/mach/timer.h
++++ b/arch/arm/mach-bcm283x/include/mach/timer.h
+@@ -6,11 +6,7 @@
+ #ifndef _BCM2835_TIMER_H
+ #define _BCM2835_TIMER_H
+-#ifndef CONFIG_BCM2835
+-#define BCM2835_TIMER_PHYSADDR        0x3f003000
+-#else
+-#define BCM2835_TIMER_PHYSADDR        0x20003000
+-#endif
++#define BCM2835_TIMER_PHYSADDR        (CONFIG_BCM283x_BASE + 0x00003000)
+ #define BCM2835_TIMER_CS_M3   (1 << 3)
+ #define BCM2835_TIMER_CS_M2   (1 << 2)
+diff --git a/arch/arm/mach-bcm283x/include/mach/wdog.h b/arch/arm/mach-bcm283x/include/mach/wdog.h
+index 99c88e5df7..00b5e06c3a 100644
+--- a/arch/arm/mach-bcm283x/include/mach/wdog.h
++++ b/arch/arm/mach-bcm283x/include/mach/wdog.h
+@@ -6,11 +6,7 @@
+ #ifndef _BCM2835_WDOG_H
+ #define _BCM2835_WDOG_H
+-#ifndef CONFIG_BCM2835
+-#define BCM2835_WDOG_PHYSADDR                 0x3f100000
+-#else
+-#define BCM2835_WDOG_PHYSADDR                 0x20100000
+-#endif
++#define BCM2835_WDOG_PHYSADDR                         (CONFIG_BCM283x_BASE + 0x00100000)
+ struct bcm2835_wdog_regs {
+       u32 unknown0[7];
+-- 
+2.22.0
+
diff --git a/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0003-arm-mach-bcm283x-Define-configs-for-RaspberryPi-4.patch b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0003-arm-mach-bcm283x-Define-configs-for-RaspberryPi-4.patch
new file mode 100644 (file)
index 0000000..029cac4
--- /dev/null
@@ -0,0 +1,108 @@
+From c03f551cab8fe38de8f0e1781f0e2e339419b003 Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei@balena.io>
+Date: Wed, 17 Jul 2019 15:33:01 +0100
+Subject: [PATCH 3/7] arm: mach-bcm283x: Define configs for RaspberryPi 4
+
+Define two target configs for Raspberry Pi 4 (32 and 64bit) and the
+corresponding BCM2838* configs.
+
+Be aware of the current limitation in firmware which requires an
+explicit configuration to force the arm in 64bit mode when the
+respective target is used.
+
+Signed-off-by: Andrei Gherzan <andrei@balena.io>
+Signed-off-by: Matthias Brugger <mbrugger@suse.com>
+Upstream-status: Pending
+---
+ arch/arm/mach-bcm283x/Kconfig | 62 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 62 insertions(+)
+
+diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig
+index 8e69914a83..09a5b42bbb 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,50 @@ config TARGET_RPI_3
+         This option creates a build targeting the ARMv8/AArch64 ISA.
+       select BCM2837_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 assumes the VideoCore firmware is configured to use the
++        mini UART (rather than PL011) for the serial console. This is the
++        default on the RPi 4. To enable the UART console, the following non-
++        default option must be present in config.txt: enable_uart=1. This is
++        required for U-Boot to operate correctly, even if you only care
++        about the HDMI/usbkbd console.
++
++        Due to hardware incompatibilities, this can't be used with
++        BCM283/5/6/7.
++
++        This option creates a build targeting the ARMv7/AArch32 ISA.
++      select BCM2838_32B
++
++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 assumes the VideoCore firmware is configured to use the
++        mini UART (rather than PL011) for the serial console. This is the
++        default on the RPi 4. To enable the UART console, the following non-
++        default option must be present in config.txt: enable_uart=1. This is
++        required for U-Boot to operate correctly, even if you only care
++        about the HDMI/usbkbd console.
++
++        Due to hardware incompatibilities, this can't be used with
++        BCM283/5/6/7.
++
++        Also, due to a bug in firmware, switching to 64bit mode doesn't
++        happen automatically based on the kernel's image filename. See
++        https://github.com/raspberrypi/firmware/issues/1193 for more details.
++        Until that is resolved, the configuration (config.txt) needs to
++        explicitly set: arm_64bit=1.
++
++        This option creates a build targeting the ARMv8/AArch64 ISA.
++      select BCM2838_64B
++
+ endchoice
+ config SYS_BOARD
+@@ -145,5 +206,6 @@ config BCM283x_BASE
+       hex
+       default "0x20000000" if BCM2835
+       default "0x3f000000" if BCM2836 || BCM2837
++      default "0xfe000000" if BCM2838
+ endmenu
+-- 
+2.22.0
+
diff --git a/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0004-rpi-Add-entry-for-Raspberry-Pi-4-model-B.patch b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0004-rpi-Add-entry-for-Raspberry-Pi-4-model-B.patch
new file mode 100644 (file)
index 0000000..7309d2b
--- /dev/null
@@ -0,0 +1,33 @@
+From 12fbbd5bc12e225b19d3b4cb193a1bf3d9fa752a Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei@balena.io>
+Date: Wed, 17 Jul 2019 15:34:18 +0100
+Subject: [PATCH 4/7] rpi: Add entry for Raspberry Pi 4 model B
+
+The Raspebrry Pi 4 uses the new revision code scheme as documented by
+the foundation. This change adds an entry for this board as well.
+
+Signed-off-by: Andrei Gherzan <andrei@balena.io>
+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..92c6534da6 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 "bcm2838-rpi-4-b.dtb",
++              true,
++      },
+ };
+ static const struct rpi_model rpi_models_old_scheme[] = {
+-- 
+2.22.0
+
diff --git a/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0005-arm-bcm283x-Include-definition-for-additional-emmc-c.patch b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0005-arm-bcm283x-Include-definition-for-additional-emmc-c.patch
new file mode 100644 (file)
index 0000000..44847e0
--- /dev/null
@@ -0,0 +1,30 @@
+From fd99a249e6faf234066a6b5da2ed34aaead3d6d9 Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei@balena.io>
+Date: Fri, 12 Jul 2019 11:26:10 +0100
+Subject: [PATCH 5/7] arm: bcm283x: Include definition for additional emmc
+ clock
+
+This clock has a different mbox ID so have this included in the relevant
+header file.
+
+Signed-off-by: Andrei Gherzan <andrei@balena.io>
+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 e44c7577da..f2a98acddd 100644
+--- a/arch/arm/mach-bcm283x/include/mach/mbox.h
++++ b/arch/arm/mach-bcm283x/include/mach/mbox.h
+@@ -230,6 +230,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/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0006-mmc-bcm2835_sdhci-Add-support-for-bcm2711-device.patch b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0006-mmc-bcm2835_sdhci-Add-support-for-bcm2711-device.patch
new file mode 100644 (file)
index 0000000..d9de5c4
--- /dev/null
@@ -0,0 +1,53 @@
+From 1f42758fe69648340cfae6cae98e667b88923cf6 Mon Sep 17 00:00:00 2001
+From: Matthias Brugger <mbrugger@suse.com>
+Date: Wed, 10 Jul 2019 13:24:36 +0200
+Subject: [PATCH 6/7] 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 <mbrugger@suse.com>
+Signed-off-by: Andrei Gherzan <andrei@balena.io>
+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/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0007-rpi-Add-memory-map-for-bcm2838.patch b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0007-rpi-Add-memory-map-for-bcm2838.patch
new file mode 100644 (file)
index 0000000..1d23d9f
--- /dev/null
@@ -0,0 +1,62 @@
+From 76b656349a6786fa81cf69ac7762c31675cd567e Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei@balena.io>
+Date: Fri, 12 Jul 2019 14:27:31 +0100
+Subject: [PATCH 7/7] rpi: Add memory map for bcm2838
+
+Define the memory map for the BCM2838 based on the dt configuration
+available in the Raspberry Pi kernel fork.
+
+Signed-off-by: Andrei Gherzan <andrei@balena.io>
+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 92c6534da6..bddf2a578d 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/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-fw-utils_2019.07.bbappend b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-fw-utils_2019.07.bbappend
new file mode 100644 (file)
index 0000000..3daf157
--- /dev/null
@@ -0,0 +1,2 @@
+# Apply the same patches for rpi4 as u-boot recipe
+require u-boot-rpi4-${PV}.inc
diff --git a/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-rpi4-2019.07.inc b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-rpi4-2019.07.inc
new file mode 100644 (file)
index 0000000..2ce55a2
--- /dev/null
@@ -0,0 +1,12 @@
+FILESEXTRAPATHS_prepend_raspberrypi4 := "${THISDIR}/u-boot-2019.07:"
+UBOOT_RPI4_SUPPORT_PATCHES = " \
+    file://0001-configs-rpi4-Add-defconfigs-for-rpi4-32-64.patch \
+    file://0002-ARM-bcm283x-Add-BCM283x_BASE-define.patch \
+    file://0003-arm-mach-bcm283x-Define-configs-for-RaspberryPi-4.patch \
+    file://0004-rpi-Add-entry-for-Raspberry-Pi-4-model-B.patch \
+    file://0005-arm-bcm283x-Include-definition-for-additional-emmc-c.patch \
+    file://0006-mmc-bcm2835_sdhci-Add-support-for-bcm2711-device.patch \
+    file://0007-rpi-Add-memory-map-for-bcm2838.patch \
+"
+
+SRC_URI_append_raspberrypi4 = "${UBOOT_RPI4_SUPPORT_PATCHES}"
index 03e7dc8..6d89f5c 100644 (file)
@@ -1,10 +1,10 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+# Apply the same patches for rpi4 as u-boot recipe
+require u-boot-rpi4-${PV}.inc
 
-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}/files:"
 
 # Update the patch for u-boot 2019.07
 SRC_URI_remove_sota = "file://0001-board-raspberrypi-add-serial-and-revision-to-the-dev.patch"
 SRC_URI_append_sota = "file://0001-board-raspberrypi-add-serial-and-revision-to-the-dev-2019.07.patch"
+
+DEPENDS_append_rpi = " rpi-u-boot-scr"