From 7882d2a63f52abc8e695c3d776572f5bd2961b4c Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 16:21:36 +0200 Subject: [PATCH] Create 0010-rpi-add-raspberry-pi-3-support.patch --- .../0010-rpi-add-raspberry-pi-3-support.patch | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 buildroot-external/board/rpi3/patches/barebox/0010-rpi-add-raspberry-pi-3-support.patch diff --git a/buildroot-external/board/rpi3/patches/barebox/0010-rpi-add-raspberry-pi-3-support.patch b/buildroot-external/board/rpi3/patches/barebox/0010-rpi-add-raspberry-pi-3-support.patch new file mode 100644 index 000000000..2751cc0d0 --- /dev/null +++ b/buildroot-external/board/rpi3/patches/barebox/0010-rpi-add-raspberry-pi-3-support.patch @@ -0,0 +1,136 @@ +This adds basic support at the same feature level as the other +supported raspberry pi boards. + +Signed-off-by: Lucas Stach +--- + arch/arm/boards/raspberry-pi/lowlevel.c | 14 ++++++++++++-- + arch/arm/configs/rpi_defconfig | 2 ++ + arch/arm/dts/Makefile | 1 + + arch/arm/dts/bcm2837-rpi-3.dts | 15 +++++++++++++++ + arch/arm/mach-bcm283x/Kconfig | 6 ++++++ + arch/arm/mach-bcm283x/core.c | 1 + + images/Makefile.bcm283x | 4 ++++ + 7 files changed, 41 insertions(+), 2 deletions(-) + create mode 100644 arch/arm/dts/bcm2837-rpi-3.dts + +diff --git a/arch/arm/boards/raspberry-pi/lowlevel.c b/arch/arm/boards/raspberry-pi/lowlevel.c +index 4e71e29e0c0b..5ca0d3877069 100644 +--- a/arch/arm/boards/raspberry-pi/lowlevel.c ++++ b/arch/arm/boards/raspberry-pi/lowlevel.c +@@ -1,7 +1,7 @@ ++#include ++#include + #include + #include +-#include +-#include + #include + + extern char __dtb_bcm2835_rpi_start[]; +@@ -23,3 +23,13 @@ ENTRY_FUNCTION(start_raspberry_pi2, r0, r1, r2) + + barebox_arm_entry(BCM2835_SDRAM_BASE, SZ_512M, fdt); + } ++ ++extern char __dtb_bcm2837_rpi_3_start[]; ++ENTRY_FUNCTION(start_raspberry_pi3, r0, r1, r2) ++{ ++ void *fdt = __dtb_bcm2837_rpi_3_start - get_runtime_offset(); ++ ++ arm_cpu_lowlevel_init(); ++ ++ barebox_arm_entry(BCM2835_SDRAM_BASE, SZ_512M, fdt); ++} +diff --git a/arch/arm/configs/rpi_defconfig b/arch/arm/configs/rpi_defconfig +index 6dc90c59b36d..34070a05abe7 100644 +--- a/arch/arm/configs/rpi_defconfig ++++ b/arch/arm/configs/rpi_defconfig +@@ -1,9 +1,11 @@ + CONFIG_ARCH_BCM283X=y + CONFIG_MACH_RPI=y + CONFIG_MACH_RPI2=y ++CONFIG_MACH_RPI3=y + CONFIG_AEABI=y + CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y + CONFIG_ARM_UNWIND=y ++CONFIG_IMAGE_COMPRESSION_NONE=y + CONFIG_MMU=y + CONFIG_MALLOC_TLSF=y + CONFIG_KALLSYMS=y +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 0526a6f40724..0eab313c5011 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -66,6 +66,7 @@ pbl-dtb-$(CONFIG_MACH_PHYTEC_SOM_RK3288) += rk3288-phycore-som.dtb.o + pbl-dtb-$(CONFIG_MACH_REALQ7) += imx6q-dmo-edmqmx6.dtb.o + pbl-dtb-$(CONFIG_MACH_RPI) += bcm2835-rpi.dtb.o + pbl-dtb-$(CONFIG_MACH_RPI2) += bcm2836-rpi-2.dtb.o ++pbl-dtb-$(CONFIG_MACH_RPI3) += bcm2837-rpi-3.dtb.o + pbl-dtb-$(CONFIG_MACH_SABRELITE) += imx6q-sabrelite.dtb.o imx6dl-sabrelite.dtb.o + pbl-dtb-$(CONFIG_MACH_SABRESD) += imx6q-sabresd.dtb.o + pbl-dtb-$(CONFIG_MACH_FREESCALE_IMX6SX_SABRESDB) += imx6sx-sdb.dtb.o +diff --git a/arch/arm/dts/bcm2837-rpi-3.dts b/arch/arm/dts/bcm2837-rpi-3.dts +new file mode 100644 +index 000000000000..f8c58c570137 +--- /dev/null ++++ b/arch/arm/dts/bcm2837-rpi-3.dts +@@ -0,0 +1,15 @@ ++#include ++ ++/ { ++ chosen { ++ stdout-path = &uart0; ++ }; ++ ++ memory { ++ reg = <0x0 0x0>; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; +diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig +index 1457f114ccaa..af2f88c47acb 100644 +--- a/arch/arm/mach-bcm283x/Kconfig ++++ b/arch/arm/mach-bcm283x/Kconfig +@@ -19,6 +19,12 @@ config MACH_RPI2 + select CPU_V7 + select MACH_RPI_COMMON + ++config MACH_RPI3 ++ bool "RaspberryPi 3 (BCM2837/CORTEX-A53)" ++ select CPU_V7 ++ select MACH_RPI_COMMON ++ select ARM_SECURE_MONITOR ++ + endmenu + + config MACH_RPI_DEBUG_UART_BASE +diff --git a/arch/arm/mach-bcm283x/core.c b/arch/arm/mach-bcm283x/core.c +index fddcb0d1a1d4..26f0996b1cb8 100644 +--- a/arch/arm/mach-bcm283x/core.c ++++ b/arch/arm/mach-bcm283x/core.c +@@ -41,6 +41,7 @@ static int bcm2835_clk_init(void) + clk = clk_fixed("uart0-pl0110", 3 * 1000 * 1000); + clk_register_clkdev(clk, NULL, "uart0-pl0110"); + clk_register_clkdev(clk, NULL, "20201000.serial"); ++ clk_register_clkdev(clk, NULL, "3f201000.serial"); + + clk = clk_fixed("bcm2835-cs", 1 * 1000 * 1000); + clk_register_clkdev(clk, NULL, "bcm2835-cs"); +diff --git a/images/Makefile.bcm283x b/images/Makefile.bcm283x +index d59ef043f05c..d14e648926ac 100644 +--- a/images/Makefile.bcm283x ++++ b/images/Makefile.bcm283x +@@ -9,3 +9,7 @@ image-$(CONFIG_MACH_RPI) += barebox-raspberry-pi-1.img + pblx-$(CONFIG_MACH_RPI2) += start_raspberry_pi2 + FILE_barebox-raspberry-pi-2.img = start_raspberry_pi2.pblx + image-$(CONFIG_MACH_RPI2) += barebox-raspberry-pi-2.img ++ ++pblx-$(CONFIG_MACH_RPI3) += start_raspberry_pi3 ++FILE_barebox-raspberry-pi-3.img = start_raspberry_pi3.pblx ++image-$(CONFIG_MACH_RPI3) += barebox-raspberry-pi-3.img +\ No newline at end of file +-- +2.15.1