brcm2708: add linux 4.19 support
[oweals/openwrt.git] / target / linux / brcm2708 / patches-4.19 / 950-0510-BCM270X_DT-Add-non-removable-clone-of-mmc-node.patch
1 From 5c9796882b256d149d9c9d9da6b374e4c4e7cbaa 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 510/703] 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