summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre-Olivier Huard <pierre-olivier.huard@rtone.fr>2024-02-15 13:01:09 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2024-02-16 13:01:20 +0100
commit749e11023eb8dacd994cae7b0c286b03bc090ffc (patch)
treeec917b0c7df0a5914d7f3dd0637db78b7d72c45e
parent59aab0bebb1b6b064a75e02279d6e90a8c30e2fb (diff)
downloadbarebox-749e11023eb8.tar.gz
barebox-749e11023eb8.tar.xz
ARM: dts: rpi4: add DT for CM4S
CM4S is close to the CM4, and thus is herited from it, with some minor changes: * The uart1 node (mini UART) does not need the clock to be forced to 500MHz. * The compatible field needs to be updated to match the CM4S There is still an issue with the dwc2 driver in timeout. Boot log: Board: Raspberry Pi Compute Module 4S IO Board deep-probe: supported due to raspberrypi,4-compute-module-s bcm2835_mci fe300000.mmc@7e300000.of: registered as mci0 WARNING: dwc2 fe980000.usb@7e980000.of: dwc2_core_reset: Timeout! Waiting for Core Soft Reset ERROR: dwc2 fe980000.usb@7e980000.of: probe failed: Connection timed out bcm2835_mci fe340000.mmc@7e340000.of: registered as mci1 malloc space: 0x1f17ca80 -> 0x3e2f94ff (size 497.5 MiB) no /dev/disk0.0 or /dev/mmc0.0. using default env no '/hat' node found in vc fdt environment load /dev/env0: No such file or directory Maybe you have to create the partition. Hit any to stop autoboot: 3 Signed-off-by: Pierre-Olivier Huard <pierre-olivier.huard@rtone.fr> Link: https://lore.barebox.org/20240215120109.23242-1-pierre-olivier.huard@rtone.fr Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/boards/raspberry-pi/lowlevel.c3
-rw-r--r--arch/arm/dts/Makefile2
-rw-r--r--arch/arm/dts/bcm2711-rpi-cm4s-io.dts20
3 files changed, 24 insertions, 1 deletions
diff --git a/arch/arm/boards/raspberry-pi/lowlevel.c b/arch/arm/boards/raspberry-pi/lowlevel.c
index a1e195d811..b3727d930f 100644
--- a/arch/arm/boards/raspberry-pi/lowlevel.c
+++ b/arch/arm/boards/raspberry-pi/lowlevel.c
@@ -73,6 +73,7 @@ extern char __dtb_z_bcm2837_rpi_cm3_start[];
extern char __dtb_z_bcm2711_rpi_4_start[];
extern char __dtb_z_bcm2711_rpi_400_start[];
extern char __dtb_z_bcm2711_rpi_cm4_io_start[];
+extern char __dtb_z_bcm2711_rpi_cm4s_io_start[];
RPI_ENTRY_FUNCTION(start_raspberry_pi1, SZ_128M, fdt)
{
@@ -139,6 +140,8 @@ static void *rpi_get_board_fdt(int rev)
return DT_IF_ENABLED(__dtb_z_bcm2711_rpi_400_start, CONFIG_MACH_RPI4);
case BCM2711_BOARD_REV_CM4:
return DT_IF_ENABLED(__dtb_z_bcm2711_rpi_cm4_io_start, CONFIG_MACH_RPI4);
+ case BCM2711_BOARD_REV_CM4_S:
+ return DT_IF_ENABLED(__dtb_z_bcm2711_rpi_cm4s_io_start, CONFIG_MACH_RPI4);
}
return NULL;
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 301014eaff..34ebc3c419 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -123,7 +123,7 @@ lwl-$(CONFIG_MACH_RPI) += bcm2835-rpi.dtb.o
lwl-$(CONFIG_MACH_RPI2) += bcm2836-rpi-2.dtb.o
lwl-$(CONFIG_MACH_RPI3) += bcm2837-rpi-3.dtb.o
lwl-$(CONFIG_MACH_RPI_CM3) += bcm2837-rpi-cm3.dtb.o
-lwl-$(CONFIG_MACH_RPI4) += bcm2711-rpi-4.dtb.o bcm2711-rpi-400.dtb.o bcm2711-rpi-cm4-io.dtb.o
+lwl-$(CONFIG_MACH_RPI4) += bcm2711-rpi-4.dtb.o bcm2711-rpi-400.dtb.o bcm2711-rpi-cm4-io.dtb.o bcm2711-rpi-cm4s-io.dtb.o
lwl-$(CONFIG_MACH_SABRELITE) += imx6q-sabrelite.dtb.o imx6dl-sabrelite.dtb.o
lwl-$(CONFIG_MACH_SABRESD) += imx6q-sabresd.dtb.o imx6qp-sabresd.dtb.o
lwl-$(CONFIG_MACH_FREESCALE_IMX6SX_SABRESDB) += imx6sx-sdb.dtb.o
diff --git a/arch/arm/dts/bcm2711-rpi-cm4s-io.dts b/arch/arm/dts/bcm2711-rpi-cm4s-io.dts
new file mode 100644
index 0000000000..8302523e47
--- /dev/null
+++ b/arch/arm/dts/bcm2711-rpi-cm4s-io.dts
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include "bcm2711-rpi-cm4-io.dts"
+
+&{/memory@0} {
+ reg = <0x0 0x0 0x0>;
+};
+
+/ {
+ compatible = "raspberrypi,4-compute-module-s", "brcm,bcm2711";
+ model = "Raspberry Pi Compute Module 4S IO Board";
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+};
+
+&uart1 {
+ /delete-property/ clock-frequency;
+};