blob: 2e31632c6ca83032bd178525323eaa5ad40f3ad7 [file] [log] [blame]
Clément Péron012af552019-12-09 19:20:22 +01001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
Clément Péroncabbaed72019-12-14 14:26:42 +01002// Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io>
Icenowy Zhenge54be322018-03-16 22:02:14 +08003
4#include <dt-bindings/interrupt-controller/arm-gic.h>
Icenowy Zheng95beb932018-04-03 21:40:24 +08005#include <dt-bindings/clock/sun50i-h6-ccu.h>
Chen-Yu Tsaide2b5552018-07-13 00:04:51 +08006#include <dt-bindings/clock/sun50i-h6-r-ccu.h>
Jernej Skrabec209065c2018-11-04 19:27:04 +01007#include <dt-bindings/clock/sun8i-de2.h>
8#include <dt-bindings/clock/sun8i-tcon-top.h>
Icenowy Zheng95beb932018-04-03 21:40:24 +08009#include <dt-bindings/reset/sun50i-h6-ccu.h>
Chen-Yu Tsaide2b5552018-07-13 00:04:51 +080010#include <dt-bindings/reset/sun50i-h6-r-ccu.h>
Jernej Skrabec209065c2018-11-04 19:27:04 +010011#include <dt-bindings/reset/sun8i-de2.h>
Ondrej Jirmand7cfb662019-12-19 09:28:22 -080012#include <dt-bindings/thermal/thermal.h>
Icenowy Zhenge54be322018-03-16 22:02:14 +080013
14/ {
15 interrupt-parent = <&gic>;
16 #address-cells = <1>;
17 #size-cells = <1>;
18
19 cpus {
20 #address-cells = <1>;
21 #size-cells = <0>;
22
23 cpu0: cpu@0 {
Rob Herring31af04c2019-01-14 11:45:33 -060024 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080025 device_type = "cpu";
26 reg = <0>;
27 enable-method = "psci";
Yangtao Li8a3a9532020-04-20 15:00:13 +020028 clocks = <&ccu CLK_CPUX>;
29 clock-latency-ns = <244144>; /* 8 32k periods */
Ondrej Jirman9f8a93b2020-04-20 15:00:14 +020030 #cooling-cells = <2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +080031 };
32
33 cpu1: cpu@1 {
Rob Herring31af04c2019-01-14 11:45:33 -060034 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080035 device_type = "cpu";
36 reg = <1>;
37 enable-method = "psci";
Yangtao Li8a3a9532020-04-20 15:00:13 +020038 clocks = <&ccu CLK_CPUX>;
39 clock-latency-ns = <244144>; /* 8 32k periods */
Ondrej Jirman9f8a93b2020-04-20 15:00:14 +020040 #cooling-cells = <2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +080041 };
42
43 cpu2: cpu@2 {
Rob Herring31af04c2019-01-14 11:45:33 -060044 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080045 device_type = "cpu";
46 reg = <2>;
47 enable-method = "psci";
Yangtao Li8a3a9532020-04-20 15:00:13 +020048 clocks = <&ccu CLK_CPUX>;
49 clock-latency-ns = <244144>; /* 8 32k periods */
Ondrej Jirman9f8a93b2020-04-20 15:00:14 +020050 #cooling-cells = <2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +080051 };
52
53 cpu3: cpu@3 {
Rob Herring31af04c2019-01-14 11:45:33 -060054 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080055 device_type = "cpu";
56 reg = <3>;
57 enable-method = "psci";
Yangtao Li8a3a9532020-04-20 15:00:13 +020058 clocks = <&ccu CLK_CPUX>;
59 clock-latency-ns = <244144>; /* 8 32k periods */
Ondrej Jirman9f8a93b2020-04-20 15:00:14 +020060 #cooling-cells = <2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +080061 };
62 };
63
Jernej Skrabec209065c2018-11-04 19:27:04 +010064 de: display-engine {
65 compatible = "allwinner,sun50i-h6-display-engine";
66 allwinner,pipelines = <&mixer0>;
67 status = "disabled";
68 };
69
Icenowy Zhenge54be322018-03-16 22:02:14 +080070 osc24M: osc24M_clk {
71 #clock-cells = <0>;
72 compatible = "fixed-clock";
73 clock-frequency = <24000000>;
74 clock-output-names = "osc24M";
75 };
76
Andre Przywara7aa9b9e2019-11-21 01:18:33 +000077 pmu {
Maxime Ripard4c7eeb92020-02-10 10:56:00 +010078 compatible = "arm,cortex-a53-pmu";
Andre Przywara7aa9b9e2019-11-21 01:18:33 +000079 interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>,
80 <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
81 <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
82 <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
83 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
84 };
85
Icenowy Zhenge54be322018-03-16 22:02:14 +080086 psci {
87 compatible = "arm,psci-0.2";
88 method = "smc";
89 };
90
91 timer {
92 compatible = "arm,armv8-timer";
93 interrupts = <GIC_PPI 13
94 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
95 <GIC_PPI 14
96 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
97 <GIC_PPI 11
98 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
99 <GIC_PPI 10
100 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
101 };
102
103 soc {
104 compatible = "simple-bus";
105 #address-cells = <1>;
106 #size-cells = <1>;
107 ranges;
108
Maxime Ripard275b6312019-04-16 10:57:46 +0200109 bus@1000000 {
Jernej Skrabec209065c2018-11-04 19:27:04 +0100110 compatible = "allwinner,sun50i-h6-de3",
111 "allwinner,sun50i-a64-de2";
112 reg = <0x1000000 0x400000>;
113 allwinner,sram = <&de2_sram 1>;
114 #address-cells = <1>;
115 #size-cells = <1>;
116 ranges = <0 0x1000000 0x400000>;
117
118 display_clocks: clock@0 {
119 compatible = "allwinner,sun50i-h6-de3-clk";
120 reg = <0x0 0x10000>;
121 clocks = <&ccu CLK_DE>,
122 <&ccu CLK_BUS_DE>;
123 clock-names = "mod",
124 "bus";
125 resets = <&ccu RST_BUS_DE>;
126 #clock-cells = <1>;
127 #reset-cells = <1>;
128 };
129
130 mixer0: mixer@100000 {
131 compatible = "allwinner,sun50i-h6-de3-mixer-0";
132 reg = <0x100000 0x100000>;
133 clocks = <&display_clocks CLK_BUS_MIXER0>,
134 <&display_clocks CLK_MIXER0>;
135 clock-names = "bus",
136 "mod";
137 resets = <&display_clocks RST_MIXER0>;
138
139 ports {
140 #address-cells = <1>;
141 #size-cells = <0>;
142
143 mixer0_out: port@1 {
144 reg = <1>;
145
146 mixer0_out_tcon_top_mixer0: endpoint {
147 remote-endpoint = <&tcon_top_mixer0_in_mixer0>;
148 };
149 };
150 };
151 };
152 };
153
Jernej Skrabecb5425702019-01-28 21:55:04 +0100154 video-codec@1c0e000 {
155 compatible = "allwinner,sun50i-h6-video-engine";
156 reg = <0x01c0e000 0x2000>;
157 clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
158 <&ccu CLK_MBUS_VE>;
159 clock-names = "ahb", "mod", "ram";
160 resets = <&ccu RST_BUS_VE>;
161 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
162 allwinner,sram = <&ve_sram 1>;
163 };
164
Clément Péron4acc24b2019-10-30 16:07:41 +0100165 gpu: gpu@1800000 {
166 compatible = "allwinner,sun50i-h6-mali",
167 "arm,mali-t720";
168 reg = <0x01800000 0x4000>;
169 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
170 <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
171 <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
172 interrupt-names = "job", "mmu", "gpu";
173 clocks = <&ccu CLK_GPU>, <&ccu CLK_BUS_GPU>;
174 clock-names = "core", "bus";
175 resets = <&ccu RST_BUS_GPU>;
176 status = "disabled";
177 };
178
Corentin Labbe709b86f2019-10-23 22:05:10 +0200179 crypto: crypto@1904000 {
180 compatible = "allwinner,sun50i-h6-crypto";
181 reg = <0x01904000 0x1000>;
182 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
183 clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>, <&ccu CLK_MBUS_CE>;
184 clock-names = "bus", "mod", "ram";
185 resets = <&ccu RST_BUS_CE>;
186 };
187
Icenowy Zhengb2ad66f2018-09-02 09:26:18 +0200188 syscon: syscon@3000000 {
189 compatible = "allwinner,sun50i-h6-system-control",
190 "allwinner,sun50i-a64-system-control";
191 reg = <0x03000000 0x1000>;
192 #address-cells = <1>;
193 #size-cells = <1>;
194 ranges;
195
196 sram_c: sram@28000 {
197 compatible = "mmio-sram";
198 reg = <0x00028000 0x1e000>;
199 #address-cells = <1>;
200 #size-cells = <1>;
201 ranges = <0 0x00028000 0x1e000>;
202
203 de2_sram: sram-section@0 {
204 compatible = "allwinner,sun50i-h6-sram-c",
205 "allwinner,sun50i-a64-sram-c";
206 reg = <0x0000 0x1e000>;
207 };
208 };
Jernej Skrabec24dd8ae2019-01-28 21:55:03 +0100209
210 sram_c1: sram@1a00000 {
211 compatible = "mmio-sram";
212 reg = <0x01a00000 0x200000>;
213 #address-cells = <1>;
214 #size-cells = <1>;
215 ranges = <0 0x01a00000 0x200000>;
216
217 ve_sram: sram-section@0 {
218 compatible = "allwinner,sun50i-h6-sram-c1",
219 "allwinner,sun4i-a10-sram-c1";
220 reg = <0x000000 0x200000>;
221 };
222 };
Icenowy Zhengb2ad66f2018-09-02 09:26:18 +0200223 };
224
Icenowy Zhenge54be322018-03-16 22:02:14 +0800225 ccu: clock@3001000 {
226 compatible = "allwinner,sun50i-h6-ccu";
227 reg = <0x03001000 0x1000>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200228 clocks = <&osc24M>, <&rtc 0>, <&rtc 2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800229 clock-names = "hosc", "losc", "iosc";
230 #clock-cells = <1>;
231 #reset-cells = <1>;
232 };
233
Jernej Skrabec91646652019-06-11 23:40:55 +0200234 dma: dma-controller@3002000 {
235 compatible = "allwinner,sun50i-h6-dma";
236 reg = <0x03002000 0x1000>;
237 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
238 clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>;
239 clock-names = "bus", "mbus";
240 dma-channels = <16>;
241 dma-requests = <46>;
242 resets = <&ccu RST_BUS_DMA>;
243 #dma-cells = <1>;
244 };
245
Samuel Hollande7d52602020-02-22 22:08:53 -0600246 msgbox: mailbox@3003000 {
247 compatible = "allwinner,sun50i-h6-msgbox",
248 "allwinner,sun6i-a31-msgbox";
249 reg = <0x03003000 0x1000>;
250 clocks = <&ccu CLK_BUS_MSGBOX>;
251 resets = <&ccu RST_BUS_MSGBOX>;
252 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
253 #mbox-cells = <1>;
254 };
255
Maxime Ripard042c8052019-07-22 16:08:17 +0200256 sid: efuse@3006000 {
Yangtao Lifcf041f2019-04-04 13:01:46 -0400257 compatible = "allwinner,sun50i-h6-sid";
258 reg = <0x03006000 0x400>;
Ondrej Jirmand7cfb662019-12-19 09:28:22 -0800259 #address-cells = <1>;
260 #size-cells = <1>;
261
262 ths_calibration: thermal-sensor-calibration@14 {
263 reg = <0x14 0x8>;
264 };
Ondrej Jirman905434e2020-04-20 15:00:15 +0200265
266 cpu_speed_grade: cpu-speed-grade@1c {
267 reg = <0x1c 0x4>;
268 };
Yangtao Lifcf041f2019-04-04 13:01:46 -0400269 };
270
Clément Péronb6cebb12019-05-23 17:10:48 +0200271 watchdog: watchdog@30090a0 {
272 compatible = "allwinner,sun50i-h6-wdt",
273 "allwinner,sun6i-a31-wdt";
274 reg = <0x030090a0 0x20>;
275 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard9e1975f2019-08-21 16:38:35 +0200276 clocks = <&osc24M>;
Clément Péronb6cebb12019-05-23 17:10:48 +0200277 /* Broken on some H6 boards */
278 status = "disabled";
279 };
280
Jernej Skrabec88432f52019-11-19 18:53:18 +0100281 pwm: pwm@300a000 {
282 compatible = "allwinner,sun50i-h6-pwm";
283 reg = <0x0300a000 0x400>;
284 clocks = <&osc24M>, <&ccu CLK_BUS_PWM>;
285 clock-names = "mod", "bus";
286 resets = <&ccu RST_BUS_PWM>;
287 #pwm-cells = <3>;
288 status = "disabled";
289 };
290
Icenowy Zhenge54be322018-03-16 22:02:14 +0800291 pio: pinctrl@300b000 {
292 compatible = "allwinner,sun50i-h6-pinctrl";
293 reg = <0x0300b000 0x400>;
294 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
295 <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
296 <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
297 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200298 clocks = <&ccu CLK_APB1>, <&osc24M>, <&rtc 0>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800299 clock-names = "apb", "hosc", "losc";
300 gpio-controller;
301 #gpio-cells = <3>;
302 interrupt-controller;
303 #interrupt-cells = <3>;
304
Maxime Ripard54eac67b2019-03-25 14:52:51 +0100305 ext_rgmii_pins: rgmii-pins {
Icenowy Zhengc8ced552018-11-03 20:32:37 +0800306 pins = "PD0", "PD1", "PD2", "PD3", "PD4",
307 "PD5", "PD7", "PD8", "PD9", "PD10",
308 "PD11", "PD12", "PD13", "PD19", "PD20";
309 function = "emac";
310 drive-strength = <40>;
311 };
312
Jernej Skrabec209065c2018-11-04 19:27:04 +0100313 hdmi_pins: hdmi-pins {
314 pins = "PH8", "PH9", "PH10";
315 function = "hdmi";
316 };
317
Bhushan Shah89336e12019-08-16 14:13:09 +0530318 i2c0_pins: i2c0-pins {
319 pins = "PD25", "PD26";
320 function = "i2c0";
321 };
322
323 i2c1_pins: i2c1-pins {
324 pins = "PH5", "PH6";
325 function = "i2c1";
326 };
327
328 i2c2_pins: i2c2-pins {
329 pins = "PD23", "PD24";
330 function = "i2c2";
331 };
332
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800333 mmc0_pins: mmc0-pins {
334 pins = "PF0", "PF1", "PF2", "PF3",
335 "PF4", "PF5";
336 function = "mmc0";
337 drive-strength = <30>;
338 bias-pull-up;
339 };
340
Ondrej Jirman7cf875b2019-04-13 18:54:18 +0200341 /omit-if-no-ref/
342 mmc1_pins: mmc1-pins {
343 pins = "PG0", "PG1", "PG2", "PG3",
344 "PG4", "PG5";
345 function = "mmc1";
346 drive-strength = <30>;
347 bias-pull-up;
348 };
349
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800350 mmc2_pins: mmc2-pins {
351 pins = "PC1", "PC4", "PC5", "PC6",
352 "PC7", "PC8", "PC9", "PC10",
353 "PC11", "PC12", "PC13", "PC14";
354 function = "mmc2";
355 drive-strength = <30>;
356 bias-pull-up;
357 };
358
Andre Przywara30bd02b2020-01-16 23:11:46 +0000359 /omit-if-no-ref/
360 spi0_pins: spi0-pins {
361 pins = "PC0", "PC2", "PC3";
362 function = "spi0";
363 };
364
365 /* pin shared with MMC2-CMD (eMMC) */
366 /omit-if-no-ref/
367 spi0_cs_pin: spi0-cs-pin {
368 pins = "PC5";
369 function = "spi0";
370 };
371
372 /omit-if-no-ref/
373 spi1_pins: spi1-pins {
374 pins = "PH4", "PH5", "PH6";
375 function = "spi1";
376 };
377
378 /omit-if-no-ref/
379 spi1_cs_pin: spi1-cs-pin {
380 pins = "PH3";
381 function = "spi1";
382 };
383
Clément Péronf95b5982019-08-12 12:51:14 +0200384 spdif_tx_pin: spdif-tx-pin {
385 pins = "PH7";
386 function = "spdif";
387 };
388
Maxime Ripard54eac67b2019-03-25 14:52:51 +0100389 uart0_ph_pins: uart0-ph-pins {
Icenowy Zhenge54be322018-03-16 22:02:14 +0800390 pins = "PH0", "PH1";
391 function = "uart0";
392 };
Ondrej Jirmancd380e02019-10-07 22:31:51 +0200393
394 uart1_pins: uart1-pins {
395 pins = "PG6", "PG7";
396 function = "uart1";
397 };
398
399 uart1_rts_cts_pins: uart1-rts-cts-pins {
400 pins = "PG8", "PG9";
401 function = "uart1";
402 };
Icenowy Zhenge54be322018-03-16 22:02:14 +0800403 };
404
Chen-Yu Tsai52d9bcb2019-01-28 00:39:30 +0800405 gic: interrupt-controller@3021000 {
406 compatible = "arm,gic-400";
407 reg = <0x03021000 0x1000>,
408 <0x03022000 0x2000>,
409 <0x03024000 0x2000>,
410 <0x03026000 0x2000>;
411 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
412 interrupt-controller;
413 #interrupt-cells = <3>;
414 };
415
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800416 mmc0: mmc@4020000 {
417 compatible = "allwinner,sun50i-h6-mmc",
418 "allwinner,sun50i-a64-mmc";
419 reg = <0x04020000 0x1000>;
420 clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
421 clock-names = "ahb", "mmc";
422 resets = <&ccu RST_BUS_MMC0>;
423 reset-names = "ahb";
424 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
Clément Péron6ba2e452019-04-08 17:27:50 +0200425 pinctrl-names = "default";
426 pinctrl-0 = <&mmc0_pins>;
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800427 status = "disabled";
428 #address-cells = <1>;
429 #size-cells = <0>;
430 };
431
432 mmc1: mmc@4021000 {
433 compatible = "allwinner,sun50i-h6-mmc",
434 "allwinner,sun50i-a64-mmc";
435 reg = <0x04021000 0x1000>;
436 clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
437 clock-names = "ahb", "mmc";
438 resets = <&ccu RST_BUS_MMC1>;
439 reset-names = "ahb";
440 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
Ondrej Jirman7cf875b2019-04-13 18:54:18 +0200441 pinctrl-names = "default";
442 pinctrl-0 = <&mmc1_pins>;
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800443 status = "disabled";
444 #address-cells = <1>;
445 #size-cells = <0>;
446 };
447
448 mmc2: mmc@4022000 {
449 compatible = "allwinner,sun50i-h6-emmc",
450 "allwinner,sun50i-a64-emmc";
451 reg = <0x04022000 0x1000>;
452 clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
453 clock-names = "ahb", "mmc";
454 resets = <&ccu RST_BUS_MMC2>;
455 reset-names = "ahb";
456 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
Clément Péron6ba2e452019-04-08 17:27:50 +0200457 pinctrl-names = "default";
458 pinctrl-0 = <&mmc2_pins>;
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800459 status = "disabled";
460 #address-cells = <1>;
461 #size-cells = <0>;
462 };
463
Icenowy Zhenge54be322018-03-16 22:02:14 +0800464 uart0: serial@5000000 {
465 compatible = "snps,dw-apb-uart";
466 reg = <0x05000000 0x400>;
467 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
468 reg-shift = <2>;
469 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800470 clocks = <&ccu CLK_BUS_UART0>;
471 resets = <&ccu RST_BUS_UART0>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800472 status = "disabled";
473 };
474
475 uart1: serial@5000400 {
476 compatible = "snps,dw-apb-uart";
477 reg = <0x05000400 0x400>;
478 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
479 reg-shift = <2>;
480 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800481 clocks = <&ccu CLK_BUS_UART1>;
482 resets = <&ccu RST_BUS_UART1>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800483 status = "disabled";
484 };
485
486 uart2: serial@5000800 {
487 compatible = "snps,dw-apb-uart";
488 reg = <0x05000800 0x400>;
489 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
490 reg-shift = <2>;
491 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800492 clocks = <&ccu CLK_BUS_UART2>;
493 resets = <&ccu RST_BUS_UART2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800494 status = "disabled";
495 };
496
497 uart3: serial@5000c00 {
498 compatible = "snps,dw-apb-uart";
499 reg = <0x05000c00 0x400>;
500 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
501 reg-shift = <2>;
502 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800503 clocks = <&ccu CLK_BUS_UART3>;
504 resets = <&ccu RST_BUS_UART3>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800505 status = "disabled";
506 };
Icenowy Zheng05bdee32018-05-04 02:38:42 +0800507
Bhushan Shah89336e12019-08-16 14:13:09 +0530508 i2c0: i2c@5002000 {
509 compatible = "allwinner,sun50i-h6-i2c",
510 "allwinner,sun6i-a31-i2c";
511 reg = <0x05002000 0x400>;
512 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
513 clocks = <&ccu CLK_BUS_I2C0>;
514 resets = <&ccu RST_BUS_I2C0>;
515 pinctrl-names = "default";
516 pinctrl-0 = <&i2c0_pins>;
517 status = "disabled";
518 #address-cells = <1>;
519 #size-cells = <0>;
520 };
521
522 i2c1: i2c@5002400 {
523 compatible = "allwinner,sun50i-h6-i2c",
524 "allwinner,sun6i-a31-i2c";
525 reg = <0x05002400 0x400>;
526 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
527 clocks = <&ccu CLK_BUS_I2C1>;
528 resets = <&ccu RST_BUS_I2C1>;
529 pinctrl-names = "default";
530 pinctrl-0 = <&i2c1_pins>;
531 status = "disabled";
532 #address-cells = <1>;
533 #size-cells = <0>;
534 };
535
536 i2c2: i2c@5002800 {
537 compatible = "allwinner,sun50i-h6-i2c",
538 "allwinner,sun6i-a31-i2c";
539 reg = <0x05002800 0x400>;
540 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
541 clocks = <&ccu CLK_BUS_I2C2>;
542 resets = <&ccu RST_BUS_I2C2>;
543 pinctrl-names = "default";
544 pinctrl-0 = <&i2c2_pins>;
545 status = "disabled";
546 #address-cells = <1>;
547 #size-cells = <0>;
548 };
549
Andre Przywara30bd02b2020-01-16 23:11:46 +0000550 spi0: spi@5010000 {
551 compatible = "allwinner,sun50i-h6-spi",
552 "allwinner,sun8i-h3-spi";
553 reg = <0x05010000 0x1000>;
554 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
555 clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
556 clock-names = "ahb", "mod";
557 dmas = <&dma 22>, <&dma 22>;
558 dma-names = "rx", "tx";
559 resets = <&ccu RST_BUS_SPI0>;
560 status = "disabled";
561 #address-cells = <1>;
562 #size-cells = <0>;
563 };
564
565 spi1: spi@5011000 {
566 compatible = "allwinner,sun50i-h6-spi",
567 "allwinner,sun8i-h3-spi";
568 reg = <0x05011000 0x1000>;
569 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
570 clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
571 clock-names = "ahb", "mod";
572 dmas = <&dma 23>, <&dma 23>;
573 dma-names = "rx", "tx";
574 resets = <&ccu RST_BUS_SPI1>;
575 status = "disabled";
576 #address-cells = <1>;
577 #size-cells = <0>;
578 };
579
Icenowy Zhengc8ced552018-11-03 20:32:37 +0800580 emac: ethernet@5020000 {
Icenowy Zheng29ce4e42018-11-15 11:15:51 +0800581 compatible = "allwinner,sun50i-h6-emac",
582 "allwinner,sun50i-a64-emac";
Icenowy Zhengc8ced552018-11-03 20:32:37 +0800583 syscon = <&syscon>;
584 reg = <0x05020000 0x10000>;
585 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
586 interrupt-names = "macirq";
587 resets = <&ccu RST_BUS_EMAC>;
588 reset-names = "stmmaceth";
589 clocks = <&ccu CLK_BUS_EMAC>;
590 clock-names = "stmmaceth";
591 status = "disabled";
592
593 mdio: mdio {
594 compatible = "snps,dwmac-mdio";
595 #address-cells = <1>;
596 #size-cells = <0>;
597 };
598 };
599
Clément Péronf95b5982019-08-12 12:51:14 +0200600 spdif: spdif@5093000 {
601 #sound-dai-cells = <0>;
602 compatible = "allwinner,sun50i-h6-spdif";
603 reg = <0x05093000 0x400>;
604 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
605 clocks = <&ccu CLK_BUS_SPDIF>, <&ccu CLK_SPDIF>;
606 clock-names = "apb", "spdif";
607 resets = <&ccu RST_BUS_SPDIF>;
608 dmas = <&dma 2>;
609 dma-names = "tx";
610 pinctrl-names = "default";
611 pinctrl-0 = <&spdif_tx_pin>;
612 status = "disabled";
613 };
614
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800615 usb2otg: usb@5100000 {
616 compatible = "allwinner,sun50i-h6-musb",
617 "allwinner,sun8i-a33-musb";
618 reg = <0x05100000 0x0400>;
619 clocks = <&ccu CLK_BUS_OTG>;
620 resets = <&ccu RST_BUS_OTG>;
621 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
622 interrupt-names = "mc";
623 phys = <&usb2phy 0>;
624 phy-names = "usb";
625 extcon = <&usb2phy 0>;
626 status = "disabled";
627 };
628
629 usb2phy: phy@5100400 {
630 compatible = "allwinner,sun50i-h6-usb-phy";
631 reg = <0x05100400 0x24>,
632 <0x05101800 0x4>,
633 <0x05311800 0x4>;
634 reg-names = "phy_ctrl",
635 "pmu0",
636 "pmu3";
637 clocks = <&ccu CLK_USB_PHY0>,
638 <&ccu CLK_USB_PHY3>;
639 clock-names = "usb0_phy",
640 "usb3_phy";
641 resets = <&ccu RST_USB_PHY0>,
642 <&ccu RST_USB_PHY3>;
643 reset-names = "usb0_reset",
644 "usb3_reset";
645 status = "disabled";
646 #phy-cells = <1>;
647 };
648
649 ehci0: usb@5101000 {
650 compatible = "allwinner,sun50i-h6-ehci", "generic-ehci";
651 reg = <0x05101000 0x100>;
652 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
653 clocks = <&ccu CLK_BUS_OHCI0>,
654 <&ccu CLK_BUS_EHCI0>,
655 <&ccu CLK_USB_OHCI0>;
656 resets = <&ccu RST_BUS_OHCI0>,
657 <&ccu RST_BUS_EHCI0>;
658 status = "disabled";
659 };
660
661 ohci0: usb@5101400 {
662 compatible = "allwinner,sun50i-h6-ohci", "generic-ohci";
663 reg = <0x05101400 0x100>;
664 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
665 clocks = <&ccu CLK_BUS_OHCI0>,
666 <&ccu CLK_USB_OHCI0>;
667 resets = <&ccu RST_BUS_OHCI0>;
668 status = "disabled";
669 };
670
Icenowy Zheng0b6f7012019-10-20 15:42:28 +0200671 dwc3: dwc3@5200000 {
672 compatible = "snps,dwc3";
673 reg = <0x05200000 0x10000>;
674 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
675 clocks = <&ccu CLK_BUS_XHCI>,
676 <&ccu CLK_BUS_XHCI>,
677 <&rtc 0>;
678 clock-names = "ref", "bus_early", "suspend";
679 resets = <&ccu RST_BUS_XHCI>;
680 /*
681 * The datasheet of the chip doesn't declare the
682 * peripheral function, and there's no boards known
683 * to have a USB Type-B port routed to the port.
684 * In addition, no one has tested the peripheral
685 * function yet.
686 * So set the dr_mode to "host" in the DTSI file.
687 */
688 dr_mode = "host";
689 phys = <&usb3phy>;
690 phy-names = "usb3-phy";
691 status = "disabled";
692 };
693
694 usb3phy: phy@5210000 {
695 compatible = "allwinner,sun50i-h6-usb3-phy";
696 reg = <0x5210000 0x10000>;
697 clocks = <&ccu CLK_USB_PHY1>;
698 resets = <&ccu RST_USB_PHY1>;
699 #phy-cells = <0>;
700 status = "disabled";
701 };
702
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800703 ehci3: usb@5311000 {
704 compatible = "allwinner,sun50i-h6-ehci", "generic-ehci";
705 reg = <0x05311000 0x100>;
706 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
707 clocks = <&ccu CLK_BUS_OHCI3>,
708 <&ccu CLK_BUS_EHCI3>,
709 <&ccu CLK_USB_OHCI3>;
710 resets = <&ccu RST_BUS_OHCI3>,
711 <&ccu RST_BUS_EHCI3>;
712 phys = <&usb2phy 3>;
Maxime Riparde6064cf2019-10-02 13:26:50 +0200713 phy-names = "usb";
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800714 status = "disabled";
715 };
716
717 ohci3: usb@5311400 {
718 compatible = "allwinner,sun50i-h6-ohci", "generic-ohci";
719 reg = <0x05311400 0x100>;
720 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
721 clocks = <&ccu CLK_BUS_OHCI3>,
722 <&ccu CLK_USB_OHCI3>;
723 resets = <&ccu RST_BUS_OHCI3>;
724 phys = <&usb2phy 3>;
Maxime Riparde6064cf2019-10-02 13:26:50 +0200725 phy-names = "usb";
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800726 status = "disabled";
727 };
728
Jernej Skrabec209065c2018-11-04 19:27:04 +0100729 hdmi: hdmi@6000000 {
730 compatible = "allwinner,sun50i-h6-dw-hdmi";
731 reg = <0x06000000 0x10000>;
732 reg-io-width = <1>;
733 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
734 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>,
735 <&ccu CLK_HDMI>, <&ccu CLK_HDMI_CEC>,
736 <&ccu CLK_HDCP>, <&ccu CLK_BUS_HDCP>;
737 clock-names = "iahb", "isfr", "tmds", "cec", "hdcp",
738 "hdcp-bus";
739 resets = <&ccu RST_BUS_HDMI_SUB>, <&ccu RST_BUS_HDCP>;
740 reset-names = "ctrl", "hdcp";
741 phys = <&hdmi_phy>;
Maxime Ripardd40113f2019-07-23 10:44:07 +0200742 phy-names = "phy";
Jernej Skrabec209065c2018-11-04 19:27:04 +0100743 pinctrl-names = "default";
744 pinctrl-0 = <&hdmi_pins>;
745 status = "disabled";
746
747 ports {
748 #address-cells = <1>;
749 #size-cells = <0>;
750
751 hdmi_in: port@0 {
752 reg = <0>;
753
754 hdmi_in_tcon_top: endpoint {
755 remote-endpoint = <&tcon_top_hdmi_out_hdmi>;
756 };
757 };
758
759 hdmi_out: port@1 {
760 reg = <1>;
761 };
762 };
763 };
764
765 hdmi_phy: hdmi-phy@6010000 {
766 compatible = "allwinner,sun50i-h6-hdmi-phy";
767 reg = <0x06010000 0x10000>;
768 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>;
769 clock-names = "bus", "mod";
770 resets = <&ccu RST_BUS_HDMI>;
771 reset-names = "phy";
772 #phy-cells = <0>;
773 };
774
775 tcon_top: tcon-top@6510000 {
776 compatible = "allwinner,sun50i-h6-tcon-top";
777 reg = <0x06510000 0x1000>;
778 clocks = <&ccu CLK_BUS_TCON_TOP>,
779 <&ccu CLK_TCON_TV0>;
780 clock-names = "bus",
781 "tcon-tv0";
782 clock-output-names = "tcon-top-tv0";
783 resets = <&ccu RST_BUS_TCON_TOP>;
Jernej Skrabec209065c2018-11-04 19:27:04 +0100784 #clock-cells = <1>;
785
786 ports {
787 #address-cells = <1>;
788 #size-cells = <0>;
789
790 tcon_top_mixer0_in: port@0 {
791 #address-cells = <1>;
792 #size-cells = <0>;
793 reg = <0>;
794
795 tcon_top_mixer0_in_mixer0: endpoint@0 {
796 reg = <0>;
797 remote-endpoint = <&mixer0_out_tcon_top_mixer0>;
798 };
799 };
800
801 tcon_top_mixer0_out: port@1 {
802 #address-cells = <1>;
803 #size-cells = <0>;
804 reg = <1>;
805
806 tcon_top_mixer0_out_tcon_tv: endpoint@2 {
807 reg = <2>;
808 remote-endpoint = <&tcon_tv_in_tcon_top_mixer0>;
809 };
810 };
811
812 tcon_top_hdmi_in: port@4 {
813 #address-cells = <1>;
814 #size-cells = <0>;
815 reg = <4>;
816
817 tcon_top_hdmi_in_tcon_tv: endpoint@0 {
818 reg = <0>;
819 remote-endpoint = <&tcon_tv_out_tcon_top>;
820 };
821 };
822
823 tcon_top_hdmi_out: port@5 {
824 reg = <5>;
825
826 tcon_top_hdmi_out_hdmi: endpoint {
827 remote-endpoint = <&hdmi_in_tcon_top>;
828 };
829 };
830 };
831 };
832
833 tcon_tv: lcd-controller@6515000 {
834 compatible = "allwinner,sun50i-h6-tcon-tv",
835 "allwinner,sun8i-r40-tcon-tv";
836 reg = <0x06515000 0x1000>;
837 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
838 clocks = <&ccu CLK_BUS_TCON_TV0>,
839 <&tcon_top CLK_TCON_TOP_TV0>;
840 clock-names = "ahb",
841 "tcon-ch1";
842 resets = <&ccu RST_BUS_TCON_TV0>;
843 reset-names = "lcd";
844
845 ports {
846 #address-cells = <1>;
847 #size-cells = <0>;
848
849 tcon_tv_in: port@0 {
850 reg = <0>;
851
852 tcon_tv_in_tcon_top_mixer0: endpoint {
853 remote-endpoint = <&tcon_top_mixer0_out_tcon_tv>;
854 };
855 };
856
857 tcon_tv_out: port@1 {
858 #address-cells = <1>;
859 #size-cells = <0>;
860 reg = <1>;
861
862 tcon_tv_out_tcon_top: endpoint@1 {
863 reg = <1>;
864 remote-endpoint = <&tcon_top_hdmi_in_tcon_tv>;
865 };
866 };
867 };
868 };
869
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200870 rtc: rtc@7000000 {
871 compatible = "allwinner,sun50i-h6-rtc";
872 reg = <0x07000000 0x400>;
873 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
874 <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
875 clock-output-names = "osc32k", "osc32k-out", "iosc";
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200876 #clock-cells = <1>;
877 };
878
Icenowy Zheng05bdee32018-05-04 02:38:42 +0800879 r_ccu: clock@7010000 {
880 compatible = "allwinner,sun50i-h6-r-ccu";
881 reg = <0x07010000 0x400>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200882 clocks = <&osc24M>, <&rtc 0>, <&rtc 2>,
Icenowy Zheng05bdee32018-05-04 02:38:42 +0800883 <&ccu CLK_PLL_PERIPH0>;
884 clock-names = "hosc", "losc", "iosc", "pll-periph";
885 #clock-cells = <1>;
886 #reset-cells = <1>;
887 };
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800888
Clément Péronae3ceed2019-05-23 17:10:49 +0200889 r_watchdog: watchdog@7020400 {
890 compatible = "allwinner,sun50i-h6-wdt",
891 "allwinner,sun6i-a31-wdt";
892 reg = <0x07020400 0x20>;
893 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard9e1975f2019-08-21 16:38:35 +0200894 clocks = <&osc24M>;
Clément Péronae3ceed2019-05-23 17:10:49 +0200895 };
896
Icenowy Zheng1ecefb82018-05-04 02:38:45 +0800897 r_intc: interrupt-controller@7021000 {
898 compatible = "allwinner,sun50i-h6-r-intc",
899 "allwinner,sun6i-a31-r-intc";
900 interrupt-controller;
901 #interrupt-cells = <2>;
902 reg = <0x07021000 0x400>;
903 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
904 };
905
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800906 r_pio: pinctrl@7022000 {
907 compatible = "allwinner,sun50i-h6-r-pinctrl";
908 reg = <0x07022000 0x400>;
909 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
910 <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200911 clocks = <&r_ccu CLK_R_APB1>, <&osc24M>, <&rtc 0>;
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800912 clock-names = "apb", "hosc", "losc";
913 gpio-controller;
914 #gpio-cells = <3>;
915 interrupt-controller;
916 #interrupt-cells = <3>;
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800917
Maxime Ripard54eac67b2019-03-25 14:52:51 +0100918 r_i2c_pins: r-i2c-pins {
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800919 pins = "PL0", "PL1";
920 function = "s_i2c";
921 };
Clément Péron92678112019-06-08 01:10:58 +0200922
923 r_ir_rx_pin: r-ir-rx-pin {
924 pins = "PL9";
925 function = "s_cir_rx";
926 };
927 };
928
929 r_ir: ir@7040000 {
930 compatible = "allwinner,sun50i-h6-ir",
931 "allwinner,sun6i-a31-ir";
932 reg = <0x07040000 0x400>;
933 interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
934 clocks = <&r_ccu CLK_R_APB1_IR>,
935 <&r_ccu CLK_IR>;
936 clock-names = "apb", "ir";
937 resets = <&r_ccu RST_R_APB1_IR>;
938 pinctrl-names = "default";
939 pinctrl-0 = <&r_ir_rx_pin>;
940 status = "disabled";
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800941 };
942
943 r_i2c: i2c@7081400 {
Bhushan Shah89336e12019-08-16 14:13:09 +0530944 compatible = "allwinner,sun50i-h6-i2c",
945 "allwinner,sun6i-a31-i2c";
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800946 reg = <0x07081400 0x400>;
947 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
Chen-Yu Tsaide2b5552018-07-13 00:04:51 +0800948 clocks = <&r_ccu CLK_R_APB2_I2C>;
949 resets = <&r_ccu RST_R_APB2_I2C>;
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800950 pinctrl-names = "default";
951 pinctrl-0 = <&r_i2c_pins>;
952 status = "disabled";
953 #address-cells = <1>;
954 #size-cells = <0>;
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800955 };
Ondrej Jirmand7cfb662019-12-19 09:28:22 -0800956
957 ths: thermal-sensor@5070400 {
958 compatible = "allwinner,sun50i-h6-ths";
959 reg = <0x05070400 0x100>;
960 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
961 clocks = <&ccu CLK_BUS_THS>;
962 clock-names = "bus";
963 resets = <&ccu RST_BUS_THS>;
964 nvmem-cells = <&ths_calibration>;
965 nvmem-cell-names = "calibration";
966 #thermal-sensor-cells = <1>;
967 };
968 };
969
970 thermal-zones {
971 cpu-thermal {
972 polling-delay-passive = <0>;
973 polling-delay = <0>;
974 thermal-sensors = <&ths 0>;
Ondrej Jirman9f8a93b2020-04-20 15:00:14 +0200975
976 trips {
977 cpu_alert: cpu-alert {
978 temperature = <85000>;
979 hysteresis = <2000>;
980 type = "passive";
981 };
982
983 cpu-crit {
984 temperature = <100000>;
985 hysteresis = <0>;
986 type = "critical";
987 };
988 };
989
990 cooling-maps {
991 map0 {
992 trip = <&cpu_alert>;
993 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
994 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
995 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
996 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
997 };
998 };
Ondrej Jirmand7cfb662019-12-19 09:28:22 -0800999 };
1000
1001 gpu-thermal {
1002 polling-delay-passive = <0>;
1003 polling-delay = <0>;
1004 thermal-sensors = <&ths 1>;
1005 };
Icenowy Zhenge54be322018-03-16 22:02:14 +08001006 };
1007};