brcm2708: rename target to bcm27xx
[openwrt/staging/wigyori.git] / target / linux / bcm27xx / patches-4.19 / 950-0433-BCM270X_DT-Add-non-removable-clone-of-mmc-node.patch
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
5
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.
13
14 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
15 ---
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(-)
24
25 --- a/arch/arm/boot/dts/bcm2708-rpi-0-w.dts
26 +++ b/arch/arm/boot/dts/bcm2708-rpi-0-w.dts
27 @@ -14,6 +14,7 @@
28 aliases {
29 serial0 = &uart1;
30 serial1 = &uart0;
31 + mmc1 = &mmcnr;
32 };
33 };
34
35 @@ -73,10 +74,9 @@
36 };
37 };
38
39 -&mmc {
40 +&mmcnr {
41 pinctrl-names = "default";
42 pinctrl-0 = <&sdio_pins>;
43 - non-removable;
44 bus-width = <4>;
45 status = "okay";
46 };
47 --- a/arch/arm/boot/dts/bcm2708-rpi.dtsi
48 +++ b/arch/arm/boot/dts/bcm2708-rpi.dtsi
49 @@ -118,7 +118,8 @@
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";
57 };
58 };
59 --- a/arch/arm/boot/dts/bcm270x.dtsi
60 +++ b/arch/arm/boot/dts/bcm270x.dtsi
61 @@ -79,6 +79,19 @@
62 status = "disabled";
63 };
64
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>;
71 + dmas = <&dma 11>;
72 + dma-names = "rx-tx";
73 + brcm,overclock-50 = <0>;
74 + non-removable;
75 + status = "disabled";
76 + };
77 +
78 hvs: hvs@7e400000 {
79 /* Add alias */
80 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
83 @@ -15,6 +15,7 @@
84 aliases {
85 serial0 = &uart1;
86 serial1 = &uart0;
87 + mmc1 = &mmcnr;
88 };
89 };
90
91 @@ -74,13 +75,11 @@
92 };
93 };
94
95 -&mmc {
96 +&mmcnr {
97 pinctrl-names = "default";
98 pinctrl-0 = <&sdio_pins>;
99 - non-removable;
100 bus-width = <4>;
101 status = "okay";
102 - brcm,overclock-50 = <0>;
103 };
104
105 &firmware {
106 --- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
107 +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
108 @@ -15,6 +15,7 @@
109 aliases {
110 serial0 = &uart1;
111 serial1 = &uart0;
112 + mmc1 = &mmcnr;
113 };
114 };
115
116 @@ -74,13 +75,11 @@
117 };
118 };
119
120 -&mmc {
121 +&mmcnr {
122 pinctrl-names = "default";
123 pinctrl-0 = <&sdio_pins>;
124 - non-removable;
125 bus-width = <4>;
126 status = "okay";
127 - brcm,overclock-50 = <0>;
128 };
129
130 &soc {
131 --- a/arch/arm/boot/dts/overlays/mmc-overlay.dts
132 +++ b/arch/arm/boot/dts/overlays/mmc-overlay.dts
133 @@ -33,6 +33,13 @@
134 };
135 };
136
137 + fragment@3 {
138 + target = <&mmcnr>;
139 + __overlay__ {
140 + status = "disabled";
141 + };
142 + };
143 +
144 __overrides__ {
145 overclock_50 = <&frag0>,"brcm,overclock-50:0";
146 };
147 --- a/arch/arm/boot/dts/overlays/sdio-overlay.dts
148 +++ b/arch/arm/boot/dts/overlays/sdio-overlay.dts
149 @@ -1,39 +1,26 @@
150 /dts-v1/;
151 /plugin/;
152
153 -/* Enable SDIO from MMC interface via GPIOs 22-27. Includes sdhost overlay. */
154 +/* Enable SDIO from MMC interface via various GPIO groups */
155
156 /{
157 compatible = "brcm,bcm2835";
158
159 fragment@0 {
160 - target = <&mmc>;
161 + target = <&mmcnr>;
162 __overlay__ {
163 status = "disabled";
164 };
165 };
166
167 fragment@1 {
168 - target = <&soc>;
169 - __overlay__ {
170 - #address-cells = <1>;
171 - #size-cells = <1>;
172 -
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*/>;
179 - dmas = <&dma 11>;
180 - dma-names = "rx-tx";
181 - brcm,overclock-50 = <0>;
182 - status = "okay";
183 - pinctrl-names = "default";
184 - pinctrl-0 = <&sdio_ovl_pins>;
185 - non-removable;
186 - bus-width = <4>;
187 - };
188 + target = <&mmc>;
189 + sdio_ovl: __overlay__ {
190 + pinctrl-0 = <&sdio_ovl_pins>;
191 + pinctrl-names = "default";
192 + non-removable;
193 + bus-width = <4>;
194 + status = "okay";
195 };
196 };
197
198 @@ -75,7 +62,7 @@
199 fragment@6 {
200 target-path = "/aliases";
201 __overlay__ {
202 - mmc1 = "/soc/sdio@7e300000";
203 + mmc1 = "/soc/mmc@7e300000";
204 };
205 };
206