summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmad Fatoum <a.fatoum@pengutronix.de>2020-06-17 16:50:16 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2020-06-18 16:41:46 +0200
commit9b3b761a5993cbb151453c9971e1ddc142ddc272 (patch)
tree884a7626ecc1b614db6da0ef5004700376a49664
parent6c1e7688df94a9d4dfebeb62266f7fc91c209d8a (diff)
downloadbarebox-9b3b761a5993cbb151453c9971e1ddc142ddc272.tar.gz
barebox-9b3b761a5993cbb151453c9971e1ddc142ddc272.tar.xz
ARM: rpi: dts: fix MMIO resources clash breaking boot
The rpi3b device tree specifies 1G of RAM in the memory node, but maps the highest 16M of RAM's physical address range for peripheral use. When support for device tree probing was first added for the rpi3b in e8fab18835a1 ("ARM: rpi: switch to DT probe and multi-image build"), it had a memory { } node overriding the kernel node size with 0, so the size is computed later correctly. 1dc748b3b202 ("dts: update to v5.1-rc1") came and renamed the upstream memory { } node to memory@0. So instead of overriding the old, we now created a second dummy along with the broken node. barebox did only parse the dummy, so it continued to limp along. 8226f7f90973 ("of: base: parse all available memory nodes") started considering both nodes and rendered barebox v2020.05.0 unable to start up on the rpi3b because of the conflict between RAM range and peripherals like the bcm2835_mbox caused by parsing the broken memory node. At least one board also was broken for the same reason[1], so a more robust approach is in order. For nodes that lack a phandle, the &{/path} syntax can be used instead. This has the benefit that should the path disappear in future, a compile failure would result. [1] 0d26ce1c11a1 ("ARM: Phytec phyFLEX i.MX6: delete wrong memory node") Fixes: 1dc748b3b202 ("dts: update to v5.1-rc1") Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/dts/bcm2835-rpi.dts6
-rw-r--r--arch/arm/dts/bcm2836-rpi-2.dts6
-rw-r--r--arch/arm/dts/bcm2837-rpi-3.dts6
-rw-r--r--arch/arm/dts/bcm2837-rpi-cm3.dts6
4 files changed, 12 insertions, 12 deletions
diff --git a/arch/arm/dts/bcm2835-rpi.dts b/arch/arm/dts/bcm2835-rpi.dts
index c23e7c7c14..4f22750801 100644
--- a/arch/arm/dts/bcm2835-rpi.dts
+++ b/arch/arm/dts/bcm2835-rpi.dts
@@ -4,10 +4,10 @@
chosen {
stdout-path = &uart0;
};
+};
- memory {
- reg = <0x0 0x0>;
- };
+&{/memory@0} {
+ reg = <0x0 0x0>;
};
&sdhci {
diff --git a/arch/arm/dts/bcm2836-rpi-2.dts b/arch/arm/dts/bcm2836-rpi-2.dts
index 42b6abb180..c9c3892d6a 100644
--- a/arch/arm/dts/bcm2836-rpi-2.dts
+++ b/arch/arm/dts/bcm2836-rpi-2.dts
@@ -4,8 +4,8 @@
chosen {
stdout-path = &uart0;
};
+};
- memory {
- reg = <0x0 0x0>;
- };
+&{/memory@0} {
+ reg = <0x0 0x0>;
};
diff --git a/arch/arm/dts/bcm2837-rpi-3.dts b/arch/arm/dts/bcm2837-rpi-3.dts
index 420525b9e8..d66beddb22 100644
--- a/arch/arm/dts/bcm2837-rpi-3.dts
+++ b/arch/arm/dts/bcm2837-rpi-3.dts
@@ -4,10 +4,10 @@
chosen {
stdout-path = &uart1;
};
+};
- memory {
- reg = <0x0 0x0>;
- };
+&{/memory@0} {
+ reg = <0x0 0x0>;
};
&sdhci {
diff --git a/arch/arm/dts/bcm2837-rpi-cm3.dts b/arch/arm/dts/bcm2837-rpi-cm3.dts
index 01c1f9a677..85a6ac4661 100644
--- a/arch/arm/dts/bcm2837-rpi-cm3.dts
+++ b/arch/arm/dts/bcm2837-rpi-cm3.dts
@@ -4,8 +4,8 @@
chosen {
stdout-path = &uart0;
};
+};
- memory {
- reg = <0x0 0x0>;
- };
+&{/memory@0} {
+ reg = <0x0 0x0>;
};