1 From c63b13bddf317347ba0b69807c1591526d50ba47 Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.org>
3 Date: Tue, 7 May 2019 14:29:38 +0100
4 Subject: [PATCH] BCM270X_DT: Add non-removable clone of mmc node
6 non-removable is a boolean property, and as such can't be unset by an
7 overlay if it is set in a base DTB. Until now the workaround for this
8 problem has been for overlays to clone non-removable nodes without
9 the offending property, but this involves a lot of unnecessary
10 replication. Instead, add a clone of the mmc node with non-removable
11 already set to the base DTB, selecting the required version using
12 the status properties.
14 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
16 arch/arm/boot/dts/bcm2708-rpi-0-w.dts | 4 +--
17 arch/arm/boot/dts/bcm2708-rpi.dtsi | 3 +-
18 arch/arm/boot/dts/bcm270x.dtsi | 13 ++++++++
19 arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts | 5 ++--
20 arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 5 ++--
21 arch/arm/boot/dts/overlays/mmc-overlay.dts | 7 +++++
22 arch/arm/boot/dts/overlays/sdio-overlay.dts | 33 +++++++--------------
23 7 files changed, 38 insertions(+), 32 deletions(-)
25 --- a/arch/arm/boot/dts/bcm2708-rpi-0-w.dts
26 +++ b/arch/arm/boot/dts/bcm2708-rpi-0-w.dts
41 pinctrl-names = "default";
42 pinctrl-0 = <&sdio_pins>;
47 --- a/arch/arm/boot/dts/bcm2708-rpi.dtsi
48 +++ b/arch/arm/boot/dts/bcm2708-rpi.dtsi
50 sd_force_pio = <&sdhost>,"brcm,force-pio?";
51 sd_pio_limit = <&sdhost>,"brcm,pio-limit:0";
52 sd_debug = <&sdhost>,"brcm,debug";
53 - sdio_overclock = <&mmc>,"brcm,overclock-50:0";
54 + sdio_overclock = <&mmc>,"brcm,overclock-50:0",
55 + <&mmcnr>,"brcm,overclock-50:0";
56 axiperf = <&axiperf>,"status";
59 --- a/arch/arm/boot/dts/bcm270x.dtsi
60 +++ b/arch/arm/boot/dts/bcm270x.dtsi
65 + /* A clone of mmc but with non-removable set */
66 + mmcnr: mmcnr@7e300000 {
67 + compatible = "brcm,bcm2835-mmc", "brcm,bcm2835-sdhci";
68 + reg = <0x7e300000 0x100>;
69 + interrupts = <2 30>;
70 + clocks = <&clocks BCM2835_CLOCK_EMMC>;
72 + dma-names = "rx-tx";
73 + brcm,overclock-50 = <0>;
75 + status = "disabled";
81 --- a/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
82 +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
97 pinctrl-names = "default";
98 pinctrl-0 = <&sdio_pins>;
102 - brcm,overclock-50 = <0>;
106 --- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
107 +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
122 pinctrl-names = "default";
123 pinctrl-0 = <&sdio_pins>;
127 - brcm,overclock-50 = <0>;
131 --- a/arch/arm/boot/dts/overlays/mmc-overlay.dts
132 +++ b/arch/arm/boot/dts/overlays/mmc-overlay.dts
140 + status = "disabled";
145 overclock_50 = <&frag0>,"brcm,overclock-50:0";
147 --- a/arch/arm/boot/dts/overlays/sdio-overlay.dts
148 +++ b/arch/arm/boot/dts/overlays/sdio-overlay.dts
153 -/* Enable SDIO from MMC interface via GPIOs 22-27. Includes sdhost overlay. */
154 +/* Enable SDIO from MMC interface via various GPIO groups */
157 compatible = "brcm,bcm2835";
170 - #address-cells = <1>;
173 - sdio_ovl: sdio@7e300000 {
174 - compatible = "brcm,bcm2835-mmc",
175 - "brcm,bcm2835-sdhci";
176 - reg = <0x7e300000 0x100>;
177 - interrupts = <2 30>;
178 - clocks = <&clocks 28/*BCM2835_CLOCK_EMMC*/>;
180 - dma-names = "rx-tx";
181 - brcm,overclock-50 = <0>;
183 - pinctrl-names = "default";
184 - pinctrl-0 = <&sdio_ovl_pins>;
189 + sdio_ovl: __overlay__ {
190 + pinctrl-0 = <&sdio_ovl_pins>;
191 + pinctrl-names = "default";
200 target-path = "/aliases";
202 - mmc1 = "/soc/sdio@7e300000";
203 + mmc1 = "/soc/mmc@7e300000";