875d8917c26998d1ca771083cd2f0d1e91a09c7c
[openwrt/openwrt.git] / target / linux / brcm2708 / patches-4.19 / 950-0582-arm-dts-Improve-the-bcm27xx-inclusion-hierarchy.patch
1 From d27f2b90df0b787859c2f5665feaecbe87e6b1ff Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.org>
3 Date: Tue, 4 Jun 2019 16:22:22 +0100
4 Subject: [PATCH] arm: dts: Improve the bcm27xx inclusion hierarchy
5
6 1) The top-level .dts files now include parallel chains of bcm27xx.dtsi
7 and bcm27xx-rpi.dtsi files, with no cross-inclusion between the two
8 chains.
9
10 2) Move definitions and deletions to the point of maximum commonality
11 to reduce redundancy.
12
13 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
14 ---
15 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 1 +
16 arch/arm/boot/dts/bcm2708-rpi-b.dts | 1 +
17 arch/arm/boot/dts/bcm2708-rpi-cm.dtsi | 1 +
18 arch/arm/boot/dts/bcm2708-rpi-zero-w.dts | 1 +
19 arch/arm/boot/dts/bcm2708-rpi-zero.dts | 1 +
20 arch/arm/boot/dts/bcm2708-rpi.dtsi | 63 +++++++---------------
21 arch/arm/boot/dts/bcm2708.dtsi | 1 -
22 arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 1 +
23 arch/arm/boot/dts/bcm2709.dtsi | 1 -
24 arch/arm/boot/dts/bcm270x.dtsi | 18 +------
25 arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts | 1 +
26 arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 1 +
27 arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 1 +
28 arch/arm/boot/dts/bcm2710.dtsi | 1 -
29 arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 15 ++++--
30 arch/arm/boot/dts/bcm2711-rpi.dtsi | 7 +++
31 arch/arm/boot/dts/bcm2711.dtsi | 10 ----
32 arch/arm/boot/dts/bcm2835-rpi.dtsi | 16 ++++++
33 arch/arm/boot/dts/bcm2838.dtsi | 33 ++++++++----
34 arch/arm/boot/dts/bcm283x.dtsi | 2 +-
35 20 files changed, 86 insertions(+), 90 deletions(-)
36 create mode 100644 arch/arm/boot/dts/bcm2711-rpi.dtsi
37
38 --- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
39 +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
40 @@ -1,6 +1,7 @@
41 /dts-v1/;
42
43 #include "bcm2708.dtsi"
44 +#include "bcm2708-rpi.dtsi"
45 #include "bcm283x-rpi-smsc9514.dtsi"
46 #include "bcm283x-rpi-csi1-2lane.dtsi"
47
48 --- a/arch/arm/boot/dts/bcm2708-rpi-b.dts
49 +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
50 @@ -1,6 +1,7 @@
51 /dts-v1/;
52
53 #include "bcm2708.dtsi"
54 +#include "bcm2708-rpi.dtsi"
55 #include "bcm283x-rpi-smsc9512.dtsi"
56 #include "bcm283x-rpi-csi1-2lane.dtsi"
57
58 --- a/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
59 +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
60 @@ -1,4 +1,5 @@
61 #include "bcm2708.dtsi"
62 +#include "bcm2708-rpi.dtsi"
63
64 &leds {
65 act_led: act {
66 --- a/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts
67 +++ b/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts
68 @@ -1,6 +1,7 @@
69 /dts-v1/;
70
71 #include "bcm2708.dtsi"
72 +#include "bcm2708-rpi.dtsi"
73 #include "bcm283x-rpi-csi1-2lane.dtsi"
74
75 / {
76 --- a/arch/arm/boot/dts/bcm2708-rpi-zero.dts
77 +++ b/arch/arm/boot/dts/bcm2708-rpi-zero.dts
78 @@ -1,6 +1,7 @@
79 /dts-v1/;
80
81 #include "bcm2708.dtsi"
82 +#include "bcm2708-rpi.dtsi"
83 #include "bcm283x-rpi-csi1-2lane.dtsi"
84
85 / {
86 --- a/arch/arm/boot/dts/bcm2708-rpi.dtsi
87 +++ b/arch/arm/boot/dts/bcm2708-rpi.dtsi
88 @@ -1,6 +1,6 @@
89 -/* Downstream version of bcm2835-rpi.dtsi */
90 +/* Downstream modifications to bcm2835-rpi.dtsi */
91
92 -#include <dt-bindings/power/raspberrypi-power.h>
93 +#include "bcm2835-rpi.dtsi"
94
95 / {
96 memory {
97 @@ -49,29 +49,10 @@
98 reg = <0x7e200000 0x1000>;
99 };
100
101 - firmware: firmware {
102 - compatible = "raspberrypi,bcm2835-firmware", "simple-bus";
103 - #address-cells = <0>;
104 - #size-cells = <0>;
105 - mboxes = <&mailbox>;
106 - };
107 -
108 - power: power {
109 - compatible = "raspberrypi,bcm2835-power";
110 - firmware = <&firmware>;
111 - #power-domain-cells = <1>;
112 - };
113 -
114 fb: fb {
115 compatible = "brcm,bcm2708-fb";
116 firmware = <&firmware>;
117 - status = "disabled";
118 - };
119 -
120 - vchiq: mailbox@7e00b840 {
121 - compatible = "brcm,bcm2835-vchiq";
122 - reg = <0x7e00b840 0x3c>;
123 - interrupts = <0 2>;
124 + status = "okay";
125 };
126
127 vcsm: vcsm {
128 @@ -91,10 +72,6 @@
129 sound: sound {
130 status = "disabled";
131 };
132 -
133 - txp: txp@7e004000 {
134 - status = "disabled";
135 - };
136 };
137
138 __overrides__ {
139 @@ -125,11 +102,23 @@
140 };
141
142 &hdmi {
143 - power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
144 + status = "disabled";
145 };
146
147 -&usb {
148 - power-domains = <&power RPI_POWER_DOMAIN_USB>;
149 +&txp {
150 + status = "disabled";
151 +};
152 +
153 +&i2c0 {
154 + status = "disabled";
155 +};
156 +
157 +&i2c1 {
158 + status = "disabled";
159 +};
160 +
161 +&i2c2 {
162 + status = "disabled";
163 };
164
165 &clocks {
166 @@ -141,16 +130,8 @@ sdhost_pins: &sdhost_gpio48 {
167 };
168
169 &sdhost {
170 - pinctrl-names = "default";
171 - pinctrl-0 = <&sdhost_gpio48>;
172 - bus-width = <4>;
173 brcm,overclock-50 = <0>;
174 brcm,pio-limit = <1>;
175 - status = "okay";
176 -};
177 -
178 -&fb {
179 - status = "okay";
180 };
181
182 &cpu_thermal {
183 @@ -160,11 +141,3 @@ sdhost_pins: &sdhost_gpio48 {
184 &vec {
185 status = "disabled";
186 };
187 -
188 -&csi0 {
189 - power-domains = <&power RPI_POWER_DOMAIN_UNICAM0>;
190 -};
191 -
192 -&csi1 {
193 - power-domains = <&power RPI_POWER_DOMAIN_UNICAM1>;
194 -};
195 --- a/arch/arm/boot/dts/bcm2708.dtsi
196 +++ b/arch/arm/boot/dts/bcm2708.dtsi
197 @@ -1,6 +1,5 @@
198 #include "bcm2835.dtsi"
199 #include "bcm270x.dtsi"
200 -#include "bcm2708-rpi.dtsi"
201
202 / {
203 /delete-node/ cpus;
204 --- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
205 +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
206 @@ -1,6 +1,7 @@
207 /dts-v1/;
208
209 #include "bcm2709.dtsi"
210 +#include "bcm2709-rpi.dtsi"
211 #include "bcm283x-rpi-smsc9514.dtsi"
212 #include "bcm283x-rpi-csi1-2lane.dtsi"
213
214 --- a/arch/arm/boot/dts/bcm2709.dtsi
215 +++ b/arch/arm/boot/dts/bcm2709.dtsi
216 @@ -1,6 +1,5 @@
217 #include "bcm2836.dtsi"
218 #include "bcm270x.dtsi"
219 -#include "bcm2709-rpi.dtsi"
220
221 / {
222 soc {
223 --- a/arch/arm/boot/dts/bcm270x.dtsi
224 +++ b/arch/arm/boot/dts/bcm270x.dtsi
225 @@ -68,7 +68,7 @@
226
227 /delete-node/ sdhci@7e300000;
228
229 - mmc: mmc@7e300000 {
230 + sdhci: mmc: mmc@7e300000 {
231 compatible = "brcm,bcm2835-mmc", "brcm,bcm2835-sdhci";
232 reg = <0x7e300000 0x100>;
233 interrupts = <2 30>;
234 @@ -152,22 +152,6 @@
235 };
236 };
237
238 - vdd_5v0_reg: fixedregulator_5v0 {
239 - compatible = "regulator-fixed";
240 - regulator-name = "5v0";
241 - regulator-min-microvolt = <5000000>;
242 - regulator-max-microvolt = <5000000>;
243 - regulator-always-on;
244 - };
245 -
246 - vdd_3v3_reg: fixedregulator_3v3 {
247 - compatible = "regulator-fixed";
248 - regulator-name = "3v3";
249 - regulator-min-microvolt = <3300000>;
250 - regulator-max-microvolt = <3300000>;
251 - regulator-always-on;
252 - };
253 -
254 __overrides__ {
255 cam0-pwdn-ctrl;
256 cam0-pwdn;
257 --- a/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
258 +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
259 @@ -1,6 +1,7 @@
260 /dts-v1/;
261
262 #include "bcm2710.dtsi"
263 +#include "bcm2709-rpi.dtsi"
264 #include "bcm283x-rpi-lan7515.dtsi"
265 #include "bcm283x-rpi-csi1-2lane.dtsi"
266
267 --- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
268 +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
269 @@ -1,6 +1,7 @@
270 /dts-v1/;
271
272 #include "bcm2710.dtsi"
273 +#include "bcm2709-rpi.dtsi"
274 #include "bcm283x-rpi-smsc9514.dtsi"
275 #include "bcm283x-rpi-csi1-2lane.dtsi"
276
277 --- a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
278 +++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
279 @@ -1,6 +1,7 @@
280 /dts-v1/;
281
282 #include "bcm2710.dtsi"
283 +#include "bcm2709-rpi.dtsi"
284 #include "bcm283x-rpi-csi0-2lane.dtsi"
285 #include "bcm283x-rpi-csi1-4lane.dtsi"
286
287 --- a/arch/arm/boot/dts/bcm2710.dtsi
288 +++ b/arch/arm/boot/dts/bcm2710.dtsi
289 @@ -1,6 +1,5 @@
290 #include "bcm2837.dtsi"
291 #include "bcm270x.dtsi"
292 -#include "bcm2709-rpi.dtsi"
293
294 / {
295 compatible = "brcm,bcm2837", "brcm,bcm2836";
296 --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
297 +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
298 @@ -1,13 +1,12 @@
299 /dts-v1/;
300
301 #include "bcm2711.dtsi"
302 +#include "bcm2711-rpi.dtsi"
303 #include "bcm283x-rpi-csi1-2lane.dtsi"
304
305 / {
306 - compatible = "raspberrypi,4-model-b", "brcm,bcm2838", "brcm,bcm2837";
307 + compatible = "raspberrypi,4-model-b", "brcm,bcm2838";
308 model = "Raspberry Pi 4 Model B";
309 - #address-cells = <2>;
310 - #size-cells = <1>;
311
312 memory {
313 device_type = "memory";
314 @@ -48,10 +47,18 @@
315 };
316
317 &firmware {
318 - expgpio: expgpio {
319 + expgpio: gpio {
320 compatible = "raspberrypi,firmware-gpio";
321 gpio-controller;
322 #gpio-cells = <2>;
323 + gpio-line-names = "BT_ON",
324 + "WL_ON",
325 + "PWR_LED_OFF",
326 + "GLOBAL_RESET",
327 + "VDD_SD_IO_SEL",
328 + "CAM_GPIO",
329 + "",
330 + "";
331 status = "okay";
332 };
333 };
334 --- /dev/null
335 +++ b/arch/arm/boot/dts/bcm2711-rpi.dtsi
336 @@ -0,0 +1,7 @@
337 +#include "bcm2708-rpi.dtsi"
338 +#include "bcm2838-rpi.dtsi"
339 +
340 +&v3d {
341 + /* Undo the overwriting by bcm270x.dtsi */
342 + power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
343 +};
344 --- a/arch/arm/boot/dts/bcm2711.dtsi
345 +++ b/arch/arm/boot/dts/bcm2711.dtsi
346 @@ -1,10 +1,8 @@
347 #include "bcm2838.dtsi"
348 #include "bcm270x.dtsi"
349 -#include "bcm2708-rpi.dtsi"
350
351 / {
352 soc {
353 - /delete-node/ mailbox@7e00b840;
354 /delete-node/ v3d@7ec00000;
355 };
356
357 @@ -17,14 +15,6 @@
358 status = "disabled";
359 };
360
361 -&dma {
362 - brcm,dma-channel-mask = <0x7ef5>;
363 -};
364 -
365 -&txp {
366 - interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
367 -};
368 -
369 &firmwarekms {
370 interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
371 };
372 --- a/arch/arm/boot/dts/bcm2835-rpi.dtsi
373 +++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi
374 @@ -36,6 +36,22 @@
375 interrupts = <0 2>;
376 };
377 };
378 +
379 + vdd_3v3_reg: fixedregulator_3v3 {
380 + compatible = "regulator-fixed";
381 + regulator-name = "3v3";
382 + regulator-min-microvolt = <3300000>;
383 + regulator-max-microvolt = <3300000>;
384 + regulator-always-on;
385 + };
386 +
387 + vdd_5v0_reg: fixedregulator_5v0 {
388 + compatible = "regulator-fixed";
389 + regulator-name = "5v0";
390 + regulator-min-microvolt = <5000000>;
391 + regulator-max-microvolt = <5000000>;
392 + regulator-always-on;
393 + };
394 };
395
396 &gpio {
397 --- a/arch/arm/boot/dts/bcm2838.dtsi
398 +++ b/arch/arm/boot/dts/bcm2838.dtsi
399 @@ -5,7 +5,10 @@
400 #include <dt-bindings/soc/bcm2835-pm.h>
401
402 / {
403 - compatible = "brcm,bcm2838", "brcm,bcm2837";
404 + compatible = "brcm,bcm2838";
405 +
406 + #address-cells = <2>;
407 + #size-cells = <1>;
408
409 interrupt-parent = <&gicv2>;
410
411 @@ -16,8 +19,8 @@
412 /* Emulate a contiguous 30-bit address range for DMA */
413 dma-ranges = <0xc0000000 0x0 0x00000000 0x3c000000>;
414
415 - /delete-node/ mailbox@7e00b840;
416 /delete-node/ interrupt-controller@7e00f300;
417 + /delete-node/ v3d@7ec00000;
418
419 local_intc: local_intc@40000000 {
420 compatible = "brcm,bcm2836-l1-intc";
421 @@ -191,6 +194,16 @@
422 interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
423 };
424
425 + pwm1: pwm@7e20c800 {
426 + compatible = "brcm,bcm2835-pwm";
427 + reg = <0x7e20c800 0x28>;
428 + clocks = <&clocks BCM2835_CLOCK_PWM>;
429 + assigned-clocks = <&clocks BCM2835_CLOCK_PWM>;
430 + assigned-clock-rates = <10000000>;
431 + #pwm-cells = <2>;
432 + status = "disabled";
433 + };
434 +
435 emmc2: emmc2@7e340000 {
436 compatible = "brcm,bcm2711-emmc2";
437 status = "okay";
438 @@ -385,7 +398,7 @@
439 "dma13",
440 "dma14";
441 #dma-cells = <1>;
442 - brcm,dma-channel-mask = <0x7000>;
443 + brcm,dma-channel-mask = <0x7800>;
444 };
445 /* DMA4 - 40 bit DMA engines */
446
447 @@ -396,12 +409,6 @@
448 interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
449 };
450
451 - vchiq: mailbox@7e00b840 {
452 - compatible = "brcm,bcm2838-vchiq";
453 - reg = <0 0x7e00b840 0x3c>;
454 - interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
455 - };
456 -
457 hevc-decoder@7eb00000 {
458 compatible = "raspberrypi,argon-hevc-decoder";
459 reg = <0x0 0x7eb00000 0x10000>;
460 @@ -450,6 +457,8 @@
461 };
462
463 &gpio {
464 + compatible = "brcm,bcm2838-gpio", "brcm,bcm2835-gpio";
465 +
466 gpclk0_gpio49: gpclk0_gpio49 {
467 brcm,pins = <49>;
468 brcm,function = <BCM2835_FSEL_ALT1>;
469 @@ -729,5 +738,9 @@
470 "dma8",
471 "dma9",
472 "dma10";
473 - brcm,dma-channel-mask = <0x01f5>;
474 + brcm,dma-channel-mask = <0x07f5>;
475 +};
476 +
477 +&txp {
478 + interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
479 };
480 --- a/arch/arm/boot/dts/bcm283x.dtsi
481 +++ b/arch/arm/boot/dts/bcm283x.dtsi
482 @@ -55,7 +55,7 @@
483 #address-cells = <1>;
484 #size-cells = <1>;
485
486 - txp@7e004000 {
487 + txp: txp@7e004000 {
488 compatible = "brcm,bcm2835-txp";
489 reg = <0x7e004000 0x20>;
490 interrupts = <1 11>;