hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/arch/arm/boot/dts/sun8i-v3s.dtsi
....@@ -43,11 +43,27 @@
4343 #include <dt-bindings/interrupt-controller/arm-gic.h>
4444 #include <dt-bindings/clock/sun8i-v3s-ccu.h>
4545 #include <dt-bindings/reset/sun8i-v3s-ccu.h>
46
+#include <dt-bindings/clock/sun8i-de2.h>
4647
4748 / {
4849 #address-cells = <1>;
4950 #size-cells = <1>;
5051 interrupt-parent = <&gic>;
52
+
53
+ chosen {
54
+ #address-cells = <1>;
55
+ #size-cells = <1>;
56
+ ranges;
57
+
58
+ framebuffer-lcd {
59
+ compatible = "allwinner,simple-framebuffer",
60
+ "simple-framebuffer";
61
+ allwinner,pipeline = "mixer0-lcd0";
62
+ clocks = <&display_clocks CLK_MIXER0>,
63
+ <&ccu CLK_TCON0>;
64
+ status = "disabled";
65
+ };
66
+ };
5167
5268 cpus {
5369 #address-cells = <1>;
....@@ -84,6 +100,7 @@
84100 #clock-cells = <0>;
85101 compatible = "fixed-clock";
86102 clock-frequency = <24000000>;
103
+ clock-accuracy = <50000>;
87104 clock-output-names = "osc24M";
88105 };
89106
....@@ -91,7 +108,8 @@
91108 #clock-cells = <0>;
92109 compatible = "fixed-clock";
93110 clock-frequency = <32768>;
94
- clock-output-names = "osc32k";
111
+ clock-accuracy = <50000>;
112
+ clock-output-names = "ext-osc32k";
95113 };
96114 };
97115
....@@ -103,11 +121,11 @@
103121
104122 display_clocks: clock@1000000 {
105123 compatible = "allwinner,sun8i-v3s-de2-clk";
106
- reg = <0x01000000 0x100000>;
107
- clocks = <&ccu CLK_DE>,
108
- <&ccu CLK_BUS_DE>;
109
- clock-names = "mod",
110
- "bus";
124
+ reg = <0x01000000 0x10000>;
125
+ clocks = <&ccu CLK_BUS_DE>,
126
+ <&ccu CLK_DE>;
127
+ clock-names = "bus",
128
+ "mod";
111129 resets = <&ccu RST_BUS_DE>;
112130 #clock-cells = <1>;
113131 #reset-cells = <1>;
....@@ -121,24 +139,28 @@
121139 clock-names = "bus",
122140 "mod";
123141 resets = <&display_clocks 0>;
124
- assigned-clocks = <&display_clocks 6>;
125
- assigned-clock-rates = <150000000>;
126142
127143 ports {
128144 #address-cells = <1>;
129145 #size-cells = <0>;
130146
131147 mixer0_out: port@1 {
132
- #address-cells = <1>;
133
- #size-cells = <0>;
134148 reg = <1>;
135149
136
- mixer0_out_tcon0: endpoint@0 {
137
- reg = <0>;
150
+ mixer0_out_tcon0: endpoint {
138151 remote-endpoint = <&tcon0_in_mixer0>;
139152 };
140153 };
141154 };
155
+ };
156
+
157
+ syscon: system-control@1c00000 {
158
+ compatible = "allwinner,sun8i-v3s-system-control",
159
+ "allwinner,sun8i-h3-system-control";
160
+ reg = <0x01c00000 0x1000>;
161
+ #address-cells = <1>;
162
+ #size-cells = <1>;
163
+ ranges;
142164 };
143165
144166 tcon0: lcd-controller@1c0c000 {
....@@ -150,6 +172,7 @@
150172 clock-names = "ahb",
151173 "tcon-ch0";
152174 clock-output-names = "tcon-pixel-clock";
175
+ #clock-cells = <0>;
153176 resets = <&ccu RST_BUS_TCON0>;
154177 reset-names = "lcd";
155178 status = "disabled";
....@@ -159,12 +182,9 @@
159182 #size-cells = <0>;
160183
161184 tcon0_in: port@0 {
162
- #address-cells = <1>;
163
- #size-cells = <0>;
164185 reg = <0>;
165186
166
- tcon0_in_mixer0: endpoint@0 {
167
- reg = <0>;
187
+ tcon0_in_mixer0: endpoint {
168188 remote-endpoint = <&mixer0_out_tcon0>;
169189 };
170190 };
....@@ -192,6 +212,8 @@
192212 resets = <&ccu RST_BUS_MMC0>;
193213 reset-names = "ahb";
194214 interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
215
+ pinctrl-names = "default";
216
+ pinctrl-0 = <&mmc0_pins>;
195217 status = "disabled";
196218 #address-cells = <1>;
197219 #size-cells = <0>;
....@@ -237,6 +259,17 @@
237259 #size-cells = <0>;
238260 };
239261
262
+ crypto@1c15000 {
263
+ compatible = "allwinner,sun8i-v3s-crypto",
264
+ "allwinner,sun8i-a33-crypto";
265
+ reg = <0x01c15000 0x1000>;
266
+ interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
267
+ clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
268
+ clock-names = "ahb", "mod";
269
+ resets = <&ccu RST_BUS_CE>;
270
+ reset-names = "ahb";
271
+ };
272
+
240273 usb_otg: usb@1c19000 {
241274 compatible = "allwinner,sun8i-h3-musb";
242275 reg = <0x01c19000 0x0400>;
....@@ -267,17 +300,20 @@
267300 ccu: clock@1c20000 {
268301 compatible = "allwinner,sun8i-v3s-ccu";
269302 reg = <0x01c20000 0x400>;
270
- clocks = <&osc24M>, <&osc32k>;
303
+ clocks = <&osc24M>, <&rtc 0>;
271304 clock-names = "hosc", "losc";
272305 #clock-cells = <1>;
273306 #reset-cells = <1>;
274307 };
275308
276309 rtc: rtc@1c20400 {
277
- compatible = "allwinner,sun6i-a31-rtc";
310
+ #clock-cells = <1>;
311
+ compatible = "allwinner,sun8i-v3-rtc";
278312 reg = <0x01c20400 0x54>;
279313 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
280314 <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
315
+ clocks = <&osc32k>;
316
+ clock-output-names = "osc32k", "osc32k-out";
281317 };
282318
283319 pio: pinctrl@1c20800 {
....@@ -285,21 +321,46 @@
285321 reg = <0x01c20800 0x400>;
286322 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
287323 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
288
- clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&osc32k>;
324
+ clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&rtc 0>;
289325 clock-names = "apb", "hosc", "losc";
290326 gpio-controller;
291327 #gpio-cells = <3>;
292328 interrupt-controller;
293329 #interrupt-cells = <3>;
294330
331
+ /omit-if-no-ref/
332
+ csi1_8bit_pins: csi1-8bit-pins {
333
+ pins = "PE0", "PE2", "PE3", "PE8", "PE9",
334
+ "PE10", "PE11", "PE12", "PE13", "PE14",
335
+ "PE15";
336
+ function = "csi";
337
+ };
338
+
339
+ /omit-if-no-ref/
340
+ csi1_mclk_pin: csi1-mclk-pin {
341
+ pins = "PE1";
342
+ function = "csi";
343
+ };
344
+
295345 i2c0_pins: i2c0-pins {
296346 pins = "PB6", "PB7";
297347 function = "i2c0";
298348 };
299349
350
+ /omit-if-no-ref/
351
+ i2c1_pe_pins: i2c1-pe-pins {
352
+ pins = "PE21", "PE22";
353
+ function = "i2c1";
354
+ };
355
+
300356 uart0_pb_pins: uart0-pb-pins {
301357 pins = "PB8", "PB9";
302358 function = "uart0";
359
+ };
360
+
361
+ uart2_pins: uart2-pins {
362
+ pins = "PB0", "PB1";
363
+ function = "uart2";
303364 };
304365
305366 mmc0_pins: mmc0-pins {
....@@ -325,10 +386,11 @@
325386 };
326387
327388 timer@1c20c00 {
328
- compatible = "allwinner,sun4i-a10-timer";
389
+ compatible = "allwinner,sun8i-v3s-timer";
329390 reg = <0x01c20c00 0xa0>;
330391 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
331
- <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
392
+ <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
393
+ <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
332394 clocks = <&osc24M>;
333395 };
334396
....@@ -336,6 +398,7 @@
336398 compatible = "allwinner,sun6i-a31-wdt";
337399 reg = <0x01c20ca0 0x20>;
338400 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
401
+ clocks = <&osc24M>;
339402 };
340403
341404 lradc: lradc@1c22800 {
....@@ -375,6 +438,8 @@
375438 reg-io-width = <4>;
376439 clocks = <&ccu CLK_BUS_UART2>;
377440 resets = <&ccu RST_BUS_UART2>;
441
+ pinctrl-0 = <&uart2_pins>;
442
+ pinctrl-names = "default";
378443 status = "disabled";
379444 };
380445
....@@ -402,6 +467,49 @@
402467 #size-cells = <0>;
403468 };
404469
470
+ emac: ethernet@1c30000 {
471
+ compatible = "allwinner,sun8i-v3s-emac";
472
+ syscon = <&syscon>;
473
+ reg = <0x01c30000 0x10000>;
474
+ interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
475
+ interrupt-names = "macirq";
476
+ resets = <&ccu RST_BUS_EMAC>;
477
+ reset-names = "stmmaceth";
478
+ clocks = <&ccu CLK_BUS_EMAC>;
479
+ clock-names = "stmmaceth";
480
+ phy-handle = <&int_mii_phy>;
481
+ phy-mode = "mii";
482
+ status = "disabled";
483
+
484
+ mdio: mdio {
485
+ #address-cells = <1>;
486
+ #size-cells = <0>;
487
+ compatible = "snps,dwmac-mdio";
488
+ };
489
+
490
+ mdio_mux: mdio-mux {
491
+ compatible = "allwinner,sun8i-h3-mdio-mux";
492
+ #address-cells = <1>;
493
+ #size-cells = <0>;
494
+
495
+ mdio-parent-bus = <&mdio>;
496
+ /* Only one MDIO is usable at the time */
497
+ internal_mdio: mdio@1 {
498
+ compatible = "allwinner,sun8i-h3-mdio-internal";
499
+ reg = <1>;
500
+ #address-cells = <1>;
501
+ #size-cells = <0>;
502
+
503
+ int_mii_phy: ethernet-phy@1 {
504
+ compatible = "ethernet-phy-ieee802.3-c22";
505
+ reg = <1>;
506
+ clocks = <&ccu CLK_BUS_EPHY>;
507
+ resets = <&ccu RST_BUS_EPHY>;
508
+ };
509
+ };
510
+ };
511
+ };
512
+
405513 spi0: spi@1c68000 {
406514 compatible = "allwinner,sun8i-h3-spi";
407515 reg = <0x01c68000 0x1000>;
....@@ -417,7 +525,7 @@
417525 };
418526
419527 gic: interrupt-controller@1c81000 {
420
- compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
528
+ compatible = "arm,gic-400";
421529 reg = <0x01c81000 0x1000>,
422530 <0x01c82000 0x2000>,
423531 <0x01c84000 0x2000>,
....@@ -426,5 +534,17 @@
426534 #interrupt-cells = <3>;
427535 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
428536 };
537
+
538
+ csi1: camera@1cb4000 {
539
+ compatible = "allwinner,sun8i-v3s-csi";
540
+ reg = <0x01cb4000 0x3000>;
541
+ interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
542
+ clocks = <&ccu CLK_BUS_CSI>,
543
+ <&ccu CLK_CSI1_SCLK>,
544
+ <&ccu CLK_DRAM_CSI>;
545
+ clock-names = "bus", "mod", "ram";
546
+ resets = <&ccu RST_BUS_CSI>;
547
+ status = "disabled";
548
+ };
429549 };
430550 };