diff options
author | Leon Anavi <leon.anavi@konsulko.com> | 2019-09-13 20:51:56 +0300 |
---|---|---|
committer | Leon Anavi <leon.anavi@konsulko.com> | 2019-10-30 13:44:58 +0200 |
commit | 4ee7e1eff7904dc0dfcc90dd7b0786550c8f804b (patch) | |
tree | 0a6664819d8a67cc794207d2d7677f6a3ba3b32b | |
parent | ea35c365c8aa06be5b79c5d6cd36a1a73ccf75e5 (diff) |
u-boot-2019.07: Fix for Raspberry Pi 4
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>
10 files changed, 514 insertions, 5 deletions
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 index 000000000..391b26a1c --- /dev/null +++ b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0001-configs-rpi4-Add-defconfigs-for-rpi4-32-64.patch @@ -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 index 000000000..fcf91a6a7 --- /dev/null +++ b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0002-ARM-bcm283x-Add-BCM283x_BASE-define.patch @@ -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 index 000000000..029cac496 --- /dev/null +++ b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0003-arm-mach-bcm283x-Define-configs-for-RaspberryPi-4.patch @@ -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 index 000000000..7309d2b22 --- /dev/null +++ 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 @@ -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 index 000000000..44847e017 --- /dev/null +++ b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0005-arm-bcm283x-Include-definition-for-additional-emmc-c.patch @@ -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 index 000000000..d9de5c425 --- /dev/null +++ b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0006-mmc-bcm2835_sdhci-Add-support-for-bcm2711-device.patch @@ -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 index 000000000..1d23d9f99 --- /dev/null +++ b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-2019.07/0007-rpi-Add-memory-map-for-bcm2838.patch @@ -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 index 000000000..3daf157d7 --- /dev/null +++ b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-fw-utils_2019.07.bbappend @@ -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 index 000000000..2ce55a2b1 --- /dev/null +++ b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot-rpi4-2019.07.inc @@ -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}" diff --git a/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot_2019.07.bbappend b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot_2019.07.bbappend index 03e7dc849..6d89f5cb2 100644 --- a/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot_2019.07.bbappend +++ b/meta-agl-bsp/meta-raspberrypi/recipes-bsp/u-boot/u-boot_2019.07.bbappend @@ -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" |