blob: 555bc92a6f8d976f1508a40790482d7687d2d7ee [file] [log] [blame]
Samuel Hollande210ec02020-10-24 10:21:55 -05001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2// Copyright (C) 2016 ARM Ltd.
3// based on the Allwinner H3 dtsi:
4// Copyright (C) 2015 Jens Kuske <jenskuske@gmail.com>
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +02005
Andre Przywaraf98852b2017-05-24 10:34:56 +01006#include <dt-bindings/clock/sun50i-a64-ccu.h>
Andre Przywara1b39a182018-10-29 00:56:47 +00007#include <dt-bindings/clock/sun8i-de2.h>
Andre Przywara62f3c122018-07-04 14:16:34 +01008#include <dt-bindings/clock/sun8i-r-ccu.h>
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +02009#include <dt-bindings/interrupt-controller/arm-gic.h>
Andre Przywaraf98852b2017-05-24 10:34:56 +010010#include <dt-bindings/reset/sun50i-a64-ccu.h>
Andre Przywara1b39a182018-10-29 00:56:47 +000011#include <dt-bindings/reset/sun8i-de2.h>
12#include <dt-bindings/reset/sun8i-r-ccu.h>
Samuel Hollande210ec02020-10-24 10:21:55 -050013#include <dt-bindings/thermal/thermal.h>
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +020014
15/ {
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +020016 interrupt-parent = <&gic>;
17 #address-cells = <1>;
18 #size-cells = <1>;
19
Andre Przywara62f3c122018-07-04 14:16:34 +010020 chosen {
21 #address-cells = <1>;
22 #size-cells = <1>;
23 ranges;
24
Andre Przywara62f3c122018-07-04 14:16:34 +010025 simplefb_lcd: framebuffer-lcd {
26 compatible = "allwinner,simple-framebuffer",
27 "simple-framebuffer";
28 allwinner,pipeline = "mixer0-lcd0";
29 clocks = <&ccu CLK_TCON0>,
Andre Przywara1b39a182018-10-29 00:56:47 +000030 <&display_clocks CLK_MIXER0>;
31 status = "disabled";
32 };
33
34 simplefb_hdmi: framebuffer-hdmi {
35 compatible = "allwinner,simple-framebuffer",
36 "simple-framebuffer";
37 allwinner,pipeline = "mixer1-lcd1-hdmi";
38 clocks = <&display_clocks CLK_MIXER1>,
39 <&ccu CLK_TCON1>, <&ccu CLK_HDMI>;
Andre Przywara62f3c122018-07-04 14:16:34 +010040 status = "disabled";
41 };
42 };
43
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +020044 cpus {
45 #address-cells = <1>;
46 #size-cells = <0>;
47
Andre Przywaraf98852b2017-05-24 10:34:56 +010048 cpu0: cpu@0 {
Samuel Hollande210ec02020-10-24 10:21:55 -050049 compatible = "arm,cortex-a53";
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +020050 device_type = "cpu";
51 reg = <0>;
52 enable-method = "psci";
Andre Przywara1b39a182018-10-29 00:56:47 +000053 next-level-cache = <&L2>;
Andre Przywara647b3922021-04-17 22:55:19 +010054 clocks = <&ccu CLK_CPUX>;
Samuel Hollande210ec02020-10-24 10:21:55 -050055 clock-names = "cpu";
56 #cooling-cells = <2>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +020057 };
58
Andre Przywaraf98852b2017-05-24 10:34:56 +010059 cpu1: cpu@1 {
Samuel Hollande210ec02020-10-24 10:21:55 -050060 compatible = "arm,cortex-a53";
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +020061 device_type = "cpu";
62 reg = <1>;
63 enable-method = "psci";
Andre Przywara1b39a182018-10-29 00:56:47 +000064 next-level-cache = <&L2>;
Andre Przywara647b3922021-04-17 22:55:19 +010065 clocks = <&ccu CLK_CPUX>;
Samuel Hollande210ec02020-10-24 10:21:55 -050066 clock-names = "cpu";
67 #cooling-cells = <2>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +020068 };
69
Andre Przywaraf98852b2017-05-24 10:34:56 +010070 cpu2: cpu@2 {
Samuel Hollande210ec02020-10-24 10:21:55 -050071 compatible = "arm,cortex-a53";
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +020072 device_type = "cpu";
73 reg = <2>;
74 enable-method = "psci";
Andre Przywara1b39a182018-10-29 00:56:47 +000075 next-level-cache = <&L2>;
Andre Przywara647b3922021-04-17 22:55:19 +010076 clocks = <&ccu CLK_CPUX>;
Samuel Hollande210ec02020-10-24 10:21:55 -050077 clock-names = "cpu";
78 #cooling-cells = <2>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +020079 };
80
Andre Przywaraf98852b2017-05-24 10:34:56 +010081 cpu3: cpu@3 {
Samuel Hollande210ec02020-10-24 10:21:55 -050082 compatible = "arm,cortex-a53";
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +020083 device_type = "cpu";
84 reg = <3>;
85 enable-method = "psci";
Andre Przywara1b39a182018-10-29 00:56:47 +000086 next-level-cache = <&L2>;
Andre Przywara647b3922021-04-17 22:55:19 +010087 clocks = <&ccu CLK_CPUX>;
Samuel Hollande210ec02020-10-24 10:21:55 -050088 clock-names = "cpu";
89 #cooling-cells = <2>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +020090 };
Andre Przywara1b39a182018-10-29 00:56:47 +000091
92 L2: l2-cache {
93 compatible = "cache";
94 cache-level = <2>;
95 };
96 };
97
98 de: display-engine {
99 compatible = "allwinner,sun50i-a64-display-engine";
100 allwinner,pipelines = <&mixer0>,
101 <&mixer1>;
102 status = "disabled";
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200103 };
104
Samuel Holland77102822022-04-27 15:31:30 -0500105 gpu_opp_table: opp-table-gpu {
106 compatible = "operating-points-v2";
107
108 opp-120000000 {
109 opp-hz = /bits/ 64 <120000000>;
110 };
111
112 opp-312000000 {
113 opp-hz = /bits/ 64 <312000000>;
114 };
115
116 opp-432000000 {
117 opp-hz = /bits/ 64 <432000000>;
118 };
119 };
120
Andre Przywaraf98852b2017-05-24 10:34:56 +0100121 osc24M: osc24M_clk {
122 #clock-cells = <0>;
123 compatible = "fixed-clock";
124 clock-frequency = <24000000>;
125 clock-output-names = "osc24M";
126 };
127
128 osc32k: osc32k_clk {
129 #clock-cells = <0>;
130 compatible = "fixed-clock";
131 clock-frequency = <32768>;
Samuel Hollande210ec02020-10-24 10:21:55 -0500132 clock-output-names = "ext-osc32k";
Andre Przywaraf98852b2017-05-24 10:34:56 +0100133 };
134
Samuel Hollande210ec02020-10-24 10:21:55 -0500135 pmu {
136 compatible = "arm,cortex-a53-pmu";
137 interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
138 <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
139 <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
140 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
141 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
Andre Przywaraf98852b2017-05-24 10:34:56 +0100142 };
143
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200144 psci {
Andre Przywarac1fd2442016-05-04 22:15:33 +0100145 compatible = "arm,psci-0.2";
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200146 method = "smc";
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200147 };
148
Samuel Hollande210ec02020-10-24 10:21:55 -0500149 sound: sound {
Samuel Holland77102822022-04-27 15:31:30 -0500150 #address-cells = <1>;
151 #size-cells = <0>;
Andre Przywara62f3c122018-07-04 14:16:34 +0100152 compatible = "simple-audio-card";
Samuel Hollande210ec02020-10-24 10:21:55 -0500153 simple-audio-card,name = "sun50i-a64-audio";
Samuel Hollande210ec02020-10-24 10:21:55 -0500154 simple-audio-card,aux-devs = <&codec_analog>;
155 simple-audio-card,routing =
Andre Przywara647b3922021-04-17 22:55:19 +0100156 "Left DAC", "DACL",
157 "Right DAC", "DACR",
158 "ADCL", "Left ADC",
159 "ADCR", "Right ADC";
Samuel Hollande210ec02020-10-24 10:21:55 -0500160 status = "disabled";
Andre Przywara62f3c122018-07-04 14:16:34 +0100161
Samuel Holland77102822022-04-27 15:31:30 -0500162 simple-audio-card,dai-link@0 {
163 format = "i2s";
164 frame-master = <&link0_cpu>;
165 bitclock-master = <&link0_cpu>;
166 mclk-fs = <128>;
Andre Przywara62f3c122018-07-04 14:16:34 +0100167
Samuel Holland77102822022-04-27 15:31:30 -0500168 link0_cpu: cpu {
169 sound-dai = <&dai>;
170 };
171
172 link0_codec: codec {
173 sound-dai = <&codec 0>;
174 };
Andre Przywara62f3c122018-07-04 14:16:34 +0100175 };
176 };
177
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200178 timer {
179 compatible = "arm,armv8-timer";
Samuel Hollande210ec02020-10-24 10:21:55 -0500180 allwinner,erratum-unknown1;
Andre Przywara647b3922021-04-17 22:55:19 +0100181 arm,no-tick-in-suspend;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200182 interrupts = <GIC_PPI 13
183 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
184 <GIC_PPI 14
185 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
186 <GIC_PPI 11
187 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
188 <GIC_PPI 10
189 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
190 };
191
Samuel Hollande210ec02020-10-24 10:21:55 -0500192 thermal-zones {
193 cpu_thermal: cpu0-thermal {
194 /* milliseconds */
195 polling-delay-passive = <0>;
196 polling-delay = <0>;
197 thermal-sensors = <&ths 0>;
198
199 cooling-maps {
200 map0 {
201 trip = <&cpu_alert0>;
202 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
203 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
204 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
205 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
206 };
207 map1 {
208 trip = <&cpu_alert1>;
209 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
210 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
211 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
212 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
213 };
214 };
215
216 trips {
217 cpu_alert0: cpu_alert0 {
218 /* milliCelsius */
219 temperature = <75000>;
220 hysteresis = <2000>;
221 type = "passive";
222 };
223
224 cpu_alert1: cpu_alert1 {
225 /* milliCelsius */
226 temperature = <90000>;
227 hysteresis = <2000>;
228 type = "hot";
229 };
230
231 cpu_crit: cpu_crit {
232 /* milliCelsius */
233 temperature = <110000>;
234 hysteresis = <2000>;
235 type = "critical";
236 };
237 };
238 };
239
240 gpu0_thermal: gpu0-thermal {
241 /* milliseconds */
242 polling-delay-passive = <0>;
243 polling-delay = <0>;
244 thermal-sensors = <&ths 1>;
245 };
246
247 gpu1_thermal: gpu1-thermal {
248 /* milliseconds */
249 polling-delay-passive = <0>;
250 polling-delay = <0>;
251 thermal-sensors = <&ths 2>;
252 };
253 };
254
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200255 soc {
256 compatible = "simple-bus";
257 #address-cells = <1>;
258 #size-cells = <1>;
259 ranges;
260
Samuel Hollande210ec02020-10-24 10:21:55 -0500261 bus@1000000 {
Andre Przywara1b39a182018-10-29 00:56:47 +0000262 compatible = "allwinner,sun50i-a64-de2";
263 reg = <0x1000000 0x400000>;
264 allwinner,sram = <&de2_sram 1>;
265 #address-cells = <1>;
266 #size-cells = <1>;
267 ranges = <0 0x1000000 0x400000>;
268
269 display_clocks: clock@0 {
270 compatible = "allwinner,sun50i-a64-de2-clk";
Samuel Hollande210ec02020-10-24 10:21:55 -0500271 reg = <0x0 0x10000>;
272 clocks = <&ccu CLK_BUS_DE>,
273 <&ccu CLK_DE>;
274 clock-names = "bus",
275 "mod";
Andre Przywara1b39a182018-10-29 00:56:47 +0000276 resets = <&ccu RST_BUS_DE>;
277 #clock-cells = <1>;
278 #reset-cells = <1>;
279 };
280
Samuel Hollande210ec02020-10-24 10:21:55 -0500281 rotate: rotate@20000 {
282 compatible = "allwinner,sun50i-a64-de2-rotate",
283 "allwinner,sun8i-a83t-de2-rotate";
284 reg = <0x20000 0x10000>;
285 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
286 clocks = <&display_clocks CLK_BUS_ROT>,
287 <&display_clocks CLK_ROT>;
288 clock-names = "bus",
289 "mod";
290 resets = <&display_clocks RST_ROT>;
291 };
292
Andre Przywara1b39a182018-10-29 00:56:47 +0000293 mixer0: mixer@100000 {
294 compatible = "allwinner,sun50i-a64-de2-mixer-0";
295 reg = <0x100000 0x100000>;
296 clocks = <&display_clocks CLK_BUS_MIXER0>,
297 <&display_clocks CLK_MIXER0>;
298 clock-names = "bus",
299 "mod";
300 resets = <&display_clocks RST_MIXER0>;
301
302 ports {
303 #address-cells = <1>;
304 #size-cells = <0>;
305
306 mixer0_out: port@1 {
Samuel Hollande210ec02020-10-24 10:21:55 -0500307 #address-cells = <1>;
308 #size-cells = <0>;
Andre Przywara1b39a182018-10-29 00:56:47 +0000309 reg = <1>;
310
Samuel Hollande210ec02020-10-24 10:21:55 -0500311 mixer0_out_tcon0: endpoint@0 {
312 reg = <0>;
Andre Przywara1b39a182018-10-29 00:56:47 +0000313 remote-endpoint = <&tcon0_in_mixer0>;
314 };
Samuel Hollande210ec02020-10-24 10:21:55 -0500315
316 mixer0_out_tcon1: endpoint@1 {
317 reg = <1>;
318 remote-endpoint = <&tcon1_in_mixer0>;
319 };
Andre Przywara1b39a182018-10-29 00:56:47 +0000320 };
321 };
322 };
323
324 mixer1: mixer@200000 {
325 compatible = "allwinner,sun50i-a64-de2-mixer-1";
326 reg = <0x200000 0x100000>;
327 clocks = <&display_clocks CLK_BUS_MIXER1>,
328 <&display_clocks CLK_MIXER1>;
329 clock-names = "bus",
330 "mod";
331 resets = <&display_clocks RST_MIXER1>;
332
333 ports {
334 #address-cells = <1>;
335 #size-cells = <0>;
336
337 mixer1_out: port@1 {
Samuel Hollande210ec02020-10-24 10:21:55 -0500338 #address-cells = <1>;
339 #size-cells = <0>;
Andre Przywara1b39a182018-10-29 00:56:47 +0000340 reg = <1>;
341
Samuel Hollande210ec02020-10-24 10:21:55 -0500342 mixer1_out_tcon0: endpoint@0 {
343 reg = <0>;
344 remote-endpoint = <&tcon0_in_mixer1>;
345 };
346
347 mixer1_out_tcon1: endpoint@1 {
348 reg = <1>;
Andre Przywara1b39a182018-10-29 00:56:47 +0000349 remote-endpoint = <&tcon1_in_mixer1>;
350 };
351 };
352 };
353 };
354 };
355
Andre Przywara62f3c122018-07-04 14:16:34 +0100356 syscon: syscon@1c00000 {
Samuel Hollande210ec02020-10-24 10:21:55 -0500357 compatible = "allwinner,sun50i-a64-system-control";
Andre Przywara62f3c122018-07-04 14:16:34 +0100358 reg = <0x01c00000 0x1000>;
Andre Przywara1b39a182018-10-29 00:56:47 +0000359 #address-cells = <1>;
360 #size-cells = <1>;
361 ranges;
362
363 sram_c: sram@18000 {
364 compatible = "mmio-sram";
365 reg = <0x00018000 0x28000>;
366 #address-cells = <1>;
367 #size-cells = <1>;
368 ranges = <0 0x00018000 0x28000>;
369
370 de2_sram: sram-section@0 {
371 compatible = "allwinner,sun50i-a64-sram-c";
372 reg = <0x0000 0x28000>;
373 };
374 };
Samuel Hollande210ec02020-10-24 10:21:55 -0500375
376 sram_c1: sram@1d00000 {
377 compatible = "mmio-sram";
378 reg = <0x01d00000 0x40000>;
379 #address-cells = <1>;
380 #size-cells = <1>;
381 ranges = <0 0x01d00000 0x40000>;
382
383 ve_sram: sram-section@0 {
384 compatible = "allwinner,sun50i-a64-sram-c1",
385 "allwinner,sun4i-a10-sram-c1";
386 reg = <0x000000 0x40000>;
387 };
388 };
Andre Przywara62f3c122018-07-04 14:16:34 +0100389 };
390
391 dma: dma-controller@1c02000 {
392 compatible = "allwinner,sun50i-a64-dma";
393 reg = <0x01c02000 0x1000>;
394 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
395 clocks = <&ccu CLK_BUS_DMA>;
396 dma-channels = <8>;
397 dma-requests = <27>;
398 resets = <&ccu RST_BUS_DMA>;
399 #dma-cells = <1>;
400 };
401
Andre Przywara1b39a182018-10-29 00:56:47 +0000402 tcon0: lcd-controller@1c0c000 {
403 compatible = "allwinner,sun50i-a64-tcon-lcd",
404 "allwinner,sun8i-a83t-tcon-lcd";
405 reg = <0x01c0c000 0x1000>;
406 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
407 clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
408 clock-names = "ahb", "tcon-ch0";
409 clock-output-names = "tcon-pixel-clock";
Samuel Hollande210ec02020-10-24 10:21:55 -0500410 #clock-cells = <0>;
Andre Przywara1b39a182018-10-29 00:56:47 +0000411 resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
412 reset-names = "lcd", "lvds";
413
414 ports {
415 #address-cells = <1>;
416 #size-cells = <0>;
417
418 tcon0_in: port@0 {
419 #address-cells = <1>;
420 #size-cells = <0>;
421 reg = <0>;
422
423 tcon0_in_mixer0: endpoint@0 {
424 reg = <0>;
425 remote-endpoint = <&mixer0_out_tcon0>;
426 };
Samuel Hollande210ec02020-10-24 10:21:55 -0500427
428 tcon0_in_mixer1: endpoint@1 {
429 reg = <1>;
430 remote-endpoint = <&mixer1_out_tcon0>;
431 };
Andre Przywara1b39a182018-10-29 00:56:47 +0000432 };
433
434 tcon0_out: port@1 {
435 #address-cells = <1>;
436 #size-cells = <0>;
437 reg = <1>;
Samuel Hollande210ec02020-10-24 10:21:55 -0500438
439 tcon0_out_dsi: endpoint@1 {
440 reg = <1>;
441 remote-endpoint = <&dsi_in_tcon0>;
442 allwinner,tcon-channel = <1>;
443 };
Andre Przywara1b39a182018-10-29 00:56:47 +0000444 };
445 };
446 };
447
448 tcon1: lcd-controller@1c0d000 {
449 compatible = "allwinner,sun50i-a64-tcon-tv",
450 "allwinner,sun8i-a83t-tcon-tv";
451 reg = <0x01c0d000 0x1000>;
452 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
453 clocks = <&ccu CLK_BUS_TCON1>, <&ccu CLK_TCON1>;
454 clock-names = "ahb", "tcon-ch1";
455 resets = <&ccu RST_BUS_TCON1>;
456 reset-names = "lcd";
457
458 ports {
459 #address-cells = <1>;
460 #size-cells = <0>;
461
462 tcon1_in: port@0 {
Samuel Hollande210ec02020-10-24 10:21:55 -0500463 #address-cells = <1>;
464 #size-cells = <0>;
Andre Przywara1b39a182018-10-29 00:56:47 +0000465 reg = <0>;
466
Samuel Hollande210ec02020-10-24 10:21:55 -0500467 tcon1_in_mixer0: endpoint@0 {
468 reg = <0>;
469 remote-endpoint = <&mixer0_out_tcon1>;
470 };
471
472 tcon1_in_mixer1: endpoint@1 {
473 reg = <1>;
Andre Przywara1b39a182018-10-29 00:56:47 +0000474 remote-endpoint = <&mixer1_out_tcon1>;
475 };
476 };
477
478 tcon1_out: port@1 {
479 #address-cells = <1>;
480 #size-cells = <0>;
481 reg = <1>;
482
483 tcon1_out_hdmi: endpoint@1 {
484 reg = <1>;
485 remote-endpoint = <&hdmi_in_tcon1>;
486 };
487 };
488 };
489 };
490
Samuel Hollande210ec02020-10-24 10:21:55 -0500491 video-codec@1c0e000 {
492 compatible = "allwinner,sun50i-a64-video-engine";
493 reg = <0x01c0e000 0x1000>;
494 clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
495 <&ccu CLK_DRAM_VE>;
496 clock-names = "ahb", "mod", "ram";
497 resets = <&ccu RST_BUS_VE>;
498 interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
499 allwinner,sram = <&ve_sram 1>;
500 };
501
Andre Przywarac1fd2442016-05-04 22:15:33 +0100502 mmc0: mmc@1c0f000 {
Andre Przywaraf98852b2017-05-24 10:34:56 +0100503 compatible = "allwinner,sun50i-a64-mmc";
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200504 reg = <0x01c0f000 0x1000>;
Andre Przywaraf98852b2017-05-24 10:34:56 +0100505 clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
506 clock-names = "ahb", "mmc";
507 resets = <&ccu RST_BUS_MMC0>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200508 reset-names = "ahb";
509 interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
Andre Przywaraf98852b2017-05-24 10:34:56 +0100510 max-frequency = <150000000>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200511 status = "disabled";
512 #address-cells = <1>;
513 #size-cells = <0>;
514 };
515
Andre Przywarac1fd2442016-05-04 22:15:33 +0100516 mmc1: mmc@1c10000 {
Andre Przywaraf98852b2017-05-24 10:34:56 +0100517 compatible = "allwinner,sun50i-a64-mmc";
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200518 reg = <0x01c10000 0x1000>;
Andre Przywaraf98852b2017-05-24 10:34:56 +0100519 clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
520 clock-names = "ahb", "mmc";
521 resets = <&ccu RST_BUS_MMC1>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200522 reset-names = "ahb";
523 interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
Andre Przywaraf98852b2017-05-24 10:34:56 +0100524 max-frequency = <150000000>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200525 status = "disabled";
526 #address-cells = <1>;
527 #size-cells = <0>;
528 };
529
Andre Przywarac1fd2442016-05-04 22:15:33 +0100530 mmc2: mmc@1c11000 {
Andre Przywaraf98852b2017-05-24 10:34:56 +0100531 compatible = "allwinner,sun50i-a64-emmc";
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200532 reg = <0x01c11000 0x1000>;
Andre Przywaraf98852b2017-05-24 10:34:56 +0100533 clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
534 clock-names = "ahb", "mmc";
535 resets = <&ccu RST_BUS_MMC2>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200536 reset-names = "ahb";
537 interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
Andre Przywara647b3922021-04-17 22:55:19 +0100538 max-frequency = <150000000>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200539 status = "disabled";
540 #address-cells = <1>;
541 #size-cells = <0>;
542 };
543
Andre Przywara1b39a182018-10-29 00:56:47 +0000544 sid: eeprom@1c14000 {
545 compatible = "allwinner,sun50i-a64-sid";
546 reg = <0x1c14000 0x400>;
Samuel Hollande210ec02020-10-24 10:21:55 -0500547 #address-cells = <1>;
548 #size-cells = <1>;
549
550 ths_calibration: thermal-sensor-calibration@34 {
551 reg = <0x34 0x8>;
552 };
553 };
554
555 crypto: crypto@1c15000 {
556 compatible = "allwinner,sun50i-a64-crypto";
557 reg = <0x01c15000 0x1000>;
558 interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
559 clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>;
560 clock-names = "bus", "mod";
561 resets = <&ccu RST_BUS_CE>;
562 };
563
564 msgbox: mailbox@1c17000 {
565 compatible = "allwinner,sun50i-a64-msgbox",
566 "allwinner,sun6i-a31-msgbox";
567 reg = <0x01c17000 0x1000>;
568 clocks = <&ccu CLK_BUS_MSGBOX>;
569 resets = <&ccu RST_BUS_MSGBOX>;
570 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
571 #mbox-cells = <1>;
Andre Przywara1b39a182018-10-29 00:56:47 +0000572 };
573
Andre Przywara62f3c122018-07-04 14:16:34 +0100574 usb_otg: usb@1c19000 {
Andre Przywaraf98852b2017-05-24 10:34:56 +0100575 compatible = "allwinner,sun8i-a33-musb";
576 reg = <0x01c19000 0x0400>;
577 clocks = <&ccu CLK_BUS_OTG>;
578 resets = <&ccu RST_BUS_OTG>;
579 interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
580 interrupt-names = "mc";
581 phys = <&usbphy 0>;
582 phy-names = "usb";
583 extcon = <&usbphy 0>;
Samuel Hollande210ec02020-10-24 10:21:55 -0500584 dr_mode = "otg";
Andre Przywaraf98852b2017-05-24 10:34:56 +0100585 status = "disabled";
586 };
587
Andre Przywara62f3c122018-07-04 14:16:34 +0100588 usbphy: phy@1c19400 {
Andre Przywaraf98852b2017-05-24 10:34:56 +0100589 compatible = "allwinner,sun50i-a64-usb-phy";
590 reg = <0x01c19400 0x14>,
591 <0x01c1a800 0x4>,
592 <0x01c1b800 0x4>;
593 reg-names = "phy_ctrl",
594 "pmu0",
595 "pmu1";
596 clocks = <&ccu CLK_USB_PHY0>,
597 <&ccu CLK_USB_PHY1>;
598 clock-names = "usb0_phy",
599 "usb1_phy";
600 resets = <&ccu RST_USB_PHY0>,
601 <&ccu RST_USB_PHY1>;
602 reset-names = "usb0_reset",
603 "usb1_reset";
604 status = "disabled";
605 #phy-cells = <1>;
606 };
607
Andre Przywara62f3c122018-07-04 14:16:34 +0100608 ehci0: usb@1c1a000 {
Jagan Teki7e4bef72017-06-09 17:57:58 +0530609 compatible = "allwinner,sun50i-a64-ehci", "generic-ehci";
610 reg = <0x01c1a000 0x100>;
611 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
612 clocks = <&ccu CLK_BUS_OHCI0>,
613 <&ccu CLK_BUS_EHCI0>,
614 <&ccu CLK_USB_OHCI0>;
615 resets = <&ccu RST_BUS_OHCI0>,
616 <&ccu RST_BUS_EHCI0>;
Andre Przywara647b3922021-04-17 22:55:19 +0100617 phys = <&usbphy 0>;
618 phy-names = "usb";
Jagan Teki7e4bef72017-06-09 17:57:58 +0530619 status = "disabled";
620 };
621
Andre Przywara62f3c122018-07-04 14:16:34 +0100622 ohci0: usb@1c1a400 {
Jagan Teki7e4bef72017-06-09 17:57:58 +0530623 compatible = "allwinner,sun50i-a64-ohci", "generic-ohci";
624 reg = <0x01c1a400 0x100>;
625 interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
626 clocks = <&ccu CLK_BUS_OHCI0>,
627 <&ccu CLK_USB_OHCI0>;
628 resets = <&ccu RST_BUS_OHCI0>;
Andre Przywara647b3922021-04-17 22:55:19 +0100629 phys = <&usbphy 0>;
630 phy-names = "usb";
Jagan Teki7e4bef72017-06-09 17:57:58 +0530631 status = "disabled";
632 };
633
Andre Przywara62f3c122018-07-04 14:16:34 +0100634 ehci1: usb@1c1b000 {
Andre Przywaraf98852b2017-05-24 10:34:56 +0100635 compatible = "allwinner,sun50i-a64-ehci", "generic-ehci";
636 reg = <0x01c1b000 0x100>;
637 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
638 clocks = <&ccu CLK_BUS_OHCI1>,
639 <&ccu CLK_BUS_EHCI1>,
640 <&ccu CLK_USB_OHCI1>;
641 resets = <&ccu RST_BUS_OHCI1>,
642 <&ccu RST_BUS_EHCI1>;
643 phys = <&usbphy 1>;
644 phy-names = "usb";
645 status = "disabled";
646 };
647
Andre Przywara62f3c122018-07-04 14:16:34 +0100648 ohci1: usb@1c1b400 {
Andre Przywaraf98852b2017-05-24 10:34:56 +0100649 compatible = "allwinner,sun50i-a64-ohci", "generic-ohci";
650 reg = <0x01c1b400 0x100>;
651 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
652 clocks = <&ccu CLK_BUS_OHCI1>,
653 <&ccu CLK_USB_OHCI1>;
654 resets = <&ccu RST_BUS_OHCI1>;
655 phys = <&usbphy 1>;
656 phy-names = "usb";
657 status = "disabled";
658 };
659
Andre Przywara62f3c122018-07-04 14:16:34 +0100660 ccu: clock@1c20000 {
Andre Przywaraf98852b2017-05-24 10:34:56 +0100661 compatible = "allwinner,sun50i-a64-ccu";
662 reg = <0x01c20000 0x400>;
Samuel Hollande210ec02020-10-24 10:21:55 -0500663 clocks = <&osc24M>, <&rtc 0>;
Andre Przywaraf98852b2017-05-24 10:34:56 +0100664 clock-names = "hosc", "losc";
665 #clock-cells = <1>;
666 #reset-cells = <1>;
667 };
668
Andre Przywarac1fd2442016-05-04 22:15:33 +0100669 pio: pinctrl@1c20800 {
670 compatible = "allwinner,sun50i-a64-pinctrl";
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200671 reg = <0x01c20800 0x400>;
672 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
673 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
674 <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
Samuel Hollande210ec02020-10-24 10:21:55 -0500675 clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&rtc 0>;
676 clock-names = "apb", "hosc", "losc";
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200677 gpio-controller;
678 #gpio-cells = <3>;
679 interrupt-controller;
Andre Przywaraf98852b2017-05-24 10:34:56 +0100680 #interrupt-cells = <3>;
Andre Przywarac1fd2442016-05-04 22:15:33 +0100681
Samuel Holland77102822022-04-27 15:31:30 -0500682 /omit-if-no-ref/
683 aif2_pins: aif2-pins {
684 pins = "PB4", "PB5", "PB6", "PB7";
685 function = "aif2";
686 };
687
688 /omit-if-no-ref/
689 aif3_pins: aif3-pins {
690 pins = "PG10", "PG11", "PG12", "PG13";
691 function = "aif3";
692 };
693
Samuel Hollande210ec02020-10-24 10:21:55 -0500694 csi_pins: csi-pins {
695 pins = "PE0", "PE2", "PE3", "PE4", "PE5", "PE6",
696 "PE7", "PE8", "PE9", "PE10", "PE11";
697 function = "csi";
698 };
699
700 /omit-if-no-ref/
701 csi_mclk_pin: csi-mclk-pin {
702 pins = "PE1";
703 function = "csi";
704 };
705
706 i2c0_pins: i2c0-pins {
Andre Przywara62f3c122018-07-04 14:16:34 +0100707 pins = "PH0", "PH1";
708 function = "i2c0";
709 };
710
Samuel Hollande210ec02020-10-24 10:21:55 -0500711 i2c1_pins: i2c1-pins {
Andre Przywaraf98852b2017-05-24 10:34:56 +0100712 pins = "PH2", "PH3";
713 function = "i2c1";
Andre Przywarac1fd2442016-05-04 22:15:33 +0100714 };
715
Samuel Hollande210ec02020-10-24 10:21:55 -0500716 i2c2_pins: i2c2-pins {
717 pins = "PE14", "PE15";
718 function = "i2c2";
719 };
720
721 /omit-if-no-ref/
722 lcd_rgb666_pins: lcd-rgb666-pins {
723 pins = "PD0", "PD1", "PD2", "PD3", "PD4",
724 "PD5", "PD6", "PD7", "PD8", "PD9",
725 "PD10", "PD11", "PD12", "PD13",
726 "PD14", "PD15", "PD16", "PD17",
727 "PD18", "PD19", "PD20", "PD21";
728 function = "lcd0";
729 };
730
Andre Przywaraf98852b2017-05-24 10:34:56 +0100731 mmc0_pins: mmc0-pins {
732 pins = "PF0", "PF1", "PF2", "PF3",
733 "PF4", "PF5";
734 function = "mmc0";
735 drive-strength = <30>;
736 bias-pull-up;
Andre Przywarac1fd2442016-05-04 22:15:33 +0100737 };
Amit Singh Tomara29710c2016-07-06 17:59:44 +0530738
Andre Przywaraf98852b2017-05-24 10:34:56 +0100739 mmc1_pins: mmc1-pins {
740 pins = "PG0", "PG1", "PG2", "PG3",
741 "PG4", "PG5";
742 function = "mmc1";
743 drive-strength = <30>;
744 bias-pull-up;
Amit Singh Tomara29710c2016-07-06 17:59:44 +0530745 };
746
Andre Przywaraf98852b2017-05-24 10:34:56 +0100747 mmc2_pins: mmc2-pins {
Andre Przywara1b39a182018-10-29 00:56:47 +0000748 pins = "PC5", "PC6", "PC8", "PC9",
Andre Przywaraf98852b2017-05-24 10:34:56 +0100749 "PC10","PC11", "PC12", "PC13",
750 "PC14", "PC15", "PC16";
751 function = "mmc2";
752 drive-strength = <30>;
753 bias-pull-up;
Amit Singh Tomara29710c2016-07-06 17:59:44 +0530754 };
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200755
Andre Przywara1b39a182018-10-29 00:56:47 +0000756 mmc2_ds_pin: mmc2-ds-pin {
757 pins = "PC1";
758 function = "mmc2";
759 drive-strength = <30>;
760 bias-pull-up;
761 };
762
Samuel Hollande210ec02020-10-24 10:21:55 -0500763 pwm_pin: pwm-pin {
Andre Przywara1b39a182018-10-29 00:56:47 +0000764 pins = "PD22";
765 function = "pwm";
766 };
767
Samuel Hollande210ec02020-10-24 10:21:55 -0500768 rmii_pins: rmii-pins {
Andre Przywara62f3c122018-07-04 14:16:34 +0100769 pins = "PD10", "PD11", "PD13", "PD14", "PD17",
770 "PD18", "PD19", "PD20", "PD22", "PD23";
771 function = "emac";
772 drive-strength = <40>;
773 };
774
Samuel Hollande210ec02020-10-24 10:21:55 -0500775 rgmii_pins: rgmii-pins {
Andre Przywara62f3c122018-07-04 14:16:34 +0100776 pins = "PD8", "PD9", "PD10", "PD11", "PD12",
777 "PD13", "PD15", "PD16", "PD17", "PD18",
778 "PD19", "PD20", "PD21", "PD22", "PD23";
779 function = "emac";
780 drive-strength = <40>;
781 };
782
Samuel Hollande210ec02020-10-24 10:21:55 -0500783 spdif_tx_pin: spdif-tx-pin {
Andre Przywara62f3c122018-07-04 14:16:34 +0100784 pins = "PH8";
785 function = "spdif";
786 };
787
Samuel Hollande210ec02020-10-24 10:21:55 -0500788 spi0_pins: spi0-pins {
Andre Przywara62f3c122018-07-04 14:16:34 +0100789 pins = "PC0", "PC1", "PC2", "PC3";
790 function = "spi0";
791 };
792
Samuel Hollande210ec02020-10-24 10:21:55 -0500793 spi1_pins: spi1-pins {
Andre Przywara62f3c122018-07-04 14:16:34 +0100794 pins = "PD0", "PD1", "PD2", "PD3";
795 function = "spi1";
796 };
797
Andre Przywara1b39a182018-10-29 00:56:47 +0000798 uart0_pb_pins: uart0-pb-pins {
Andre Przywaraf98852b2017-05-24 10:34:56 +0100799 pins = "PB8", "PB9";
800 function = "uart0";
801 };
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200802
Samuel Hollande210ec02020-10-24 10:21:55 -0500803 uart1_pins: uart1-pins {
Andre Przywaraf98852b2017-05-24 10:34:56 +0100804 pins = "PG6", "PG7";
805 function = "uart1";
806 };
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200807
Samuel Hollande210ec02020-10-24 10:21:55 -0500808 uart1_rts_cts_pins: uart1-rts-cts-pins {
Andre Przywaraf98852b2017-05-24 10:34:56 +0100809 pins = "PG8", "PG9";
810 function = "uart1";
811 };
Andre Przywara62f3c122018-07-04 14:16:34 +0100812
813 uart2_pins: uart2-pins {
814 pins = "PB0", "PB1";
815 function = "uart2";
816 };
817
818 uart3_pins: uart3-pins {
819 pins = "PD0", "PD1";
820 function = "uart3";
821 };
822
823 uart4_pins: uart4-pins {
824 pins = "PD2", "PD3";
825 function = "uart4";
826 };
827
828 uart4_rts_cts_pins: uart4-rts-cts-pins {
829 pins = "PD4", "PD5";
830 function = "uart4";
831 };
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200832 };
833
Samuel Holland77102822022-04-27 15:31:30 -0500834 timer@1c20c00 {
835 compatible = "allwinner,sun50i-a64-timer",
836 "allwinner,sun8i-a23-timer";
837 reg = <0x01c20c00 0xa0>;
838 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
839 <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
840 clocks = <&osc24M>;
841 };
842
843 wdt0: watchdog@1c20ca0 {
844 compatible = "allwinner,sun50i-a64-wdt",
845 "allwinner,sun6i-a31-wdt";
846 reg = <0x01c20ca0 0x20>;
847 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
848 clocks = <&osc24M>;
849 };
850
Andre Przywara62f3c122018-07-04 14:16:34 +0100851 spdif: spdif@1c21000 {
852 #sound-dai-cells = <0>;
853 compatible = "allwinner,sun50i-a64-spdif",
854 "allwinner,sun8i-h3-spdif";
855 reg = <0x01c21000 0x400>;
856 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
857 clocks = <&ccu CLK_BUS_SPDIF>, <&ccu CLK_SPDIF>;
858 resets = <&ccu RST_BUS_SPDIF>;
859 clock-names = "apb", "spdif";
860 dmas = <&dma 2>;
861 dma-names = "tx";
862 pinctrl-names = "default";
863 pinctrl-0 = <&spdif_tx_pin>;
864 status = "disabled";
865 };
866
Samuel Hollande210ec02020-10-24 10:21:55 -0500867 lradc: lradc@1c21800 {
868 compatible = "allwinner,sun50i-a64-lradc",
869 "allwinner,sun8i-a83t-r-lradc";
870 reg = <0x01c21800 0x400>;
871 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
872 status = "disabled";
873 };
874
Andre Przywara62f3c122018-07-04 14:16:34 +0100875 i2s0: i2s@1c22000 {
876 #sound-dai-cells = <0>;
877 compatible = "allwinner,sun50i-a64-i2s",
878 "allwinner,sun8i-h3-i2s";
879 reg = <0x01c22000 0x400>;
880 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
881 clocks = <&ccu CLK_BUS_I2S0>, <&ccu CLK_I2S0>;
882 clock-names = "apb", "mod";
883 resets = <&ccu RST_BUS_I2S0>;
884 dma-names = "rx", "tx";
885 dmas = <&dma 3>, <&dma 3>;
886 status = "disabled";
887 };
888
889 i2s1: i2s@1c22400 {
890 #sound-dai-cells = <0>;
891 compatible = "allwinner,sun50i-a64-i2s",
892 "allwinner,sun8i-h3-i2s";
893 reg = <0x01c22400 0x400>;
894 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
895 clocks = <&ccu CLK_BUS_I2S1>, <&ccu CLK_I2S1>;
896 clock-names = "apb", "mod";
897 resets = <&ccu RST_BUS_I2S1>;
898 dma-names = "rx", "tx";
899 dmas = <&dma 4>, <&dma 4>;
900 status = "disabled";
901 };
902
Andre Przywara647b3922021-04-17 22:55:19 +0100903 i2s2: i2s@1c22800 {
904 #sound-dai-cells = <0>;
905 compatible = "allwinner,sun50i-a64-i2s",
906 "allwinner,sun8i-h3-i2s";
907 reg = <0x01c22800 0x400>;
908 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
909 clocks = <&ccu CLK_BUS_I2S2>, <&ccu CLK_I2S2>;
910 clock-names = "apb", "mod";
911 resets = <&ccu RST_BUS_I2S2>;
912 dma-names = "rx", "tx";
913 dmas = <&dma 27>, <&dma 27>;
914 status = "disabled";
915 };
916
Samuel Hollande210ec02020-10-24 10:21:55 -0500917 dai: dai@1c22c00 {
918 #sound-dai-cells = <0>;
919 compatible = "allwinner,sun50i-a64-codec-i2s";
920 reg = <0x01c22c00 0x200>;
921 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
922 clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>;
923 clock-names = "apb", "mod";
924 resets = <&ccu RST_BUS_CODEC>;
925 dmas = <&dma 15>, <&dma 15>;
926 dma-names = "rx", "tx";
927 status = "disabled";
928 };
929
930 codec: codec@1c22e00 {
Samuel Holland77102822022-04-27 15:31:30 -0500931 #sound-dai-cells = <1>;
Andre Przywara647b3922021-04-17 22:55:19 +0100932 compatible = "allwinner,sun50i-a64-codec",
933 "allwinner,sun8i-a33-codec";
Samuel Hollande210ec02020-10-24 10:21:55 -0500934 reg = <0x01c22e00 0x600>;
935 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
936 clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>;
937 clock-names = "bus", "mod";
938 status = "disabled";
939 };
940
941 ths: thermal-sensor@1c25000 {
942 compatible = "allwinner,sun50i-a64-ths";
943 reg = <0x01c25000 0x100>;
944 clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>;
945 clock-names = "bus", "mod";
946 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
947 resets = <&ccu RST_BUS_THS>;
948 nvmem-cells = <&ths_calibration>;
949 nvmem-cell-names = "calibration";
950 #thermal-sensor-cells = <1>;
951 };
952
Andre Przywarac1fd2442016-05-04 22:15:33 +0100953 uart0: serial@1c28000 {
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200954 compatible = "snps,dw-apb-uart";
955 reg = <0x01c28000 0x400>;
956 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
957 reg-shift = <2>;
958 reg-io-width = <4>;
Andre Przywara62f3c122018-07-04 14:16:34 +0100959 clocks = <&ccu CLK_BUS_UART0>;
960 resets = <&ccu RST_BUS_UART0>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200961 status = "disabled";
962 };
963
Andre Przywarac1fd2442016-05-04 22:15:33 +0100964 uart1: serial@1c28400 {
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200965 compatible = "snps,dw-apb-uart";
966 reg = <0x01c28400 0x400>;
967 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
968 reg-shift = <2>;
969 reg-io-width = <4>;
Andre Przywara62f3c122018-07-04 14:16:34 +0100970 clocks = <&ccu CLK_BUS_UART1>;
971 resets = <&ccu RST_BUS_UART1>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200972 status = "disabled";
973 };
974
Andre Przywarac1fd2442016-05-04 22:15:33 +0100975 uart2: serial@1c28800 {
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200976 compatible = "snps,dw-apb-uart";
977 reg = <0x01c28800 0x400>;
978 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
979 reg-shift = <2>;
980 reg-io-width = <4>;
Andre Przywara62f3c122018-07-04 14:16:34 +0100981 clocks = <&ccu CLK_BUS_UART2>;
982 resets = <&ccu RST_BUS_UART2>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200983 status = "disabled";
984 };
985
Andre Przywarac1fd2442016-05-04 22:15:33 +0100986 uart3: serial@1c28c00 {
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200987 compatible = "snps,dw-apb-uart";
988 reg = <0x01c28c00 0x400>;
989 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
990 reg-shift = <2>;
991 reg-io-width = <4>;
Andre Przywara62f3c122018-07-04 14:16:34 +0100992 clocks = <&ccu CLK_BUS_UART3>;
993 resets = <&ccu RST_BUS_UART3>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200994 status = "disabled";
995 };
996
Andre Przywarac1fd2442016-05-04 22:15:33 +0100997 uart4: serial@1c29000 {
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +0200998 compatible = "snps,dw-apb-uart";
999 reg = <0x01c29000 0x400>;
1000 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
1001 reg-shift = <2>;
1002 reg-io-width = <4>;
Andre Przywara62f3c122018-07-04 14:16:34 +01001003 clocks = <&ccu CLK_BUS_UART4>;
1004 resets = <&ccu RST_BUS_UART4>;
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +02001005 status = "disabled";
1006 };
1007
Andre Przywarac1fd2442016-05-04 22:15:33 +01001008 i2c0: i2c@1c2ac00 {
1009 compatible = "allwinner,sun6i-a31-i2c";
1010 reg = <0x01c2ac00 0x400>;
1011 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
Andre Przywara62f3c122018-07-04 14:16:34 +01001012 clocks = <&ccu CLK_BUS_I2C0>;
1013 resets = <&ccu RST_BUS_I2C0>;
Samuel Hollande210ec02020-10-24 10:21:55 -05001014 pinctrl-names = "default";
1015 pinctrl-0 = <&i2c0_pins>;
Andre Przywarac1fd2442016-05-04 22:15:33 +01001016 status = "disabled";
1017 #address-cells = <1>;
1018 #size-cells = <0>;
1019 };
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +02001020
Andre Przywarac1fd2442016-05-04 22:15:33 +01001021 i2c1: i2c@1c2b000 {
1022 compatible = "allwinner,sun6i-a31-i2c";
1023 reg = <0x01c2b000 0x400>;
1024 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
Andre Przywara62f3c122018-07-04 14:16:34 +01001025 clocks = <&ccu CLK_BUS_I2C1>;
1026 resets = <&ccu RST_BUS_I2C1>;
Samuel Hollande210ec02020-10-24 10:21:55 -05001027 pinctrl-names = "default";
1028 pinctrl-0 = <&i2c1_pins>;
Andre Przywarac1fd2442016-05-04 22:15:33 +01001029 status = "disabled";
1030 #address-cells = <1>;
1031 #size-cells = <0>;
1032 };
1033
1034 i2c2: i2c@1c2b400 {
1035 compatible = "allwinner,sun6i-a31-i2c";
1036 reg = <0x01c2b400 0x400>;
1037 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
Andre Przywara62f3c122018-07-04 14:16:34 +01001038 clocks = <&ccu CLK_BUS_I2C2>;
1039 resets = <&ccu RST_BUS_I2C2>;
Samuel Hollande210ec02020-10-24 10:21:55 -05001040 pinctrl-names = "default";
1041 pinctrl-0 = <&i2c2_pins>;
Andre Przywarac1fd2442016-05-04 22:15:33 +01001042 status = "disabled";
1043 #address-cells = <1>;
1044 #size-cells = <0>;
1045 };
Amit Singh Tomara29710c2016-07-06 17:59:44 +05301046
Andre Przywara62f3c122018-07-04 14:16:34 +01001047 spi0: spi@1c68000 {
1048 compatible = "allwinner,sun8i-h3-spi";
1049 reg = <0x01c68000 0x1000>;
1050 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
1051 clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
1052 clock-names = "ahb", "mod";
1053 dmas = <&dma 23>, <&dma 23>;
1054 dma-names = "rx", "tx";
1055 pinctrl-names = "default";
1056 pinctrl-0 = <&spi0_pins>;
1057 resets = <&ccu RST_BUS_SPI0>;
1058 status = "disabled";
1059 num-cs = <1>;
1060 #address-cells = <1>;
1061 #size-cells = <0>;
1062 };
1063
1064 spi1: spi@1c69000 {
1065 compatible = "allwinner,sun8i-h3-spi";
1066 reg = <0x01c69000 0x1000>;
1067 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
1068 clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
1069 clock-names = "ahb", "mod";
1070 dmas = <&dma 24>, <&dma 24>;
1071 dma-names = "rx", "tx";
1072 pinctrl-names = "default";
1073 pinctrl-0 = <&spi1_pins>;
1074 resets = <&ccu RST_BUS_SPI1>;
1075 status = "disabled";
1076 num-cs = <1>;
1077 #address-cells = <1>;
1078 #size-cells = <0>;
1079 };
1080
1081 emac: ethernet@1c30000 {
1082 compatible = "allwinner,sun50i-a64-emac";
1083 syscon = <&syscon>;
1084 reg = <0x01c30000 0x10000>;
1085 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
1086 interrupt-names = "macirq";
1087 resets = <&ccu RST_BUS_EMAC>;
1088 reset-names = "stmmaceth";
1089 clocks = <&ccu CLK_BUS_EMAC>;
1090 clock-names = "stmmaceth";
1091 status = "disabled";
Andre Przywara62f3c122018-07-04 14:16:34 +01001092
1093 mdio: mdio {
1094 compatible = "snps,dwmac-mdio";
1095 #address-cells = <1>;
1096 #size-cells = <0>;
1097 };
1098 };
1099
Samuel Hollande210ec02020-10-24 10:21:55 -05001100 mali: gpu@1c40000 {
1101 compatible = "allwinner,sun50i-a64-mali", "arm,mali-400";
1102 reg = <0x01c40000 0x10000>;
1103 interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
1104 <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
1105 <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
1106 <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
1107 <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
1108 <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
1109 <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
1110 interrupt-names = "gp",
1111 "gpmmu",
1112 "pp0",
1113 "ppmmu0",
1114 "pp1",
1115 "ppmmu1",
1116 "pmu";
1117 clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
1118 clock-names = "bus", "core";
1119 resets = <&ccu RST_BUS_GPU>;
Samuel Holland77102822022-04-27 15:31:30 -05001120 operating-points-v2 = <&gpu_opp_table>;
Samuel Hollande210ec02020-10-24 10:21:55 -05001121 };
1122
Andre Przywaraf98852b2017-05-24 10:34:56 +01001123 gic: interrupt-controller@1c81000 {
1124 compatible = "arm,gic-400";
1125 reg = <0x01c81000 0x1000>,
1126 <0x01c82000 0x2000>,
1127 <0x01c84000 0x2000>,
1128 <0x01c86000 0x2000>;
1129 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
1130 interrupt-controller;
1131 #interrupt-cells = <3>;
Amit Singh Tomara29710c2016-07-06 17:59:44 +05301132 };
Amit Singh Tomar9d6c9d92016-10-21 02:24:30 +01001133
Andre Przywara1b39a182018-10-29 00:56:47 +00001134 pwm: pwm@1c21400 {
1135 compatible = "allwinner,sun50i-a64-pwm",
1136 "allwinner,sun5i-a13-pwm";
1137 reg = <0x01c21400 0x400>;
1138 clocks = <&osc24M>;
1139 pinctrl-names = "default";
1140 pinctrl-0 = <&pwm_pin>;
1141 #pwm-cells = <3>;
1142 status = "disabled";
1143 };
1144
Samuel Hollande210ec02020-10-24 10:21:55 -05001145 mbus: dram-controller@1c62000 {
1146 compatible = "allwinner,sun50i-a64-mbus";
Samuel Holland77102822022-04-27 15:31:30 -05001147 reg = <0x01c62000 0x1000>,
1148 <0x01c63000 0x1000>;
1149 reg-names = "mbus", "dram";
1150 clocks = <&ccu CLK_MBUS>,
1151 <&ccu CLK_DRAM>,
1152 <&ccu CLK_BUS_DRAM>;
1153 clock-names = "mbus", "dram", "bus";
1154 interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
Samuel Hollande210ec02020-10-24 10:21:55 -05001155 #address-cells = <1>;
1156 #size-cells = <1>;
1157 dma-ranges = <0x00000000 0x40000000 0xc0000000>;
1158 #interconnect-cells = <1>;
1159 };
1160
1161 csi: csi@1cb0000 {
1162 compatible = "allwinner,sun50i-a64-csi";
1163 reg = <0x01cb0000 0x1000>;
1164 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
1165 clocks = <&ccu CLK_BUS_CSI>,
1166 <&ccu CLK_CSI_SCLK>,
1167 <&ccu CLK_DRAM_CSI>;
1168 clock-names = "bus", "mod", "ram";
1169 resets = <&ccu RST_BUS_CSI>;
1170 pinctrl-names = "default";
1171 pinctrl-0 = <&csi_pins>;
1172 status = "disabled";
1173 };
1174
1175 dsi: dsi@1ca0000 {
1176 compatible = "allwinner,sun50i-a64-mipi-dsi";
1177 reg = <0x01ca0000 0x1000>;
1178 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
1179 clocks = <&ccu CLK_BUS_MIPI_DSI>;
1180 resets = <&ccu RST_BUS_MIPI_DSI>;
1181 phys = <&dphy>;
1182 phy-names = "dphy";
1183 status = "disabled";
1184 #address-cells = <1>;
1185 #size-cells = <0>;
1186
1187 port {
1188 dsi_in_tcon0: endpoint {
1189 remote-endpoint = <&tcon0_out_dsi>;
1190 };
1191 };
1192 };
1193
1194 dphy: d-phy@1ca1000 {
1195 compatible = "allwinner,sun50i-a64-mipi-dphy",
1196 "allwinner,sun6i-a31-mipi-dphy";
1197 reg = <0x01ca1000 0x1000>;
1198 clocks = <&ccu CLK_BUS_MIPI_DSI>,
1199 <&ccu CLK_DSI_DPHY>;
1200 clock-names = "bus", "mod";
1201 resets = <&ccu RST_BUS_MIPI_DSI>;
1202 status = "disabled";
1203 #phy-cells = <0>;
1204 };
1205
1206 deinterlace: deinterlace@1e00000 {
1207 compatible = "allwinner,sun50i-a64-deinterlace",
1208 "allwinner,sun8i-h3-deinterlace";
1209 reg = <0x01e00000 0x20000>;
1210 clocks = <&ccu CLK_BUS_DEINTERLACE>,
1211 <&ccu CLK_DEINTERLACE>,
1212 <&ccu CLK_DRAM_DEINTERLACE>;
1213 clock-names = "bus", "mod", "ram";
1214 resets = <&ccu RST_BUS_DEINTERLACE>;
1215 interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
1216 interconnects = <&mbus 9>;
1217 interconnect-names = "dma-mem";
1218 };
1219
Andre Przywara1b39a182018-10-29 00:56:47 +00001220 hdmi: hdmi@1ee0000 {
1221 compatible = "allwinner,sun50i-a64-dw-hdmi",
1222 "allwinner,sun8i-a83t-dw-hdmi";
1223 reg = <0x01ee0000 0x10000>;
1224 reg-io-width = <1>;
1225 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
1226 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>,
Samuel Holland77102822022-04-27 15:31:30 -05001227 <&ccu CLK_HDMI>, <&rtc 0>;
1228 clock-names = "iahb", "isfr", "tmds", "cec";
Andre Przywara1b39a182018-10-29 00:56:47 +00001229 resets = <&ccu RST_BUS_HDMI1>;
1230 reset-names = "ctrl";
1231 phys = <&hdmi_phy>;
Samuel Hollande210ec02020-10-24 10:21:55 -05001232 phy-names = "phy";
Andre Przywara1b39a182018-10-29 00:56:47 +00001233 status = "disabled";
1234
1235 ports {
1236 #address-cells = <1>;
1237 #size-cells = <0>;
1238
1239 hdmi_in: port@0 {
1240 reg = <0>;
1241
1242 hdmi_in_tcon1: endpoint {
1243 remote-endpoint = <&tcon1_out_hdmi>;
1244 };
1245 };
1246
1247 hdmi_out: port@1 {
1248 reg = <1>;
1249 };
1250 };
1251 };
1252
1253 hdmi_phy: hdmi-phy@1ef0000 {
1254 compatible = "allwinner,sun50i-a64-hdmi-phy";
1255 reg = <0x01ef0000 0x10000>;
1256 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>,
Samuel Hollande210ec02020-10-24 10:21:55 -05001257 <&ccu CLK_PLL_VIDEO0>;
Andre Przywara1b39a182018-10-29 00:56:47 +00001258 clock-names = "bus", "mod", "pll-0";
1259 resets = <&ccu RST_BUS_HDMI0>;
1260 reset-names = "phy";
1261 #phy-cells = <0>;
1262 };
1263
Andre Przywaraf98852b2017-05-24 10:34:56 +01001264 rtc: rtc@1f00000 {
Samuel Hollande210ec02020-10-24 10:21:55 -05001265 compatible = "allwinner,sun50i-a64-rtc",
1266 "allwinner,sun8i-h3-rtc";
1267 reg = <0x01f00000 0x400>;
Andre Przywaraf98852b2017-05-24 10:34:56 +01001268 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
1269 <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
Samuel Hollande210ec02020-10-24 10:21:55 -05001270 clock-output-names = "osc32k", "osc32k-out", "iosc";
Andre Przywara1b39a182018-10-29 00:56:47 +00001271 clocks = <&osc32k>;
1272 #clock-cells = <1>;
Amit Singh Tomar9d6c9d92016-10-21 02:24:30 +01001273 };
1274
Andre Przywara62f3c122018-07-04 14:16:34 +01001275 r_intc: interrupt-controller@1f00c00 {
1276 compatible = "allwinner,sun50i-a64-r-intc",
1277 "allwinner,sun6i-a31-r-intc";
1278 interrupt-controller;
1279 #interrupt-cells = <2>;
1280 reg = <0x01f00c00 0x400>;
1281 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
1282 };
1283
Andre Przywaraf98852b2017-05-24 10:34:56 +01001284 r_ccu: clock@1f01400 {
1285 compatible = "allwinner,sun50i-a64-r-ccu";
1286 reg = <0x01f01400 0x100>;
Samuel Hollande210ec02020-10-24 10:21:55 -05001287 clocks = <&osc24M>, <&rtc 0>, <&rtc 2>,
1288 <&ccu CLK_PLL_PERIPH0>;
Andre Przywara62f3c122018-07-04 14:16:34 +01001289 clock-names = "hosc", "losc", "iosc", "pll-periph";
Andre Przywaraf98852b2017-05-24 10:34:56 +01001290 #clock-cells = <1>;
1291 #reset-cells = <1>;
Amit Singh Tomar9d6c9d92016-10-21 02:24:30 +01001292 };
1293
Samuel Hollande210ec02020-10-24 10:21:55 -05001294 codec_analog: codec-analog@1f015c0 {
1295 compatible = "allwinner,sun50i-a64-codec-analog";
1296 reg = <0x01f015c0 0x4>;
1297 status = "disabled";
1298 };
1299
Andre Przywara1b39a182018-10-29 00:56:47 +00001300 r_i2c: i2c@1f02400 {
1301 compatible = "allwinner,sun50i-a64-i2c",
1302 "allwinner,sun6i-a31-i2c";
1303 reg = <0x01f02400 0x400>;
1304 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
1305 clocks = <&r_ccu CLK_APB0_I2C>;
1306 resets = <&r_ccu RST_APB0_I2C>;
1307 status = "disabled";
1308 #address-cells = <1>;
1309 #size-cells = <0>;
1310 };
1311
Samuel Hollande210ec02020-10-24 10:21:55 -05001312 r_ir: ir@1f02000 {
1313 compatible = "allwinner,sun50i-a64-ir",
1314 "allwinner,sun6i-a31-ir";
1315 reg = <0x01f02000 0x400>;
1316 clocks = <&r_ccu CLK_APB0_IR>, <&r_ccu CLK_IR>;
1317 clock-names = "apb", "ir";
1318 resets = <&r_ccu RST_APB0_IR>;
1319 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
1320 pinctrl-names = "default";
1321 pinctrl-0 = <&r_ir_rx_pin>;
1322 status = "disabled";
1323 };
1324
Andre Przywara1b39a182018-10-29 00:56:47 +00001325 r_pwm: pwm@1f03800 {
1326 compatible = "allwinner,sun50i-a64-pwm",
1327 "allwinner,sun5i-a13-pwm";
1328 reg = <0x01f03800 0x400>;
1329 clocks = <&osc24M>;
1330 pinctrl-names = "default";
1331 pinctrl-0 = <&r_pwm_pin>;
1332 #pwm-cells = <3>;
1333 status = "disabled";
1334 };
1335
Andre Przywara62f3c122018-07-04 14:16:34 +01001336 r_pio: pinctrl@1f02c00 {
Andre Przywaraf98852b2017-05-24 10:34:56 +01001337 compatible = "allwinner,sun50i-a64-r-pinctrl";
1338 reg = <0x01f02c00 0x400>;
1339 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
Andre Przywara62f3c122018-07-04 14:16:34 +01001340 clocks = <&r_ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>;
Andre Przywaraf98852b2017-05-24 10:34:56 +01001341 clock-names = "apb", "hosc", "losc";
1342 gpio-controller;
1343 #gpio-cells = <3>;
1344 interrupt-controller;
1345 #interrupt-cells = <3>;
Andre Przywara62f3c122018-07-04 14:16:34 +01001346
Andre Przywara1b39a182018-10-29 00:56:47 +00001347 r_i2c_pl89_pins: r-i2c-pl89-pins {
1348 pins = "PL8", "PL9";
1349 function = "s_i2c";
1350 };
1351
Samuel Hollande210ec02020-10-24 10:21:55 -05001352 r_ir_rx_pin: r-ir-rx-pin {
1353 pins = "PL11";
1354 function = "s_cir_rx";
1355 };
1356
1357 r_pwm_pin: r-pwm-pin {
Andre Przywara1b39a182018-10-29 00:56:47 +00001358 pins = "PL10";
1359 function = "s_pwm";
1360 };
1361
Samuel Hollande210ec02020-10-24 10:21:55 -05001362 r_rsb_pins: r-rsb-pins {
Andre Przywara62f3c122018-07-04 14:16:34 +01001363 pins = "PL0", "PL1";
1364 function = "s_rsb";
1365 };
1366 };
1367
1368 r_rsb: rsb@1f03400 {
1369 compatible = "allwinner,sun8i-a23-rsb";
1370 reg = <0x01f03400 0x400>;
1371 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
1372 clocks = <&r_ccu 6>;
1373 clock-frequency = <3000000>;
1374 resets = <&r_ccu 2>;
1375 pinctrl-names = "default";
1376 pinctrl-0 = <&r_rsb_pins>;
1377 status = "disabled";
1378 #address-cells = <1>;
1379 #size-cells = <0>;
1380 };
Siarhei Siamashkad96ebc42016-03-29 17:29:10 +02001381 };
1382};