blob: 83f98bd75ee6f33ef142986141df2ccbf5c9b684 [file] [log] [blame]
Icenowy Zhenge54be322018-03-16 22:02:14 +08001// SPDX-License-Identifier: (GPL-2.0+ or MIT)
2/*
3 * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io>
4 */
5
6#include <dt-bindings/interrupt-controller/arm-gic.h>
Icenowy Zheng95beb932018-04-03 21:40:24 +08007#include <dt-bindings/clock/sun50i-h6-ccu.h>
Chen-Yu Tsaide2b5552018-07-13 00:04:51 +08008#include <dt-bindings/clock/sun50i-h6-r-ccu.h>
Jernej Skrabec209065c2018-11-04 19:27:04 +01009#include <dt-bindings/clock/sun8i-de2.h>
10#include <dt-bindings/clock/sun8i-tcon-top.h>
Icenowy Zheng95beb932018-04-03 21:40:24 +080011#include <dt-bindings/reset/sun50i-h6-ccu.h>
Chen-Yu Tsaide2b5552018-07-13 00:04:51 +080012#include <dt-bindings/reset/sun50i-h6-r-ccu.h>
Jernej Skrabec209065c2018-11-04 19:27:04 +010013#include <dt-bindings/reset/sun8i-de2.h>
Icenowy Zhenge54be322018-03-16 22:02:14 +080014
15/ {
16 interrupt-parent = <&gic>;
17 #address-cells = <1>;
18 #size-cells = <1>;
19
20 cpus {
21 #address-cells = <1>;
22 #size-cells = <0>;
23
24 cpu0: cpu@0 {
Rob Herring31af04c2019-01-14 11:45:33 -060025 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080026 device_type = "cpu";
27 reg = <0>;
28 enable-method = "psci";
29 };
30
31 cpu1: cpu@1 {
Rob Herring31af04c2019-01-14 11:45:33 -060032 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080033 device_type = "cpu";
34 reg = <1>;
35 enable-method = "psci";
36 };
37
38 cpu2: cpu@2 {
Rob Herring31af04c2019-01-14 11:45:33 -060039 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080040 device_type = "cpu";
41 reg = <2>;
42 enable-method = "psci";
43 };
44
45 cpu3: cpu@3 {
Rob Herring31af04c2019-01-14 11:45:33 -060046 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080047 device_type = "cpu";
48 reg = <3>;
49 enable-method = "psci";
50 };
51 };
52
Jernej Skrabec209065c2018-11-04 19:27:04 +010053 de: display-engine {
54 compatible = "allwinner,sun50i-h6-display-engine";
55 allwinner,pipelines = <&mixer0>;
56 status = "disabled";
57 };
58
Icenowy Zhenge54be322018-03-16 22:02:14 +080059 osc24M: osc24M_clk {
60 #clock-cells = <0>;
61 compatible = "fixed-clock";
62 clock-frequency = <24000000>;
63 clock-output-names = "osc24M";
64 };
65
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +020066 ext_osc32k: ext_osc32k_clk {
Icenowy Zhenge54be322018-03-16 22:02:14 +080067 #clock-cells = <0>;
68 compatible = "fixed-clock";
69 clock-frequency = <32768>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +020070 clock-output-names = "ext_osc32k";
Icenowy Zhenge54be322018-03-16 22:02:14 +080071 };
72
Andre Przywara7aa9b9e2019-11-21 01:18:33 +000073 pmu {
74 compatible = "arm,cortex-a53-pmu",
75 "arm,armv8-pmuv3";
76 interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>,
77 <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
78 <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
79 <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
80 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
81 };
82
Icenowy Zhenge54be322018-03-16 22:02:14 +080083 psci {
84 compatible = "arm,psci-0.2";
85 method = "smc";
86 };
87
88 timer {
89 compatible = "arm,armv8-timer";
90 interrupts = <GIC_PPI 13
91 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
92 <GIC_PPI 14
93 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
94 <GIC_PPI 11
95 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
96 <GIC_PPI 10
97 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
98 };
99
100 soc {
101 compatible = "simple-bus";
102 #address-cells = <1>;
103 #size-cells = <1>;
104 ranges;
105
Maxime Ripard275b6312019-04-16 10:57:46 +0200106 bus@1000000 {
Jernej Skrabec209065c2018-11-04 19:27:04 +0100107 compatible = "allwinner,sun50i-h6-de3",
108 "allwinner,sun50i-a64-de2";
109 reg = <0x1000000 0x400000>;
110 allwinner,sram = <&de2_sram 1>;
111 #address-cells = <1>;
112 #size-cells = <1>;
113 ranges = <0 0x1000000 0x400000>;
114
115 display_clocks: clock@0 {
116 compatible = "allwinner,sun50i-h6-de3-clk";
117 reg = <0x0 0x10000>;
118 clocks = <&ccu CLK_DE>,
119 <&ccu CLK_BUS_DE>;
120 clock-names = "mod",
121 "bus";
122 resets = <&ccu RST_BUS_DE>;
123 #clock-cells = <1>;
124 #reset-cells = <1>;
125 };
126
127 mixer0: mixer@100000 {
128 compatible = "allwinner,sun50i-h6-de3-mixer-0";
129 reg = <0x100000 0x100000>;
130 clocks = <&display_clocks CLK_BUS_MIXER0>,
131 <&display_clocks CLK_MIXER0>;
132 clock-names = "bus",
133 "mod";
134 resets = <&display_clocks RST_MIXER0>;
135
136 ports {
137 #address-cells = <1>;
138 #size-cells = <0>;
139
140 mixer0_out: port@1 {
141 reg = <1>;
142
143 mixer0_out_tcon_top_mixer0: endpoint {
144 remote-endpoint = <&tcon_top_mixer0_in_mixer0>;
145 };
146 };
147 };
148 };
149 };
150
Jernej Skrabecb5425702019-01-28 21:55:04 +0100151 video-codec@1c0e000 {
152 compatible = "allwinner,sun50i-h6-video-engine";
153 reg = <0x01c0e000 0x2000>;
154 clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
155 <&ccu CLK_MBUS_VE>;
156 clock-names = "ahb", "mod", "ram";
157 resets = <&ccu RST_BUS_VE>;
158 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
159 allwinner,sram = <&ve_sram 1>;
160 };
161
Clément Péron4acc24b2019-10-30 16:07:41 +0100162 gpu: gpu@1800000 {
163 compatible = "allwinner,sun50i-h6-mali",
164 "arm,mali-t720";
165 reg = <0x01800000 0x4000>;
166 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
167 <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
168 <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
169 interrupt-names = "job", "mmu", "gpu";
170 clocks = <&ccu CLK_GPU>, <&ccu CLK_BUS_GPU>;
171 clock-names = "core", "bus";
172 resets = <&ccu RST_BUS_GPU>;
173 status = "disabled";
174 };
175
Corentin Labbe709b86f2019-10-23 22:05:10 +0200176 crypto: crypto@1904000 {
177 compatible = "allwinner,sun50i-h6-crypto";
178 reg = <0x01904000 0x1000>;
179 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
180 clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>, <&ccu CLK_MBUS_CE>;
181 clock-names = "bus", "mod", "ram";
182 resets = <&ccu RST_BUS_CE>;
183 };
184
Icenowy Zhengb2ad66f2018-09-02 09:26:18 +0200185 syscon: syscon@3000000 {
186 compatible = "allwinner,sun50i-h6-system-control",
187 "allwinner,sun50i-a64-system-control";
188 reg = <0x03000000 0x1000>;
189 #address-cells = <1>;
190 #size-cells = <1>;
191 ranges;
192
193 sram_c: sram@28000 {
194 compatible = "mmio-sram";
195 reg = <0x00028000 0x1e000>;
196 #address-cells = <1>;
197 #size-cells = <1>;
198 ranges = <0 0x00028000 0x1e000>;
199
200 de2_sram: sram-section@0 {
201 compatible = "allwinner,sun50i-h6-sram-c",
202 "allwinner,sun50i-a64-sram-c";
203 reg = <0x0000 0x1e000>;
204 };
205 };
Jernej Skrabec24dd8ae2019-01-28 21:55:03 +0100206
207 sram_c1: sram@1a00000 {
208 compatible = "mmio-sram";
209 reg = <0x01a00000 0x200000>;
210 #address-cells = <1>;
211 #size-cells = <1>;
212 ranges = <0 0x01a00000 0x200000>;
213
214 ve_sram: sram-section@0 {
215 compatible = "allwinner,sun50i-h6-sram-c1",
216 "allwinner,sun4i-a10-sram-c1";
217 reg = <0x000000 0x200000>;
218 };
219 };
Icenowy Zhengb2ad66f2018-09-02 09:26:18 +0200220 };
221
Icenowy Zhenge54be322018-03-16 22:02:14 +0800222 ccu: clock@3001000 {
223 compatible = "allwinner,sun50i-h6-ccu";
224 reg = <0x03001000 0x1000>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200225 clocks = <&osc24M>, <&rtc 0>, <&rtc 2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800226 clock-names = "hosc", "losc", "iosc";
227 #clock-cells = <1>;
228 #reset-cells = <1>;
229 };
230
Jernej Skrabec91646652019-06-11 23:40:55 +0200231 dma: dma-controller@3002000 {
232 compatible = "allwinner,sun50i-h6-dma";
233 reg = <0x03002000 0x1000>;
234 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
235 clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>;
236 clock-names = "bus", "mbus";
237 dma-channels = <16>;
238 dma-requests = <46>;
239 resets = <&ccu RST_BUS_DMA>;
240 #dma-cells = <1>;
241 };
242
Maxime Ripard042c8052019-07-22 16:08:17 +0200243 sid: efuse@3006000 {
Yangtao Lifcf041f2019-04-04 13:01:46 -0400244 compatible = "allwinner,sun50i-h6-sid";
245 reg = <0x03006000 0x400>;
246 };
247
Clément Péronb6cebb12019-05-23 17:10:48 +0200248 watchdog: watchdog@30090a0 {
249 compatible = "allwinner,sun50i-h6-wdt",
250 "allwinner,sun6i-a31-wdt";
251 reg = <0x030090a0 0x20>;
252 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard9e1975f2019-08-21 16:38:35 +0200253 clocks = <&osc24M>;
Clément Péronb6cebb12019-05-23 17:10:48 +0200254 /* Broken on some H6 boards */
255 status = "disabled";
256 };
257
Jernej Skrabec88432f52019-11-19 18:53:18 +0100258 pwm: pwm@300a000 {
259 compatible = "allwinner,sun50i-h6-pwm";
260 reg = <0x0300a000 0x400>;
261 clocks = <&osc24M>, <&ccu CLK_BUS_PWM>;
262 clock-names = "mod", "bus";
263 resets = <&ccu RST_BUS_PWM>;
264 #pwm-cells = <3>;
265 status = "disabled";
266 };
267
Icenowy Zhenge54be322018-03-16 22:02:14 +0800268 pio: pinctrl@300b000 {
269 compatible = "allwinner,sun50i-h6-pinctrl";
270 reg = <0x0300b000 0x400>;
271 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
272 <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
273 <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
274 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200275 clocks = <&ccu CLK_APB1>, <&osc24M>, <&rtc 0>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800276 clock-names = "apb", "hosc", "losc";
277 gpio-controller;
278 #gpio-cells = <3>;
279 interrupt-controller;
280 #interrupt-cells = <3>;
281
Maxime Ripard54eac67b2019-03-25 14:52:51 +0100282 ext_rgmii_pins: rgmii-pins {
Icenowy Zhengc8ced552018-11-03 20:32:37 +0800283 pins = "PD0", "PD1", "PD2", "PD3", "PD4",
284 "PD5", "PD7", "PD8", "PD9", "PD10",
285 "PD11", "PD12", "PD13", "PD19", "PD20";
286 function = "emac";
287 drive-strength = <40>;
288 };
289
Jernej Skrabec209065c2018-11-04 19:27:04 +0100290 hdmi_pins: hdmi-pins {
291 pins = "PH8", "PH9", "PH10";
292 function = "hdmi";
293 };
294
Bhushan Shah89336e12019-08-16 14:13:09 +0530295 i2c0_pins: i2c0-pins {
296 pins = "PD25", "PD26";
297 function = "i2c0";
298 };
299
300 i2c1_pins: i2c1-pins {
301 pins = "PH5", "PH6";
302 function = "i2c1";
303 };
304
305 i2c2_pins: i2c2-pins {
306 pins = "PD23", "PD24";
307 function = "i2c2";
308 };
309
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800310 mmc0_pins: mmc0-pins {
311 pins = "PF0", "PF1", "PF2", "PF3",
312 "PF4", "PF5";
313 function = "mmc0";
314 drive-strength = <30>;
315 bias-pull-up;
316 };
317
Ondrej Jirman7cf875b2019-04-13 18:54:18 +0200318 /omit-if-no-ref/
319 mmc1_pins: mmc1-pins {
320 pins = "PG0", "PG1", "PG2", "PG3",
321 "PG4", "PG5";
322 function = "mmc1";
323 drive-strength = <30>;
324 bias-pull-up;
325 };
326
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800327 mmc2_pins: mmc2-pins {
328 pins = "PC1", "PC4", "PC5", "PC6",
329 "PC7", "PC8", "PC9", "PC10",
330 "PC11", "PC12", "PC13", "PC14";
331 function = "mmc2";
332 drive-strength = <30>;
333 bias-pull-up;
334 };
335
Clément Péronf95b5982019-08-12 12:51:14 +0200336 spdif_tx_pin: spdif-tx-pin {
337 pins = "PH7";
338 function = "spdif";
339 };
340
Maxime Ripard54eac67b2019-03-25 14:52:51 +0100341 uart0_ph_pins: uart0-ph-pins {
Icenowy Zhenge54be322018-03-16 22:02:14 +0800342 pins = "PH0", "PH1";
343 function = "uart0";
344 };
Ondrej Jirmancd380e02019-10-07 22:31:51 +0200345
346 uart1_pins: uart1-pins {
347 pins = "PG6", "PG7";
348 function = "uart1";
349 };
350
351 uart1_rts_cts_pins: uart1-rts-cts-pins {
352 pins = "PG8", "PG9";
353 function = "uart1";
354 };
Icenowy Zhenge54be322018-03-16 22:02:14 +0800355 };
356
Chen-Yu Tsai52d9bcb2019-01-28 00:39:30 +0800357 gic: interrupt-controller@3021000 {
358 compatible = "arm,gic-400";
359 reg = <0x03021000 0x1000>,
360 <0x03022000 0x2000>,
361 <0x03024000 0x2000>,
362 <0x03026000 0x2000>;
363 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
364 interrupt-controller;
365 #interrupt-cells = <3>;
366 };
367
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800368 mmc0: mmc@4020000 {
369 compatible = "allwinner,sun50i-h6-mmc",
370 "allwinner,sun50i-a64-mmc";
371 reg = <0x04020000 0x1000>;
372 clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
373 clock-names = "ahb", "mmc";
374 resets = <&ccu RST_BUS_MMC0>;
375 reset-names = "ahb";
376 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
Clément Péron6ba2e452019-04-08 17:27:50 +0200377 pinctrl-names = "default";
378 pinctrl-0 = <&mmc0_pins>;
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800379 status = "disabled";
380 #address-cells = <1>;
381 #size-cells = <0>;
382 };
383
384 mmc1: mmc@4021000 {
385 compatible = "allwinner,sun50i-h6-mmc",
386 "allwinner,sun50i-a64-mmc";
387 reg = <0x04021000 0x1000>;
388 clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
389 clock-names = "ahb", "mmc";
390 resets = <&ccu RST_BUS_MMC1>;
391 reset-names = "ahb";
392 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
Ondrej Jirman7cf875b2019-04-13 18:54:18 +0200393 pinctrl-names = "default";
394 pinctrl-0 = <&mmc1_pins>;
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800395 status = "disabled";
396 #address-cells = <1>;
397 #size-cells = <0>;
398 };
399
400 mmc2: mmc@4022000 {
401 compatible = "allwinner,sun50i-h6-emmc",
402 "allwinner,sun50i-a64-emmc";
403 reg = <0x04022000 0x1000>;
404 clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
405 clock-names = "ahb", "mmc";
406 resets = <&ccu RST_BUS_MMC2>;
407 reset-names = "ahb";
408 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
Clément Péron6ba2e452019-04-08 17:27:50 +0200409 pinctrl-names = "default";
410 pinctrl-0 = <&mmc2_pins>;
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800411 status = "disabled";
412 #address-cells = <1>;
413 #size-cells = <0>;
414 };
415
Icenowy Zhenge54be322018-03-16 22:02:14 +0800416 uart0: serial@5000000 {
417 compatible = "snps,dw-apb-uart";
418 reg = <0x05000000 0x400>;
419 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
420 reg-shift = <2>;
421 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800422 clocks = <&ccu CLK_BUS_UART0>;
423 resets = <&ccu RST_BUS_UART0>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800424 status = "disabled";
425 };
426
427 uart1: serial@5000400 {
428 compatible = "snps,dw-apb-uart";
429 reg = <0x05000400 0x400>;
430 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
431 reg-shift = <2>;
432 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800433 clocks = <&ccu CLK_BUS_UART1>;
434 resets = <&ccu RST_BUS_UART1>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800435 status = "disabled";
436 };
437
438 uart2: serial@5000800 {
439 compatible = "snps,dw-apb-uart";
440 reg = <0x05000800 0x400>;
441 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
442 reg-shift = <2>;
443 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800444 clocks = <&ccu CLK_BUS_UART2>;
445 resets = <&ccu RST_BUS_UART2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800446 status = "disabled";
447 };
448
449 uart3: serial@5000c00 {
450 compatible = "snps,dw-apb-uart";
451 reg = <0x05000c00 0x400>;
452 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
453 reg-shift = <2>;
454 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800455 clocks = <&ccu CLK_BUS_UART3>;
456 resets = <&ccu RST_BUS_UART3>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800457 status = "disabled";
458 };
Icenowy Zheng05bdee32018-05-04 02:38:42 +0800459
Bhushan Shah89336e12019-08-16 14:13:09 +0530460 i2c0: i2c@5002000 {
461 compatible = "allwinner,sun50i-h6-i2c",
462 "allwinner,sun6i-a31-i2c";
463 reg = <0x05002000 0x400>;
464 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
465 clocks = <&ccu CLK_BUS_I2C0>;
466 resets = <&ccu RST_BUS_I2C0>;
467 pinctrl-names = "default";
468 pinctrl-0 = <&i2c0_pins>;
469 status = "disabled";
470 #address-cells = <1>;
471 #size-cells = <0>;
472 };
473
474 i2c1: i2c@5002400 {
475 compatible = "allwinner,sun50i-h6-i2c",
476 "allwinner,sun6i-a31-i2c";
477 reg = <0x05002400 0x400>;
478 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
479 clocks = <&ccu CLK_BUS_I2C1>;
480 resets = <&ccu RST_BUS_I2C1>;
481 pinctrl-names = "default";
482 pinctrl-0 = <&i2c1_pins>;
483 status = "disabled";
484 #address-cells = <1>;
485 #size-cells = <0>;
486 };
487
488 i2c2: i2c@5002800 {
489 compatible = "allwinner,sun50i-h6-i2c",
490 "allwinner,sun6i-a31-i2c";
491 reg = <0x05002800 0x400>;
492 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
493 clocks = <&ccu CLK_BUS_I2C2>;
494 resets = <&ccu RST_BUS_I2C2>;
495 pinctrl-names = "default";
496 pinctrl-0 = <&i2c2_pins>;
497 status = "disabled";
498 #address-cells = <1>;
499 #size-cells = <0>;
500 };
501
Icenowy Zhengc8ced552018-11-03 20:32:37 +0800502 emac: ethernet@5020000 {
Icenowy Zheng29ce4e42018-11-15 11:15:51 +0800503 compatible = "allwinner,sun50i-h6-emac",
504 "allwinner,sun50i-a64-emac";
Icenowy Zhengc8ced552018-11-03 20:32:37 +0800505 syscon = <&syscon>;
506 reg = <0x05020000 0x10000>;
507 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
508 interrupt-names = "macirq";
509 resets = <&ccu RST_BUS_EMAC>;
510 reset-names = "stmmaceth";
511 clocks = <&ccu CLK_BUS_EMAC>;
512 clock-names = "stmmaceth";
513 status = "disabled";
514
515 mdio: mdio {
516 compatible = "snps,dwmac-mdio";
517 #address-cells = <1>;
518 #size-cells = <0>;
519 };
520 };
521
Clément Péronf95b5982019-08-12 12:51:14 +0200522 spdif: spdif@5093000 {
523 #sound-dai-cells = <0>;
524 compatible = "allwinner,sun50i-h6-spdif";
525 reg = <0x05093000 0x400>;
526 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
527 clocks = <&ccu CLK_BUS_SPDIF>, <&ccu CLK_SPDIF>;
528 clock-names = "apb", "spdif";
529 resets = <&ccu RST_BUS_SPDIF>;
530 dmas = <&dma 2>;
531 dma-names = "tx";
532 pinctrl-names = "default";
533 pinctrl-0 = <&spdif_tx_pin>;
534 status = "disabled";
535 };
536
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800537 usb2otg: usb@5100000 {
538 compatible = "allwinner,sun50i-h6-musb",
539 "allwinner,sun8i-a33-musb";
540 reg = <0x05100000 0x0400>;
541 clocks = <&ccu CLK_BUS_OTG>;
542 resets = <&ccu RST_BUS_OTG>;
543 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
544 interrupt-names = "mc";
545 phys = <&usb2phy 0>;
546 phy-names = "usb";
547 extcon = <&usb2phy 0>;
548 status = "disabled";
549 };
550
551 usb2phy: phy@5100400 {
552 compatible = "allwinner,sun50i-h6-usb-phy";
553 reg = <0x05100400 0x24>,
554 <0x05101800 0x4>,
555 <0x05311800 0x4>;
556 reg-names = "phy_ctrl",
557 "pmu0",
558 "pmu3";
559 clocks = <&ccu CLK_USB_PHY0>,
560 <&ccu CLK_USB_PHY3>;
561 clock-names = "usb0_phy",
562 "usb3_phy";
563 resets = <&ccu RST_USB_PHY0>,
564 <&ccu RST_USB_PHY3>;
565 reset-names = "usb0_reset",
566 "usb3_reset";
567 status = "disabled";
568 #phy-cells = <1>;
569 };
570
571 ehci0: usb@5101000 {
572 compatible = "allwinner,sun50i-h6-ehci", "generic-ehci";
573 reg = <0x05101000 0x100>;
574 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
575 clocks = <&ccu CLK_BUS_OHCI0>,
576 <&ccu CLK_BUS_EHCI0>,
577 <&ccu CLK_USB_OHCI0>;
578 resets = <&ccu RST_BUS_OHCI0>,
579 <&ccu RST_BUS_EHCI0>;
580 status = "disabled";
581 };
582
583 ohci0: usb@5101400 {
584 compatible = "allwinner,sun50i-h6-ohci", "generic-ohci";
585 reg = <0x05101400 0x100>;
586 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
587 clocks = <&ccu CLK_BUS_OHCI0>,
588 <&ccu CLK_USB_OHCI0>;
589 resets = <&ccu RST_BUS_OHCI0>;
590 status = "disabled";
591 };
592
Icenowy Zheng0b6f7012019-10-20 15:42:28 +0200593 dwc3: dwc3@5200000 {
594 compatible = "snps,dwc3";
595 reg = <0x05200000 0x10000>;
596 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
597 clocks = <&ccu CLK_BUS_XHCI>,
598 <&ccu CLK_BUS_XHCI>,
599 <&rtc 0>;
600 clock-names = "ref", "bus_early", "suspend";
601 resets = <&ccu RST_BUS_XHCI>;
602 /*
603 * The datasheet of the chip doesn't declare the
604 * peripheral function, and there's no boards known
605 * to have a USB Type-B port routed to the port.
606 * In addition, no one has tested the peripheral
607 * function yet.
608 * So set the dr_mode to "host" in the DTSI file.
609 */
610 dr_mode = "host";
611 phys = <&usb3phy>;
612 phy-names = "usb3-phy";
613 status = "disabled";
614 };
615
616 usb3phy: phy@5210000 {
617 compatible = "allwinner,sun50i-h6-usb3-phy";
618 reg = <0x5210000 0x10000>;
619 clocks = <&ccu CLK_USB_PHY1>;
620 resets = <&ccu RST_USB_PHY1>;
621 #phy-cells = <0>;
622 status = "disabled";
623 };
624
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800625 ehci3: usb@5311000 {
626 compatible = "allwinner,sun50i-h6-ehci", "generic-ehci";
627 reg = <0x05311000 0x100>;
628 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
629 clocks = <&ccu CLK_BUS_OHCI3>,
630 <&ccu CLK_BUS_EHCI3>,
631 <&ccu CLK_USB_OHCI3>;
632 resets = <&ccu RST_BUS_OHCI3>,
633 <&ccu RST_BUS_EHCI3>;
634 phys = <&usb2phy 3>;
Maxime Riparde6064cf2019-10-02 13:26:50 +0200635 phy-names = "usb";
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800636 status = "disabled";
637 };
638
639 ohci3: usb@5311400 {
640 compatible = "allwinner,sun50i-h6-ohci", "generic-ohci";
641 reg = <0x05311400 0x100>;
642 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
643 clocks = <&ccu CLK_BUS_OHCI3>,
644 <&ccu CLK_USB_OHCI3>;
645 resets = <&ccu RST_BUS_OHCI3>;
646 phys = <&usb2phy 3>;
Maxime Riparde6064cf2019-10-02 13:26:50 +0200647 phy-names = "usb";
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800648 status = "disabled";
649 };
650
Jernej Skrabec209065c2018-11-04 19:27:04 +0100651 hdmi: hdmi@6000000 {
652 compatible = "allwinner,sun50i-h6-dw-hdmi";
653 reg = <0x06000000 0x10000>;
654 reg-io-width = <1>;
655 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
656 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>,
657 <&ccu CLK_HDMI>, <&ccu CLK_HDMI_CEC>,
658 <&ccu CLK_HDCP>, <&ccu CLK_BUS_HDCP>;
659 clock-names = "iahb", "isfr", "tmds", "cec", "hdcp",
660 "hdcp-bus";
661 resets = <&ccu RST_BUS_HDMI_SUB>, <&ccu RST_BUS_HDCP>;
662 reset-names = "ctrl", "hdcp";
663 phys = <&hdmi_phy>;
Maxime Ripardd40113f2019-07-23 10:44:07 +0200664 phy-names = "phy";
Jernej Skrabec209065c2018-11-04 19:27:04 +0100665 pinctrl-names = "default";
666 pinctrl-0 = <&hdmi_pins>;
667 status = "disabled";
668
669 ports {
670 #address-cells = <1>;
671 #size-cells = <0>;
672
673 hdmi_in: port@0 {
674 reg = <0>;
675
676 hdmi_in_tcon_top: endpoint {
677 remote-endpoint = <&tcon_top_hdmi_out_hdmi>;
678 };
679 };
680
681 hdmi_out: port@1 {
682 reg = <1>;
683 };
684 };
685 };
686
687 hdmi_phy: hdmi-phy@6010000 {
688 compatible = "allwinner,sun50i-h6-hdmi-phy";
689 reg = <0x06010000 0x10000>;
690 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>;
691 clock-names = "bus", "mod";
692 resets = <&ccu RST_BUS_HDMI>;
693 reset-names = "phy";
694 #phy-cells = <0>;
695 };
696
697 tcon_top: tcon-top@6510000 {
698 compatible = "allwinner,sun50i-h6-tcon-top";
699 reg = <0x06510000 0x1000>;
700 clocks = <&ccu CLK_BUS_TCON_TOP>,
701 <&ccu CLK_TCON_TV0>;
702 clock-names = "bus",
703 "tcon-tv0";
704 clock-output-names = "tcon-top-tv0";
705 resets = <&ccu RST_BUS_TCON_TOP>;
Jernej Skrabec209065c2018-11-04 19:27:04 +0100706 #clock-cells = <1>;
707
708 ports {
709 #address-cells = <1>;
710 #size-cells = <0>;
711
712 tcon_top_mixer0_in: port@0 {
713 #address-cells = <1>;
714 #size-cells = <0>;
715 reg = <0>;
716
717 tcon_top_mixer0_in_mixer0: endpoint@0 {
718 reg = <0>;
719 remote-endpoint = <&mixer0_out_tcon_top_mixer0>;
720 };
721 };
722
723 tcon_top_mixer0_out: port@1 {
724 #address-cells = <1>;
725 #size-cells = <0>;
726 reg = <1>;
727
728 tcon_top_mixer0_out_tcon_tv: endpoint@2 {
729 reg = <2>;
730 remote-endpoint = <&tcon_tv_in_tcon_top_mixer0>;
731 };
732 };
733
734 tcon_top_hdmi_in: port@4 {
735 #address-cells = <1>;
736 #size-cells = <0>;
737 reg = <4>;
738
739 tcon_top_hdmi_in_tcon_tv: endpoint@0 {
740 reg = <0>;
741 remote-endpoint = <&tcon_tv_out_tcon_top>;
742 };
743 };
744
745 tcon_top_hdmi_out: port@5 {
746 reg = <5>;
747
748 tcon_top_hdmi_out_hdmi: endpoint {
749 remote-endpoint = <&hdmi_in_tcon_top>;
750 };
751 };
752 };
753 };
754
755 tcon_tv: lcd-controller@6515000 {
756 compatible = "allwinner,sun50i-h6-tcon-tv",
757 "allwinner,sun8i-r40-tcon-tv";
758 reg = <0x06515000 0x1000>;
759 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
760 clocks = <&ccu CLK_BUS_TCON_TV0>,
761 <&tcon_top CLK_TCON_TOP_TV0>;
762 clock-names = "ahb",
763 "tcon-ch1";
764 resets = <&ccu RST_BUS_TCON_TV0>;
765 reset-names = "lcd";
766
767 ports {
768 #address-cells = <1>;
769 #size-cells = <0>;
770
771 tcon_tv_in: port@0 {
772 reg = <0>;
773
774 tcon_tv_in_tcon_top_mixer0: endpoint {
775 remote-endpoint = <&tcon_top_mixer0_out_tcon_tv>;
776 };
777 };
778
779 tcon_tv_out: port@1 {
780 #address-cells = <1>;
781 #size-cells = <0>;
782 reg = <1>;
783
784 tcon_tv_out_tcon_top: endpoint@1 {
785 reg = <1>;
786 remote-endpoint = <&tcon_top_hdmi_in_tcon_tv>;
787 };
788 };
789 };
790 };
791
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200792 rtc: rtc@7000000 {
793 compatible = "allwinner,sun50i-h6-rtc";
794 reg = <0x07000000 0x400>;
795 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
796 <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
797 clock-output-names = "osc32k", "osc32k-out", "iosc";
798 clocks = <&ext_osc32k>;
799 #clock-cells = <1>;
800 };
801
Icenowy Zheng05bdee32018-05-04 02:38:42 +0800802 r_ccu: clock@7010000 {
803 compatible = "allwinner,sun50i-h6-r-ccu";
804 reg = <0x07010000 0x400>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200805 clocks = <&osc24M>, <&rtc 0>, <&rtc 2>,
Icenowy Zheng05bdee32018-05-04 02:38:42 +0800806 <&ccu CLK_PLL_PERIPH0>;
807 clock-names = "hosc", "losc", "iosc", "pll-periph";
808 #clock-cells = <1>;
809 #reset-cells = <1>;
810 };
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800811
Clément Péronae3ceed2019-05-23 17:10:49 +0200812 r_watchdog: watchdog@7020400 {
813 compatible = "allwinner,sun50i-h6-wdt",
814 "allwinner,sun6i-a31-wdt";
815 reg = <0x07020400 0x20>;
816 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard9e1975f2019-08-21 16:38:35 +0200817 clocks = <&osc24M>;
Clément Péronae3ceed2019-05-23 17:10:49 +0200818 };
819
Icenowy Zheng1ecefb82018-05-04 02:38:45 +0800820 r_intc: interrupt-controller@7021000 {
821 compatible = "allwinner,sun50i-h6-r-intc",
822 "allwinner,sun6i-a31-r-intc";
823 interrupt-controller;
824 #interrupt-cells = <2>;
825 reg = <0x07021000 0x400>;
826 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
827 };
828
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800829 r_pio: pinctrl@7022000 {
830 compatible = "allwinner,sun50i-h6-r-pinctrl";
831 reg = <0x07022000 0x400>;
832 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
833 <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200834 clocks = <&r_ccu CLK_R_APB1>, <&osc24M>, <&rtc 0>;
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800835 clock-names = "apb", "hosc", "losc";
836 gpio-controller;
837 #gpio-cells = <3>;
838 interrupt-controller;
839 #interrupt-cells = <3>;
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800840
Maxime Ripard54eac67b2019-03-25 14:52:51 +0100841 r_i2c_pins: r-i2c-pins {
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800842 pins = "PL0", "PL1";
843 function = "s_i2c";
844 };
Clément Péron92678112019-06-08 01:10:58 +0200845
846 r_ir_rx_pin: r-ir-rx-pin {
847 pins = "PL9";
848 function = "s_cir_rx";
849 };
850 };
851
852 r_ir: ir@7040000 {
853 compatible = "allwinner,sun50i-h6-ir",
854 "allwinner,sun6i-a31-ir";
855 reg = <0x07040000 0x400>;
856 interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
857 clocks = <&r_ccu CLK_R_APB1_IR>,
858 <&r_ccu CLK_IR>;
859 clock-names = "apb", "ir";
860 resets = <&r_ccu RST_R_APB1_IR>;
861 pinctrl-names = "default";
862 pinctrl-0 = <&r_ir_rx_pin>;
863 status = "disabled";
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800864 };
865
866 r_i2c: i2c@7081400 {
Bhushan Shah89336e12019-08-16 14:13:09 +0530867 compatible = "allwinner,sun50i-h6-i2c",
868 "allwinner,sun6i-a31-i2c";
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800869 reg = <0x07081400 0x400>;
870 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
Chen-Yu Tsaide2b5552018-07-13 00:04:51 +0800871 clocks = <&r_ccu CLK_R_APB2_I2C>;
872 resets = <&r_ccu RST_R_APB2_I2C>;
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800873 pinctrl-names = "default";
874 pinctrl-0 = <&r_i2c_pins>;
875 status = "disabled";
876 #address-cells = <1>;
877 #size-cells = <0>;
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800878 };
Icenowy Zhenge54be322018-03-16 22:02:14 +0800879 };
880};