diff options
Diffstat (limited to 'configs/platform-v7a/patches/barebox-2020.06.0/0001-ARM-rpi-dts-fix-MMIO-resources-clash-breaking-boot.patch')
-rw-r--r-- | configs/platform-v7a/patches/barebox-2020.06.0/0001-ARM-rpi-dts-fix-MMIO-resources-clash-breaking-boot.patch | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/configs/platform-v7a/patches/barebox-2020.06.0/0001-ARM-rpi-dts-fix-MMIO-resources-clash-breaking-boot.patch b/configs/platform-v7a/patches/barebox-2020.06.0/0001-ARM-rpi-dts-fix-MMIO-resources-clash-breaking-boot.patch new file mode 100644 index 0000000..20ab6f1 --- /dev/null +++ b/configs/platform-v7a/patches/barebox-2020.06.0/0001-ARM-rpi-dts-fix-MMIO-resources-clash-breaking-boot.patch @@ -0,0 +1,106 @@ +From: Ahmad Fatoum <a.fatoum@pengutronix.de> +Date: Wed, 17 Jun 2020 15:05:58 +0200 +Subject: [PATCH] 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> +--- + arch/arm/dts/bcm2835-rpi.dts | 6 +++--- + arch/arm/dts/bcm2836-rpi-2.dts | 6 +++--- + arch/arm/dts/bcm2837-rpi-3.dts | 6 +++--- + arch/arm/dts/bcm2837-rpi-cm3.dts | 6 +++--- + 4 files changed, 12 insertions(+), 12 deletions(-) + +diff --git a/arch/arm/dts/bcm2835-rpi.dts b/arch/arm/dts/bcm2835-rpi.dts +index c23e7c7c142b..4f227508010b 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 42b6abb180de..c9c3892d6a21 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 420525b9e857..d66beddb2281 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 01c1f9a67714..85a6ac46619a 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>; + }; |