blob: 3f39e020f74e62ede06732b5ac4046324f2adada [file] [log] [blame]
Andreas Färber1a87cc72019-10-09 16:03:54 +02001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2018 Amlogic, Inc. All rights reserved.
4 */
5
6#include <dt-bindings/phy/phy.h>
7#include <dt-bindings/gpio/gpio.h>
8#include <dt-bindings/clock/axg-audio-clkc.h>
9#include <dt-bindings/clock/g12a-clkc.h>
10#include <dt-bindings/clock/g12a-aoclkc.h>
11#include <dt-bindings/interrupt-controller/irq.h>
12#include <dt-bindings/interrupt-controller/arm-gic.h>
13#include <dt-bindings/reset/amlogic,meson-axg-audio-arb.h>
14#include <dt-bindings/reset/amlogic,meson-g12a-audio-reset.h>
15#include <dt-bindings/reset/amlogic,meson-g12a-reset.h>
16
17/ {
18 interrupt-parent = <&gic>;
19 #address-cells = <2>;
20 #size-cells = <2>;
21
22 tdmif_a: audio-controller-0 {
23 compatible = "amlogic,axg-tdm-iface";
24 #sound-dai-cells = <0>;
25 sound-name-prefix = "TDM_A";
26 clocks = <&clkc_audio AUD_CLKID_MST_A_MCLK>,
27 <&clkc_audio AUD_CLKID_MST_A_SCLK>,
28 <&clkc_audio AUD_CLKID_MST_A_LRCLK>;
29 clock-names = "mclk", "sclk", "lrclk";
30 status = "disabled";
31 };
32
33 tdmif_b: audio-controller-1 {
34 compatible = "amlogic,axg-tdm-iface";
35 #sound-dai-cells = <0>;
36 sound-name-prefix = "TDM_B";
37 clocks = <&clkc_audio AUD_CLKID_MST_B_MCLK>,
38 <&clkc_audio AUD_CLKID_MST_B_SCLK>,
39 <&clkc_audio AUD_CLKID_MST_B_LRCLK>;
40 clock-names = "mclk", "sclk", "lrclk";
41 status = "disabled";
42 };
43
44 tdmif_c: audio-controller-2 {
45 compatible = "amlogic,axg-tdm-iface";
46 #sound-dai-cells = <0>;
47 sound-name-prefix = "TDM_C";
48 clocks = <&clkc_audio AUD_CLKID_MST_C_MCLK>,
49 <&clkc_audio AUD_CLKID_MST_C_SCLK>,
50 <&clkc_audio AUD_CLKID_MST_C_LRCLK>;
51 clock-names = "mclk", "sclk", "lrclk";
52 status = "disabled";
53 };
54
55 efuse: efuse {
56 compatible = "amlogic,meson-gxbb-efuse";
57 clocks = <&clkc CLKID_EFUSE>;
58 #address-cells = <1>;
59 #size-cells = <1>;
60 read-only;
61 };
62
63 psci {
64 compatible = "arm,psci-1.0";
65 method = "smc";
66 };
67
68 reserved-memory {
69 #address-cells = <2>;
70 #size-cells = <2>;
71 ranges;
72
73 /* 3 MiB reserved for ARM Trusted Firmware (BL31) */
74 secmon_reserved: secmon@5000000 {
75 reg = <0x0 0x05000000 0x0 0x300000>;
76 no-map;
77 };
78
79 linux,cma {
80 compatible = "shared-dma-pool";
81 reusable;
82 size = <0x0 0x10000000>;
83 alignment = <0x0 0x400000>;
84 linux,cma-default;
85 };
86 };
87
88 sm: secure-monitor {
89 compatible = "amlogic,meson-gxbb-sm";
90 };
91
92 soc {
93 compatible = "simple-bus";
94 #address-cells = <2>;
95 #size-cells = <2>;
96 ranges;
97
98 ethmac: ethernet@ff3f0000 {
99 compatible = "amlogic,meson-axg-dwmac",
100 "snps,dwmac-3.70a",
101 "snps,dwmac";
102 reg = <0x0 0xff3f0000 0x0 0x10000>,
103 <0x0 0xff634540 0x0 0x8>;
104 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
105 interrupt-names = "macirq";
106 clocks = <&clkc CLKID_ETH>,
107 <&clkc CLKID_FCLK_DIV2>,
108 <&clkc CLKID_MPLL2>;
109 clock-names = "stmmaceth", "clkin0", "clkin1";
110 rx-fifo-depth = <4096>;
111 tx-fifo-depth = <2048>;
112 status = "disabled";
113
114 mdio0: mdio {
115 #address-cells = <1>;
116 #size-cells = <0>;
117 compatible = "snps,dwmac-mdio";
118 };
119 };
120
121 apb: bus@ff600000 {
122 compatible = "simple-bus";
123 reg = <0x0 0xff600000 0x0 0x200000>;
124 #address-cells = <2>;
125 #size-cells = <2>;
126 ranges = <0x0 0x0 0x0 0xff600000 0x0 0x200000>;
127
128 hdmi_tx: hdmi-tx@0 {
129 compatible = "amlogic,meson-g12a-dw-hdmi";
130 reg = <0x0 0x0 0x0 0x10000>;
131 interrupts = <GIC_SPI 57 IRQ_TYPE_EDGE_RISING>;
132 resets = <&reset RESET_HDMITX_CAPB3>,
133 <&reset RESET_HDMITX_PHY>,
134 <&reset RESET_HDMITX>;
135 reset-names = "hdmitx_apb", "hdmitx", "hdmitx_phy";
136 clocks = <&clkc CLKID_HDMI>,
137 <&clkc CLKID_HTX_PCLK>,
138 <&clkc CLKID_VPU_INTR>;
139 clock-names = "isfr", "iahb", "venci";
140 #address-cells = <1>;
141 #size-cells = <0>;
142 #sound-dai-cells = <0>;
143 status = "disabled";
144
145 /* VPU VENC Input */
146 hdmi_tx_venc_port: port@0 {
147 reg = <0>;
148
149 hdmi_tx_in: endpoint {
150 remote-endpoint = <&hdmi_tx_out>;
151 };
152 };
153
154 /* TMDS Output */
155 hdmi_tx_tmds_port: port@1 {
156 reg = <1>;
157 };
158 };
159
160 apb_efuse: bus@30000 {
161 compatible = "simple-bus";
162 reg = <0x0 0x30000 0x0 0x2000>;
163 #address-cells = <2>;
164 #size-cells = <2>;
165 ranges = <0x0 0x0 0x0 0x30000 0x0 0x2000>;
166
167 hwrng: rng@218 {
168 compatible = "amlogic,meson-rng";
169 reg = <0x0 0x218 0x0 0x4>;
170 };
171 };
172
173 periphs: bus@34400 {
174 compatible = "simple-bus";
175 reg = <0x0 0x34400 0x0 0x400>;
176 #address-cells = <2>;
177 #size-cells = <2>;
178 ranges = <0x0 0x0 0x0 0x34400 0x0 0x400>;
179
180 periphs_pinctrl: pinctrl@40 {
181 compatible = "amlogic,meson-g12a-periphs-pinctrl";
182 #address-cells = <2>;
183 #size-cells = <2>;
184 ranges;
185
186 gpio: bank@40 {
187 reg = <0x0 0x40 0x0 0x4c>,
188 <0x0 0xe8 0x0 0x18>,
189 <0x0 0x120 0x0 0x18>,
190 <0x0 0x2c0 0x0 0x40>,
191 <0x0 0x340 0x0 0x1c>;
192 reg-names = "gpio",
193 "pull",
194 "pull-enable",
195 "mux",
196 "ds";
197 gpio-controller;
198 #gpio-cells = <2>;
199 gpio-ranges = <&periphs_pinctrl 0 0 86>;
200 };
201
202 cec_ao_a_h_pins: cec_ao_a_h {
203 mux {
204 groups = "cec_ao_a_h";
205 function = "cec_ao_a_h";
206 bias-disable;
207 };
208 };
209
210 cec_ao_b_h_pins: cec_ao_b_h {
211 mux {
212 groups = "cec_ao_b_h";
213 function = "cec_ao_b_h";
214 bias-disable;
215 };
216 };
217
218 emmc_pins: emmc {
219 mux-0 {
220 groups = "emmc_nand_d0",
221 "emmc_nand_d1",
222 "emmc_nand_d2",
223 "emmc_nand_d3",
224 "emmc_nand_d4",
225 "emmc_nand_d5",
226 "emmc_nand_d6",
227 "emmc_nand_d7",
228 "emmc_cmd";
229 function = "emmc";
230 bias-pull-up;
231 drive-strength-microamp = <4000>;
232 };
233
234 mux-1 {
235 groups = "emmc_clk";
236 function = "emmc";
237 bias-disable;
238 drive-strength-microamp = <4000>;
239 };
240 };
241
242 emmc_ds_pins: emmc-ds {
243 mux {
244 groups = "emmc_nand_ds";
245 function = "emmc";
246 bias-pull-down;
247 drive-strength-microamp = <4000>;
248 };
249 };
250
251 emmc_clk_gate_pins: emmc_clk_gate {
252 mux {
253 groups = "BOOT_8";
254 function = "gpio_periphs";
255 bias-pull-down;
256 drive-strength-microamp = <4000>;
257 };
258 };
259
260 hdmitx_ddc_pins: hdmitx_ddc {
261 mux {
262 groups = "hdmitx_sda",
263 "hdmitx_sck";
264 function = "hdmitx";
265 bias-disable;
266 drive-strength-microamp = <4000>;
267 };
268 };
269
270 hdmitx_hpd_pins: hdmitx_hpd {
271 mux {
272 groups = "hdmitx_hpd_in";
273 function = "hdmitx";
274 bias-disable;
275 };
276 };
277
278
279 i2c0_sda_c_pins: i2c0-sda-c {
280 mux {
281 groups = "i2c0_sda_c";
282 function = "i2c0";
283 bias-disable;
284 drive-strength-microamp = <3000>;
285
286 };
287 };
288
289 i2c0_sck_c_pins: i2c0-sck-c {
290 mux {
291 groups = "i2c0_sck_c";
292 function = "i2c0";
293 bias-disable;
294 drive-strength-microamp = <3000>;
295 };
296 };
297
298 i2c0_sda_z0_pins: i2c0-sda-z0 {
299 mux {
300 groups = "i2c0_sda_z0";
301 function = "i2c0";
302 bias-disable;
303 drive-strength-microamp = <3000>;
304 };
305 };
306
307 i2c0_sck_z1_pins: i2c0-sck-z1 {
308 mux {
309 groups = "i2c0_sck_z1";
310 function = "i2c0";
311 bias-disable;
312 drive-strength-microamp = <3000>;
313 };
314 };
315
316 i2c0_sda_z7_pins: i2c0-sda-z7 {
317 mux {
318 groups = "i2c0_sda_z7";
319 function = "i2c0";
320 bias-disable;
321 drive-strength-microamp = <3000>;
322 };
323 };
324
325 i2c0_sda_z8_pins: i2c0-sda-z8 {
326 mux {
327 groups = "i2c0_sda_z8";
328 function = "i2c0";
329 bias-disable;
330 drive-strength-microamp = <3000>;
331 };
332 };
333
334 i2c1_sda_x_pins: i2c1-sda-x {
335 mux {
336 groups = "i2c1_sda_x";
337 function = "i2c1";
338 bias-disable;
339 drive-strength-microamp = <3000>;
340 };
341 };
342
343 i2c1_sck_x_pins: i2c1-sck-x {
344 mux {
345 groups = "i2c1_sck_x";
346 function = "i2c1";
347 bias-disable;
348 drive-strength-microamp = <3000>;
349 };
350 };
351
352 i2c1_sda_h2_pins: i2c1-sda-h2 {
353 mux {
354 groups = "i2c1_sda_h2";
355 function = "i2c1";
356 bias-disable;
357 drive-strength-microamp = <3000>;
358 };
359 };
360
361 i2c1_sck_h3_pins: i2c1-sck-h3 {
362 mux {
363 groups = "i2c1_sck_h3";
364 function = "i2c1";
365 bias-disable;
366 drive-strength-microamp = <3000>;
367 };
368 };
369
370 i2c1_sda_h6_pins: i2c1-sda-h6 {
371 mux {
372 groups = "i2c1_sda_h6";
373 function = "i2c1";
374 bias-disable;
375 drive-strength-microamp = <3000>;
376 };
377 };
378
379 i2c1_sck_h7_pins: i2c1-sck-h7 {
380 mux {
381 groups = "i2c1_sck_h7";
382 function = "i2c1";
383 bias-disable;
384 drive-strength-microamp = <3000>;
385 };
386 };
387
388 i2c2_sda_x_pins: i2c2-sda-x {
389 mux {
390 groups = "i2c2_sda_x";
391 function = "i2c2";
392 bias-disable;
393 drive-strength-microamp = <3000>;
394 };
395 };
396
397 i2c2_sck_x_pins: i2c2-sck-x {
398 mux {
399 groups = "i2c2_sck_x";
400 function = "i2c2";
401 bias-disable;
402 drive-strength-microamp = <3000>;
403 };
404 };
405
406 i2c2_sda_z_pins: i2c2-sda-z {
407 mux {
408 groups = "i2c2_sda_z";
409 function = "i2c2";
410 bias-disable;
411 drive-strength-microamp = <3000>;
412 };
413 };
414
415 i2c2_sck_z_pins: i2c2-sck-z {
416 mux {
417 groups = "i2c2_sck_z";
418 function = "i2c2";
419 bias-disable;
420 drive-strength-microamp = <3000>;
421 };
422 };
423
424 i2c3_sda_h_pins: i2c3-sda-h {
425 mux {
426 groups = "i2c3_sda_h";
427 function = "i2c3";
428 bias-disable;
429 drive-strength-microamp = <3000>;
430 };
431 };
432
433 i2c3_sck_h_pins: i2c3-sck-h {
434 mux {
435 groups = "i2c3_sck_h";
436 function = "i2c3";
437 bias-disable;
438 drive-strength-microamp = <3000>;
439 };
440 };
441
442 i2c3_sda_a_pins: i2c3-sda-a {
443 mux {
444 groups = "i2c3_sda_a";
445 function = "i2c3";
446 bias-disable;
447 drive-strength-microamp = <3000>;
448 };
449 };
450
451 i2c3_sck_a_pins: i2c3-sck-a {
452 mux {
453 groups = "i2c3_sck_a";
454 function = "i2c3";
455 bias-disable;
456 drive-strength-microamp = <3000>;
457 };
458 };
459
460 mclk0_a_pins: mclk0-a {
461 mux {
462 groups = "mclk0_a";
463 function = "mclk0";
464 bias-disable;
465 drive-strength-microamp = <3000>;
466 };
467 };
468
469 mclk1_a_pins: mclk1-a {
470 mux {
471 groups = "mclk1_a";
472 function = "mclk1";
473 bias-disable;
474 drive-strength-microamp = <3000>;
475 };
476 };
477
478 mclk1_x_pins: mclk1-x {
479 mux {
480 groups = "mclk1_x";
481 function = "mclk1";
482 bias-disable;
483 drive-strength-microamp = <3000>;
484 };
485 };
486
487 mclk1_z_pins: mclk1-z {
488 mux {
489 groups = "mclk1_z";
490 function = "mclk1";
491 bias-disable;
492 drive-strength-microamp = <3000>;
493 };
494 };
495
496 pdm_din0_a_pins: pdm-din0-a {
497 mux {
498 groups = "pdm_din0_a";
499 function = "pdm";
500 bias-disable;
501 };
502 };
503
504 pdm_din0_c_pins: pdm-din0-c {
505 mux {
506 groups = "pdm_din0_c";
507 function = "pdm";
508 bias-disable;
509 };
510 };
511
512 pdm_din0_x_pins: pdm-din0-x {
513 mux {
514 groups = "pdm_din0_x";
515 function = "pdm";
516 bias-disable;
517 };
518 };
519
520 pdm_din0_z_pins: pdm-din0-z {
521 mux {
522 groups = "pdm_din0_z";
523 function = "pdm";
524 bias-disable;
525 };
526 };
527
528 pdm_din1_a_pins: pdm-din1-a {
529 mux {
530 groups = "pdm_din1_a";
531 function = "pdm";
532 bias-disable;
533 };
534 };
535
536 pdm_din1_c_pins: pdm-din1-c {
537 mux {
538 groups = "pdm_din1_c";
539 function = "pdm";
540 bias-disable;
541 };
542 };
543
544 pdm_din1_x_pins: pdm-din1-x {
545 mux {
546 groups = "pdm_din1_x";
547 function = "pdm";
548 bias-disable;
549 };
550 };
551
552 pdm_din1_z_pins: pdm-din1-z {
553 mux {
554 groups = "pdm_din1_z";
555 function = "pdm";
556 bias-disable;
557 };
558 };
559
560 pdm_din2_a_pins: pdm-din2-a {
561 mux {
562 groups = "pdm_din2_a";
563 function = "pdm";
564 bias-disable;
565 };
566 };
567
568 pdm_din2_c_pins: pdm-din2-c {
569 mux {
570 groups = "pdm_din2_c";
571 function = "pdm";
572 bias-disable;
573 };
574 };
575
576 pdm_din2_x_pins: pdm-din2-x {
577 mux {
578 groups = "pdm_din2_x";
579 function = "pdm";
580 bias-disable;
581 };
582 };
583
584 pdm_din2_z_pins: pdm-din2-z {
585 mux {
586 groups = "pdm_din2_z";
587 function = "pdm";
588 bias-disable;
589 };
590 };
591
592 pdm_din3_a_pins: pdm-din3-a {
593 mux {
594 groups = "pdm_din3_a";
595 function = "pdm";
596 bias-disable;
597 };
598 };
599
600 pdm_din3_c_pins: pdm-din3-c {
601 mux {
602 groups = "pdm_din3_c";
603 function = "pdm";
604 bias-disable;
605 };
606 };
607
608 pdm_din3_x_pins: pdm-din3-x {
609 mux {
610 groups = "pdm_din3_x";
611 function = "pdm";
612 bias-disable;
613 };
614 };
615
616 pdm_din3_z_pins: pdm-din3-z {
617 mux {
618 groups = "pdm_din3_z";
619 function = "pdm";
620 bias-disable;
621 };
622 };
623
624 pdm_dclk_a_pins: pdm-dclk-a {
625 mux {
626 groups = "pdm_dclk_a";
627 function = "pdm";
628 bias-disable;
629 drive-strength-microamp = <500>;
630 };
631 };
632
633 pdm_dclk_c_pins: pdm-dclk-c {
634 mux {
635 groups = "pdm_dclk_c";
636 function = "pdm";
637 bias-disable;
638 drive-strength-microamp = <500>;
639 };
640 };
641
642 pdm_dclk_x_pins: pdm-dclk-x {
643 mux {
644 groups = "pdm_dclk_x";
645 function = "pdm";
646 bias-disable;
647 drive-strength-microamp = <500>;
648 };
649 };
650
651 pdm_dclk_z_pins: pdm-dclk-z {
652 mux {
653 groups = "pdm_dclk_z";
654 function = "pdm";
655 bias-disable;
656 drive-strength-microamp = <500>;
657 };
658 };
659
660 pwm_a_pins: pwm-a {
661 mux {
662 groups = "pwm_a";
663 function = "pwm_a";
664 bias-disable;
665 };
666 };
667
668 pwm_b_x7_pins: pwm-b-x7 {
669 mux {
670 groups = "pwm_b_x7";
671 function = "pwm_b";
672 bias-disable;
673 };
674 };
675
676 pwm_b_x19_pins: pwm-b-x19 {
677 mux {
678 groups = "pwm_b_x19";
679 function = "pwm_b";
680 bias-disable;
681 };
682 };
683
684 pwm_c_c_pins: pwm-c-c {
685 mux {
686 groups = "pwm_c_c";
687 function = "pwm_c";
688 bias-disable;
689 };
690 };
691
692 pwm_c_x5_pins: pwm-c-x5 {
693 mux {
694 groups = "pwm_c_x5";
695 function = "pwm_c";
696 bias-disable;
697 };
698 };
699
700 pwm_c_x8_pins: pwm-c-x8 {
701 mux {
702 groups = "pwm_c_x8";
703 function = "pwm_c";
704 bias-disable;
705 };
706 };
707
708 pwm_d_x3_pins: pwm-d-x3 {
709 mux {
710 groups = "pwm_d_x3";
711 function = "pwm_d";
712 bias-disable;
713 };
714 };
715
716 pwm_d_x6_pins: pwm-d-x6 {
717 mux {
718 groups = "pwm_d_x6";
719 function = "pwm_d";
720 bias-disable;
721 };
722 };
723
724 pwm_e_pins: pwm-e {
725 mux {
726 groups = "pwm_e";
727 function = "pwm_e";
728 bias-disable;
729 };
730 };
731
732 pwm_f_x_pins: pwm-f-x {
733 mux {
734 groups = "pwm_f_x";
735 function = "pwm_f";
736 bias-disable;
737 };
738 };
739
740 pwm_f_h_pins: pwm-f-h {
741 mux {
742 groups = "pwm_f_h";
743 function = "pwm_f";
744 bias-disable;
745 };
746 };
747
748 sdcard_c_pins: sdcard_c {
749 mux-0 {
750 groups = "sdcard_d0_c",
751 "sdcard_d1_c",
752 "sdcard_d2_c",
753 "sdcard_d3_c",
754 "sdcard_cmd_c";
755 function = "sdcard";
756 bias-pull-up;
757 drive-strength-microamp = <4000>;
758 };
759
760 mux-1 {
761 groups = "sdcard_clk_c";
762 function = "sdcard";
763 bias-disable;
764 drive-strength-microamp = <4000>;
765 };
766 };
767
768 sdcard_clk_gate_c_pins: sdcard_clk_gate_c {
769 mux {
770 groups = "GPIOC_4";
771 function = "gpio_periphs";
772 bias-pull-down;
773 drive-strength-microamp = <4000>;
774 };
775 };
776
777 sdcard_z_pins: sdcard_z {
778 mux-0 {
779 groups = "sdcard_d0_z",
780 "sdcard_d1_z",
781 "sdcard_d2_z",
782 "sdcard_d3_z",
783 "sdcard_cmd_z";
784 function = "sdcard";
785 bias-pull-up;
786 drive-strength-microamp = <4000>;
787 };
788
789 mux-1 {
790 groups = "sdcard_clk_z";
791 function = "sdcard";
792 bias-disable;
793 drive-strength-microamp = <4000>;
794 };
795 };
796
797 sdcard_clk_gate_z_pins: sdcard_clk_gate_z {
798 mux {
799 groups = "GPIOZ_6";
800 function = "gpio_periphs";
801 bias-pull-down;
802 drive-strength-microamp = <4000>;
803 };
804 };
805
806 sdio_pins: sdio {
807 mux {
808 groups = "sdio_d0",
809 "sdio_d1",
810 "sdio_d2",
811 "sdio_d3",
812 "sdio_clk",
813 "sdio_cmd";
814 function = "sdio";
815 bias-disable;
816 drive-strength-microamp = <4000>;
817 };
818 };
819
820 sdio_clk_gate_pins: sdio_clk_gate {
821 mux {
822 groups = "GPIOX_4";
823 function = "gpio_periphs";
824 bias-pull-down;
825 drive-strength-microamp = <4000>;
826 };
827 };
828
829 spdif_in_a10_pins: spdif-in-a10 {
830 mux {
831 groups = "spdif_in_a10";
832 function = "spdif_in";
833 bias-disable;
834 };
835 };
836
837 spdif_in_a12_pins: spdif-in-a12 {
838 mux {
839 groups = "spdif_in_a12";
840 function = "spdif_in";
841 bias-disable;
842 };
843 };
844
845 spdif_in_h_pins: spdif-in-h {
846 mux {
847 groups = "spdif_in_h";
848 function = "spdif_in";
849 bias-disable;
850 };
851 };
852
853 spdif_out_h_pins: spdif-out-h {
854 mux {
855 groups = "spdif_out_h";
856 function = "spdif_out";
857 drive-strength-microamp = <500>;
858 bias-disable;
859 };
860 };
861
862 spdif_out_a11_pins: spdif-out-a11 {
863 mux {
864 groups = "spdif_out_a11";
865 function = "spdif_out";
866 drive-strength-microamp = <500>;
867 bias-disable;
868 };
869 };
870
871 spdif_out_a13_pins: spdif-out-a13 {
872 mux {
873 groups = "spdif_out_a13";
874 function = "spdif_out";
875 drive-strength-microamp = <500>;
876 bias-disable;
877 };
878 };
879
880 tdm_a_din0_pins: tdm-a-din0 {
881 mux {
882 groups = "tdm_a_din0";
883 function = "tdm_a";
884 bias-disable;
885 };
886 };
887
888
889 tdm_a_din1_pins: tdm-a-din1 {
890 mux {
891 groups = "tdm_a_din1";
892 function = "tdm_a";
893 bias-disable;
894 };
895 };
896
897 tdm_a_dout0_pins: tdm-a-dout0 {
898 mux {
899 groups = "tdm_a_dout0";
900 function = "tdm_a";
901 bias-disable;
902 drive-strength-microamp = <3000>;
903 };
904 };
905
906 tdm_a_dout1_pins: tdm-a-dout1 {
907 mux {
908 groups = "tdm_a_dout1";
909 function = "tdm_a";
910 bias-disable;
911 drive-strength-microamp = <3000>;
912 };
913 };
914
915 tdm_a_fs_pins: tdm-a-fs {
916 mux {
917 groups = "tdm_a_fs";
918 function = "tdm_a";
919 bias-disable;
920 drive-strength-microamp = <3000>;
921 };
922 };
923
924 tdm_a_sclk_pins: tdm-a-sclk {
925 mux {
926 groups = "tdm_a_sclk";
927 function = "tdm_a";
928 bias-disable;
929 drive-strength-microamp = <3000>;
930 };
931 };
932
933 tdm_a_slv_fs_pins: tdm-a-slv-fs {
934 mux {
935 groups = "tdm_a_slv_fs";
936 function = "tdm_a";
937 bias-disable;
938 };
939 };
940
941
942 tdm_a_slv_sclk_pins: tdm-a-slv-sclk {
943 mux {
944 groups = "tdm_a_slv_sclk";
945 function = "tdm_a";
946 bias-disable;
947 };
948 };
949
950 tdm_b_din0_pins: tdm-b-din0 {
951 mux {
952 groups = "tdm_b_din0";
953 function = "tdm_b";
954 bias-disable;
955 };
956 };
957
958 tdm_b_din1_pins: tdm-b-din1 {
959 mux {
960 groups = "tdm_b_din1";
961 function = "tdm_b";
962 bias-disable;
963 };
964 };
965
966 tdm_b_din2_pins: tdm-b-din2 {
967 mux {
968 groups = "tdm_b_din2";
969 function = "tdm_b";
970 bias-disable;
971 };
972 };
973
974 tdm_b_din3_a_pins: tdm-b-din3-a {
975 mux {
976 groups = "tdm_b_din3_a";
977 function = "tdm_b";
978 bias-disable;
979 };
980 };
981
982 tdm_b_din3_h_pins: tdm-b-din3-h {
983 mux {
984 groups = "tdm_b_din3_h";
985 function = "tdm_b";
986 bias-disable;
987 };
988 };
989
990 tdm_b_dout0_pins: tdm-b-dout0 {
991 mux {
992 groups = "tdm_b_dout0";
993 function = "tdm_b";
994 bias-disable;
995 drive-strength-microamp = <3000>;
996 };
997 };
998
999 tdm_b_dout1_pins: tdm-b-dout1 {
1000 mux {
1001 groups = "tdm_b_dout1";
1002 function = "tdm_b";
1003 bias-disable;
1004 drive-strength-microamp = <3000>;
1005 };
1006 };
1007
1008 tdm_b_dout2_pins: tdm-b-dout2 {
1009 mux {
1010 groups = "tdm_b_dout2";
1011 function = "tdm_b";
1012 bias-disable;
1013 drive-strength-microamp = <3000>;
1014 };
1015 };
1016
1017 tdm_b_dout3_a_pins: tdm-b-dout3-a {
1018 mux {
1019 groups = "tdm_b_dout3_a";
1020 function = "tdm_b";
1021 bias-disable;
1022 drive-strength-microamp = <3000>;
1023 };
1024 };
1025
1026 tdm_b_dout3_h_pins: tdm-b-dout3-h {
1027 mux {
1028 groups = "tdm_b_dout3_h";
1029 function = "tdm_b";
1030 bias-disable;
1031 drive-strength-microamp = <3000>;
1032 };
1033 };
1034
1035 tdm_b_fs_pins: tdm-b-fs {
1036 mux {
1037 groups = "tdm_b_fs";
1038 function = "tdm_b";
1039 bias-disable;
1040 drive-strength-microamp = <3000>;
1041 };
1042 };
1043
1044 tdm_b_sclk_pins: tdm-b-sclk {
1045 mux {
1046 groups = "tdm_b_sclk";
1047 function = "tdm_b";
1048 bias-disable;
1049 drive-strength-microamp = <3000>;
1050 };
1051 };
1052
1053 tdm_b_slv_fs_pins: tdm-b-slv-fs {
1054 mux {
1055 groups = "tdm_b_slv_fs";
1056 function = "tdm_b";
1057 bias-disable;
1058 };
1059 };
1060
1061 tdm_b_slv_sclk_pins: tdm-b-slv-sclk {
1062 mux {
1063 groups = "tdm_b_slv_sclk";
1064 function = "tdm_b";
1065 bias-disable;
1066 };
1067 };
1068
1069 tdm_c_din0_a_pins: tdm-c-din0-a {
1070 mux {
1071 groups = "tdm_c_din0_a";
1072 function = "tdm_c";
1073 bias-disable;
1074 };
1075 };
1076
1077 tdm_c_din0_z_pins: tdm-c-din0-z {
1078 mux {
1079 groups = "tdm_c_din0_z";
1080 function = "tdm_c";
1081 bias-disable;
1082 };
1083 };
1084
1085 tdm_c_din1_a_pins: tdm-c-din1-a {
1086 mux {
1087 groups = "tdm_c_din1_a";
1088 function = "tdm_c";
1089 bias-disable;
1090 };
1091 };
1092
1093 tdm_c_din1_z_pins: tdm-c-din1-z {
1094 mux {
1095 groups = "tdm_c_din1_z";
1096 function = "tdm_c";
1097 bias-disable;
1098 };
1099 };
1100
1101 tdm_c_din2_a_pins: tdm-c-din2-a {
1102 mux {
1103 groups = "tdm_c_din2_a";
1104 function = "tdm_c";
1105 bias-disable;
1106 };
1107 };
1108
1109 eth_leds_pins: eth-leds {
1110 mux {
1111 groups = "eth_link_led",
1112 "eth_act_led";
1113 function = "eth";
1114 bias-disable;
1115 };
1116 };
1117
1118 eth_pins: eth {
1119 mux {
1120 groups = "eth_mdio",
1121 "eth_mdc",
1122 "eth_rgmii_rx_clk",
1123 "eth_rx_dv",
1124 "eth_rxd0",
1125 "eth_rxd1",
1126 "eth_txen",
1127 "eth_txd0",
1128 "eth_txd1";
1129 function = "eth";
1130 drive-strength-microamp = <4000>;
1131 bias-disable;
1132 };
1133 };
1134
1135 eth_rgmii_pins: eth-rgmii {
1136 mux {
1137 groups = "eth_rxd2_rgmii",
1138 "eth_rxd3_rgmii",
1139 "eth_rgmii_tx_clk",
1140 "eth_txd2_rgmii",
1141 "eth_txd3_rgmii";
1142 function = "eth";
1143 drive-strength-microamp = <4000>;
1144 bias-disable;
1145 };
1146 };
1147
1148 tdm_c_din2_z_pins: tdm-c-din2-z {
1149 mux {
1150 groups = "tdm_c_din2_z";
1151 function = "tdm_c";
1152 bias-disable;
1153 };
1154 };
1155
1156 tdm_c_din3_a_pins: tdm-c-din3-a {
1157 mux {
1158 groups = "tdm_c_din3_a";
1159 function = "tdm_c";
1160 bias-disable;
1161 };
1162 };
1163
1164 tdm_c_din3_z_pins: tdm-c-din3-z {
1165 mux {
1166 groups = "tdm_c_din3_z";
1167 function = "tdm_c";
1168 bias-disable;
1169 };
1170 };
1171
1172 tdm_c_dout0_a_pins: tdm-c-dout0-a {
1173 mux {
1174 groups = "tdm_c_dout0_a";
1175 function = "tdm_c";
1176 bias-disable;
1177 drive-strength-microamp = <3000>;
1178 };
1179 };
1180
1181 tdm_c_dout0_z_pins: tdm-c-dout0-z {
1182 mux {
1183 groups = "tdm_c_dout0_z";
1184 function = "tdm_c";
1185 bias-disable;
1186 drive-strength-microamp = <3000>;
1187 };
1188 };
1189
1190 tdm_c_dout1_a_pins: tdm-c-dout1-a {
1191 mux {
1192 groups = "tdm_c_dout1_a";
1193 function = "tdm_c";
1194 bias-disable;
1195 drive-strength-microamp = <3000>;
1196 };
1197 };
1198
1199 tdm_c_dout1_z_pins: tdm-c-dout1-z {
1200 mux {
1201 groups = "tdm_c_dout1_z";
1202 function = "tdm_c";
1203 bias-disable;
1204 drive-strength-microamp = <3000>;
1205 };
1206 };
1207
1208 tdm_c_dout2_a_pins: tdm-c-dout2-a {
1209 mux {
1210 groups = "tdm_c_dout2_a";
1211 function = "tdm_c";
1212 bias-disable;
1213 drive-strength-microamp = <3000>;
1214 };
1215 };
1216
1217 tdm_c_dout2_z_pins: tdm-c-dout2-z {
1218 mux {
1219 groups = "tdm_c_dout2_z";
1220 function = "tdm_c";
1221 bias-disable;
1222 drive-strength-microamp = <3000>;
1223 };
1224 };
1225
1226 tdm_c_dout3_a_pins: tdm-c-dout3-a {
1227 mux {
1228 groups = "tdm_c_dout3_a";
1229 function = "tdm_c";
1230 bias-disable;
1231 drive-strength-microamp = <3000>;
1232 };
1233 };
1234
1235 tdm_c_dout3_z_pins: tdm-c-dout3-z {
1236 mux {
1237 groups = "tdm_c_dout3_z";
1238 function = "tdm_c";
1239 bias-disable;
1240 drive-strength-microamp = <3000>;
1241 };
1242 };
1243
1244 tdm_c_fs_a_pins: tdm-c-fs-a {
1245 mux {
1246 groups = "tdm_c_fs_a";
1247 function = "tdm_c";
1248 bias-disable;
1249 drive-strength-microamp = <3000>;
1250 };
1251 };
1252
1253 tdm_c_fs_z_pins: tdm-c-fs-z {
1254 mux {
1255 groups = "tdm_c_fs_z";
1256 function = "tdm_c";
1257 bias-disable;
1258 drive-strength-microamp = <3000>;
1259 };
1260 };
1261
1262 tdm_c_sclk_a_pins: tdm-c-sclk-a {
1263 mux {
1264 groups = "tdm_c_sclk_a";
1265 function = "tdm_c";
1266 bias-disable;
1267 drive-strength-microamp = <3000>;
1268 };
1269 };
1270
1271 tdm_c_sclk_z_pins: tdm-c-sclk-z {
1272 mux {
1273 groups = "tdm_c_sclk_z";
1274 function = "tdm_c";
1275 bias-disable;
1276 drive-strength-microamp = <3000>;
1277 };
1278 };
1279
1280 tdm_c_slv_fs_a_pins: tdm-c-slv-fs-a {
1281 mux {
1282 groups = "tdm_c_slv_fs_a";
1283 function = "tdm_c";
1284 bias-disable;
1285 };
1286 };
1287
1288 tdm_c_slv_fs_z_pins: tdm-c-slv-fs-z {
1289 mux {
1290 groups = "tdm_c_slv_fs_z";
1291 function = "tdm_c";
1292 bias-disable;
1293 };
1294 };
1295
1296 tdm_c_slv_sclk_a_pins: tdm-c-slv-sclk-a {
1297 mux {
1298 groups = "tdm_c_slv_sclk_a";
1299 function = "tdm_c";
1300 bias-disable;
1301 };
1302 };
1303
1304 tdm_c_slv_sclk_z_pins: tdm-c-slv-sclk-z {
1305 mux {
1306 groups = "tdm_c_slv_sclk_z";
1307 function = "tdm_c";
1308 bias-disable;
1309 };
1310 };
1311
1312 uart_a_pins: uart-a {
1313 mux {
1314 groups = "uart_a_tx",
1315 "uart_a_rx";
1316 function = "uart_a";
1317 bias-disable;
1318 };
1319 };
1320
1321 uart_a_cts_rts_pins: uart-a-cts-rts {
1322 mux {
1323 groups = "uart_a_cts",
1324 "uart_a_rts";
1325 function = "uart_a";
1326 bias-disable;
1327 };
1328 };
1329
1330 uart_b_pins: uart-b {
1331 mux {
1332 groups = "uart_b_tx",
1333 "uart_b_rx";
1334 function = "uart_b";
1335 bias-disable;
1336 };
1337 };
1338
1339 uart_c_pins: uart-c {
1340 mux {
1341 groups = "uart_c_tx",
1342 "uart_c_rx";
1343 function = "uart_c";
1344 bias-disable;
1345 };
1346 };
1347
1348 uart_c_cts_rts_pins: uart-c-cts-rts {
1349 mux {
1350 groups = "uart_c_cts",
1351 "uart_c_rts";
1352 function = "uart_c";
1353 bias-disable;
1354 };
1355 };
1356 };
1357 };
1358
1359 usb2_phy0: phy@36000 {
1360 compatible = "amlogic,g12a-usb2-phy";
1361 reg = <0x0 0x36000 0x0 0x2000>;
1362 clocks = <&xtal>;
1363 clock-names = "xtal";
1364 resets = <&reset RESET_USB_PHY20>;
1365 reset-names = "phy";
1366 #phy-cells = <0>;
1367 };
1368
1369 dmc: bus@38000 {
1370 compatible = "simple-bus";
1371 reg = <0x0 0x38000 0x0 0x400>;
1372 #address-cells = <2>;
1373 #size-cells = <2>;
1374 ranges = <0x0 0x0 0x0 0x38000 0x0 0x400>;
1375
1376 canvas: video-lut@48 {
1377 compatible = "amlogic,canvas";
1378 reg = <0x0 0x48 0x0 0x14>;
1379 };
1380 };
1381
1382 usb2_phy1: phy@3a000 {
1383 compatible = "amlogic,g12a-usb2-phy";
1384 reg = <0x0 0x3a000 0x0 0x2000>;
1385 clocks = <&xtal>;
1386 clock-names = "xtal";
1387 resets = <&reset RESET_USB_PHY21>;
1388 reset-names = "phy";
1389 #phy-cells = <0>;
1390 };
1391
1392 hiu: bus@3c000 {
1393 compatible = "simple-bus";
1394 reg = <0x0 0x3c000 0x0 0x1400>;
1395 #address-cells = <2>;
1396 #size-cells = <2>;
1397 ranges = <0x0 0x0 0x0 0x3c000 0x0 0x1400>;
1398
1399 hhi: system-controller@0 {
1400 compatible = "amlogic,meson-gx-hhi-sysctrl",
1401 "simple-mfd", "syscon";
1402 reg = <0 0 0 0x400>;
1403
1404 clkc: clock-controller {
1405 compatible = "amlogic,g12a-clkc";
1406 #clock-cells = <1>;
1407 clocks = <&xtal>;
1408 clock-names = "xtal";
1409 };
1410
1411 pwrc: power-controller {
1412 compatible = "amlogic,meson-g12a-pwrc";
1413 #power-domain-cells = <1>;
1414 amlogic,ao-sysctrl = <&rti>;
1415 resets = <&reset RESET_VIU>,
1416 <&reset RESET_VENC>,
1417 <&reset RESET_VCBUS>,
1418 <&reset RESET_BT656>,
1419 <&reset RESET_RDMA>,
1420 <&reset RESET_VENCI>,
1421 <&reset RESET_VENCP>,
1422 <&reset RESET_VDAC>,
1423 <&reset RESET_VDI6>,
1424 <&reset RESET_VENCL>,
1425 <&reset RESET_VID_LOCK>;
1426 reset-names = "viu", "venc", "vcbus", "bt656",
1427 "rdma", "venci", "vencp", "vdac",
1428 "vdi6", "vencl", "vid_lock";
1429 clocks = <&clkc CLKID_VPU>,
1430 <&clkc CLKID_VAPB>;
1431 clock-names = "vpu", "vapb";
1432 /*
1433 * VPU clocking is provided by two identical clock paths
1434 * VPU_0 and VPU_1 muxed to a single clock by a glitch
1435 * free mux to safely change frequency while running.
1436 * Same for VAPB but with a final gate after the glitch free mux.
1437 */
1438 assigned-clocks = <&clkc CLKID_VPU_0_SEL>,
1439 <&clkc CLKID_VPU_0>,
1440 <&clkc CLKID_VPU>, /* Glitch free mux */
1441 <&clkc CLKID_VAPB_0_SEL>,
1442 <&clkc CLKID_VAPB_0>,
1443 <&clkc CLKID_VAPB_SEL>; /* Glitch free mux */
1444 assigned-clock-parents = <&clkc CLKID_FCLK_DIV3>,
1445 <0>, /* Do Nothing */
1446 <&clkc CLKID_VPU_0>,
1447 <&clkc CLKID_FCLK_DIV4>,
1448 <0>, /* Do Nothing */
1449 <&clkc CLKID_VAPB_0>;
1450 assigned-clock-rates = <0>, /* Do Nothing */
1451 <666666666>,
1452 <0>, /* Do Nothing */
1453 <0>, /* Do Nothing */
1454 <250000000>,
1455 <0>; /* Do Nothing */
1456 };
1457 };
1458 };
1459
1460 pdm: audio-controller@40000 {
1461 compatible = "amlogic,g12a-pdm",
1462 "amlogic,axg-pdm";
1463 reg = <0x0 0x40000 0x0 0x34>;
1464 #sound-dai-cells = <0>;
1465 sound-name-prefix = "PDM";
1466 clocks = <&clkc_audio AUD_CLKID_PDM>,
1467 <&clkc_audio AUD_CLKID_PDM_DCLK>,
1468 <&clkc_audio AUD_CLKID_PDM_SYSCLK>;
1469 clock-names = "pclk", "dclk", "sysclk";
1470 status = "disabled";
1471 };
1472
1473 audio: bus@42000 {
1474 compatible = "simple-bus";
1475 reg = <0x0 0x42000 0x0 0x2000>;
1476 #address-cells = <2>;
1477 #size-cells = <2>;
1478 ranges = <0x0 0x0 0x0 0x42000 0x0 0x2000>;
1479
1480 clkc_audio: clock-controller@0 {
1481 status = "disabled";
1482 compatible = "amlogic,g12a-audio-clkc";
1483 reg = <0x0 0x0 0x0 0xb4>;
1484 #clock-cells = <1>;
1485 #reset-cells = <1>;
1486
1487 clocks = <&clkc CLKID_AUDIO>,
1488 <&clkc CLKID_MPLL0>,
1489 <&clkc CLKID_MPLL1>,
1490 <&clkc CLKID_MPLL2>,
1491 <&clkc CLKID_MPLL3>,
1492 <&clkc CLKID_HIFI_PLL>,
1493 <&clkc CLKID_FCLK_DIV3>,
1494 <&clkc CLKID_FCLK_DIV4>,
1495 <&clkc CLKID_GP0_PLL>;
1496 clock-names = "pclk",
1497 "mst_in0",
1498 "mst_in1",
1499 "mst_in2",
1500 "mst_in3",
1501 "mst_in4",
1502 "mst_in5",
1503 "mst_in6",
1504 "mst_in7";
1505
1506 resets = <&reset RESET_AUDIO>;
1507 };
1508
1509 toddr_a: audio-controller@100 {
1510 compatible = "amlogic,g12a-toddr",
1511 "amlogic,axg-toddr";
1512 reg = <0x0 0x100 0x0 0x1c>;
1513 #sound-dai-cells = <0>;
1514 sound-name-prefix = "TODDR_A";
1515 interrupts = <GIC_SPI 148 IRQ_TYPE_EDGE_RISING>;
1516 clocks = <&clkc_audio AUD_CLKID_TODDR_A>;
1517 resets = <&arb AXG_ARB_TODDR_A>;
1518 status = "disabled";
1519 };
1520
1521 toddr_b: audio-controller@140 {
1522 compatible = "amlogic,g12a-toddr",
1523 "amlogic,axg-toddr";
1524 reg = <0x0 0x140 0x0 0x1c>;
1525 #sound-dai-cells = <0>;
1526 sound-name-prefix = "TODDR_B";
1527 interrupts = <GIC_SPI 149 IRQ_TYPE_EDGE_RISING>;
1528 clocks = <&clkc_audio AUD_CLKID_TODDR_B>;
1529 resets = <&arb AXG_ARB_TODDR_B>;
1530 status = "disabled";
1531 };
1532
1533 toddr_c: audio-controller@180 {
1534 compatible = "amlogic,g12a-toddr",
1535 "amlogic,axg-toddr";
1536 reg = <0x0 0x180 0x0 0x1c>;
1537 #sound-dai-cells = <0>;
1538 sound-name-prefix = "TODDR_C";
1539 interrupts = <GIC_SPI 150 IRQ_TYPE_EDGE_RISING>;
1540 clocks = <&clkc_audio AUD_CLKID_TODDR_C>;
1541 resets = <&arb AXG_ARB_TODDR_C>;
1542 status = "disabled";
1543 };
1544
1545 frddr_a: audio-controller@1c0 {
1546 compatible = "amlogic,g12a-frddr",
1547 "amlogic,axg-frddr";
1548 reg = <0x0 0x1c0 0x0 0x1c>;
1549 #sound-dai-cells = <0>;
1550 sound-name-prefix = "FRDDR_A";
1551 interrupts = <GIC_SPI 152 IRQ_TYPE_EDGE_RISING>;
1552 clocks = <&clkc_audio AUD_CLKID_FRDDR_A>;
1553 resets = <&arb AXG_ARB_FRDDR_A>;
1554 status = "disabled";
1555 };
1556
1557 frddr_b: audio-controller@200 {
1558 compatible = "amlogic,g12a-frddr",
1559 "amlogic,axg-frddr";
1560 reg = <0x0 0x200 0x0 0x1c>;
1561 #sound-dai-cells = <0>;
1562 sound-name-prefix = "FRDDR_B";
1563 interrupts = <GIC_SPI 153 IRQ_TYPE_EDGE_RISING>;
1564 clocks = <&clkc_audio AUD_CLKID_FRDDR_B>;
1565 resets = <&arb AXG_ARB_FRDDR_B>;
1566 status = "disabled";
1567 };
1568
1569 frddr_c: audio-controller@240 {
1570 compatible = "amlogic,g12a-frddr",
1571 "amlogic,axg-frddr";
1572 reg = <0x0 0x240 0x0 0x1c>;
1573 #sound-dai-cells = <0>;
1574 sound-name-prefix = "FRDDR_C";
1575 interrupts = <GIC_SPI 154 IRQ_TYPE_EDGE_RISING>;
1576 clocks = <&clkc_audio AUD_CLKID_FRDDR_C>;
1577 resets = <&arb AXG_ARB_FRDDR_C>;
1578 status = "disabled";
1579 };
1580
1581 arb: reset-controller@280 {
1582 status = "disabled";
1583 compatible = "amlogic,meson-axg-audio-arb";
1584 reg = <0x0 0x280 0x0 0x4>;
1585 #reset-cells = <1>;
1586 clocks = <&clkc_audio AUD_CLKID_DDR_ARB>;
1587 };
1588
1589 tdmin_a: audio-controller@300 {
1590 compatible = "amlogic,g12a-tdmin",
1591 "amlogic,axg-tdmin";
1592 reg = <0x0 0x300 0x0 0x40>;
1593 sound-name-prefix = "TDMIN_A";
1594 resets = <&clkc_audio AUD_RESET_TDMIN_A>;
1595 clocks = <&clkc_audio AUD_CLKID_TDMIN_A>,
1596 <&clkc_audio AUD_CLKID_TDMIN_A_SCLK>,
1597 <&clkc_audio AUD_CLKID_TDMIN_A_SCLK_SEL>,
1598 <&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>,
1599 <&clkc_audio AUD_CLKID_TDMIN_A_LRCLK>;
1600 clock-names = "pclk", "sclk", "sclk_sel",
1601 "lrclk", "lrclk_sel";
1602 status = "disabled";
1603 };
1604
1605 tdmin_b: audio-controller@340 {
1606 compatible = "amlogic,g12a-tdmin",
1607 "amlogic,axg-tdmin";
1608 reg = <0x0 0x340 0x0 0x40>;
1609 sound-name-prefix = "TDMIN_B";
1610 resets = <&clkc_audio AUD_RESET_TDMIN_B>;
1611 clocks = <&clkc_audio AUD_CLKID_TDMIN_B>,
1612 <&clkc_audio AUD_CLKID_TDMIN_B_SCLK>,
1613 <&clkc_audio AUD_CLKID_TDMIN_B_SCLK_SEL>,
1614 <&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>,
1615 <&clkc_audio AUD_CLKID_TDMIN_B_LRCLK>;
1616 clock-names = "pclk", "sclk", "sclk_sel",
1617 "lrclk", "lrclk_sel";
1618 status = "disabled";
1619 };
1620
1621 tdmin_c: audio-controller@380 {
1622 compatible = "amlogic,g12a-tdmin",
1623 "amlogic,axg-tdmin";
1624 reg = <0x0 0x380 0x0 0x40>;
1625 sound-name-prefix = "TDMIN_C";
1626 resets = <&clkc_audio AUD_RESET_TDMIN_C>;
1627 clocks = <&clkc_audio AUD_CLKID_TDMIN_C>,
1628 <&clkc_audio AUD_CLKID_TDMIN_C_SCLK>,
1629 <&clkc_audio AUD_CLKID_TDMIN_C_SCLK_SEL>,
1630 <&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>,
1631 <&clkc_audio AUD_CLKID_TDMIN_C_LRCLK>;
1632 clock-names = "pclk", "sclk", "sclk_sel",
1633 "lrclk", "lrclk_sel";
1634 status = "disabled";
1635 };
1636
1637 tdmin_lb: audio-controller@3c0 {
1638 compatible = "amlogic,g12a-tdmin",
1639 "amlogic,axg-tdmin";
1640 reg = <0x0 0x3c0 0x0 0x40>;
1641 sound-name-prefix = "TDMIN_LB";
1642 resets = <&clkc_audio AUD_RESET_TDMIN_LB>;
1643 clocks = <&clkc_audio AUD_CLKID_TDMIN_LB>,
1644 <&clkc_audio AUD_CLKID_TDMIN_LB_SCLK>,
1645 <&clkc_audio AUD_CLKID_TDMIN_LB_SCLK_SEL>,
1646 <&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>,
1647 <&clkc_audio AUD_CLKID_TDMIN_LB_LRCLK>;
1648 clock-names = "pclk", "sclk", "sclk_sel",
1649 "lrclk", "lrclk_sel";
1650 status = "disabled";
1651 };
1652
1653 spdifin: audio-controller@400 {
1654 compatible = "amlogic,g12a-spdifin",
1655 "amlogic,axg-spdifin";
1656 reg = <0x0 0x400 0x0 0x30>;
1657 #sound-dai-cells = <0>;
1658 sound-name-prefix = "SPDIFIN";
1659 interrupts = <GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
1660 clocks = <&clkc_audio AUD_CLKID_SPDIFIN>,
1661 <&clkc_audio AUD_CLKID_SPDIFIN_CLK>;
1662 clock-names = "pclk", "refclk";
1663 status = "disabled";
1664 };
1665
1666 spdifout: audio-controller@480 {
1667 compatible = "amlogic,g12a-spdifout",
1668 "amlogic,axg-spdifout";
1669 reg = <0x0 0x480 0x0 0x50>;
1670 #sound-dai-cells = <0>;
1671 sound-name-prefix = "SPDIFOUT";
1672 clocks = <&clkc_audio AUD_CLKID_SPDIFOUT>,
1673 <&clkc_audio AUD_CLKID_SPDIFOUT_CLK>;
1674 clock-names = "pclk", "mclk";
1675 status = "disabled";
1676 };
1677
1678 tdmout_a: audio-controller@500 {
1679 compatible = "amlogic,g12a-tdmout";
1680 reg = <0x0 0x500 0x0 0x40>;
1681 sound-name-prefix = "TDMOUT_A";
1682 resets = <&clkc_audio AUD_RESET_TDMOUT_A>;
1683 clocks = <&clkc_audio AUD_CLKID_TDMOUT_A>,
1684 <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK>,
1685 <&clkc_audio AUD_CLKID_TDMOUT_A_SCLK_SEL>,
1686 <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>,
1687 <&clkc_audio AUD_CLKID_TDMOUT_A_LRCLK>;
1688 clock-names = "pclk", "sclk", "sclk_sel",
1689 "lrclk", "lrclk_sel";
1690 status = "disabled";
1691 };
1692
1693 tdmout_b: audio-controller@540 {
1694 compatible = "amlogic,g12a-tdmout";
1695 reg = <0x0 0x540 0x0 0x40>;
1696 sound-name-prefix = "TDMOUT_B";
1697 resets = <&clkc_audio AUD_RESET_TDMOUT_B>;
1698 clocks = <&clkc_audio AUD_CLKID_TDMOUT_B>,
1699 <&clkc_audio AUD_CLKID_TDMOUT_B_SCLK>,
1700 <&clkc_audio AUD_CLKID_TDMOUT_B_SCLK_SEL>,
1701 <&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>,
1702 <&clkc_audio AUD_CLKID_TDMOUT_B_LRCLK>;
1703 clock-names = "pclk", "sclk", "sclk_sel",
1704 "lrclk", "lrclk_sel";
1705 status = "disabled";
1706 };
1707
1708 tdmout_c: audio-controller@580 {
1709 compatible = "amlogic,g12a-tdmout";
1710 reg = <0x0 0x580 0x0 0x40>;
1711 sound-name-prefix = "TDMOUT_C";
1712 resets = <&clkc_audio AUD_RESET_TDMOUT_C>;
1713 clocks = <&clkc_audio AUD_CLKID_TDMOUT_C>,
1714 <&clkc_audio AUD_CLKID_TDMOUT_C_SCLK>,
1715 <&clkc_audio AUD_CLKID_TDMOUT_C_SCLK_SEL>,
1716 <&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>,
1717 <&clkc_audio AUD_CLKID_TDMOUT_C_LRCLK>;
1718 clock-names = "pclk", "sclk", "sclk_sel",
1719 "lrclk", "lrclk_sel";
1720 status = "disabled";
1721 };
1722
1723 spdifout_b: audio-controller@680 {
1724 compatible = "amlogic,g12a-spdifout",
1725 "amlogic,axg-spdifout";
1726 reg = <0x0 0x680 0x0 0x50>;
1727 #sound-dai-cells = <0>;
1728 sound-name-prefix = "SPDIFOUT_B";
1729 clocks = <&clkc_audio AUD_CLKID_SPDIFOUT_B>,
1730 <&clkc_audio AUD_CLKID_SPDIFOUT_B_CLK>;
1731 clock-names = "pclk", "mclk";
1732 status = "disabled";
1733 };
1734
1735 tohdmitx: audio-controller@744 {
1736 compatible = "amlogic,g12a-tohdmitx";
1737 reg = <0x0 0x744 0x0 0x4>;
1738 #sound-dai-cells = <1>;
1739 sound-name-prefix = "TOHDMITX";
1740 status = "disabled";
1741 };
1742 };
1743
1744 usb3_pcie_phy: phy@46000 {
1745 compatible = "amlogic,g12a-usb3-pcie-phy";
1746 reg = <0x0 0x46000 0x0 0x2000>;
1747 clocks = <&clkc CLKID_PCIE_PLL>;
1748 clock-names = "ref_clk";
1749 resets = <&reset RESET_PCIE_PHY>;
1750 reset-names = "phy";
1751 assigned-clocks = <&clkc CLKID_PCIE_PLL>;
1752 assigned-clock-rates = <100000000>;
1753 #phy-cells = <1>;
1754 };
1755
1756 eth_phy: mdio-multiplexer@4c000 {
1757 compatible = "amlogic,g12a-mdio-mux";
1758 reg = <0x0 0x4c000 0x0 0xa4>;
1759 clocks = <&clkc CLKID_ETH_PHY>,
1760 <&xtal>,
1761 <&clkc CLKID_MPLL_50M>;
1762 clock-names = "pclk", "clkin0", "clkin1";
1763 mdio-parent-bus = <&mdio0>;
1764 #address-cells = <1>;
1765 #size-cells = <0>;
1766
1767 ext_mdio: mdio@0 {
1768 reg = <0>;
1769 #address-cells = <1>;
1770 #size-cells = <0>;
1771 };
1772
1773 int_mdio: mdio@1 {
1774 reg = <1>;
1775 #address-cells = <1>;
1776 #size-cells = <0>;
1777
1778 internal_ephy: ethernet_phy@8 {
1779 compatible = "ethernet-phy-id0180.3301",
1780 "ethernet-phy-ieee802.3-c22";
1781 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
1782 reg = <8>;
1783 max-speed = <100>;
1784 };
1785 };
1786 };
1787 };
1788
1789 aobus: bus@ff800000 {
1790 compatible = "simple-bus";
1791 reg = <0x0 0xff800000 0x0 0x100000>;
1792 #address-cells = <2>;
1793 #size-cells = <2>;
1794 ranges = <0x0 0x0 0x0 0xff800000 0x0 0x100000>;
1795
1796 rti: sys-ctrl@0 {
1797 compatible = "amlogic,meson-gx-ao-sysctrl",
1798 "simple-mfd", "syscon";
1799 reg = <0x0 0x0 0x0 0x100>;
1800 #address-cells = <2>;
1801 #size-cells = <2>;
1802 ranges = <0x0 0x0 0x0 0x0 0x0 0x100>;
1803
1804 clkc_AO: clock-controller {
1805 compatible = "amlogic,meson-g12a-aoclkc";
1806 #clock-cells = <1>;
1807 #reset-cells = <1>;
1808 clocks = <&xtal>, <&clkc CLKID_CLK81>;
1809 clock-names = "xtal", "mpeg-clk";
1810 };
1811
1812 ao_pinctrl: pinctrl@14 {
1813 compatible = "amlogic,meson-g12a-aobus-pinctrl";
1814 #address-cells = <2>;
1815 #size-cells = <2>;
1816 ranges;
1817
1818 gpio_ao: bank@14 {
1819 reg = <0x0 0x14 0x0 0x8>,
1820 <0x0 0x1c 0x0 0x8>,
1821 <0x0 0x24 0x0 0x14>;
1822 reg-names = "mux",
1823 "ds",
1824 "gpio";
1825 gpio-controller;
1826 #gpio-cells = <2>;
1827 gpio-ranges = <&ao_pinctrl 0 0 15>;
1828 };
1829
1830 i2c_ao_sck_pins: i2c_ao_sck_pins {
1831 mux {
1832 groups = "i2c_ao_sck";
1833 function = "i2c_ao";
1834 bias-disable;
1835 drive-strength-microamp = <3000>;
1836 };
1837 };
1838
1839 i2c_ao_sda_pins: i2c_ao_sda {
1840 mux {
1841 groups = "i2c_ao_sda";
1842 function = "i2c_ao";
1843 bias-disable;
1844 drive-strength-microamp = <3000>;
1845 };
1846 };
1847
1848 i2c_ao_sck_e_pins: i2c_ao_sck_e {
1849 mux {
1850 groups = "i2c_ao_sck_e";
1851 function = "i2c_ao";
1852 bias-disable;
1853 drive-strength-microamp = <3000>;
1854 };
1855 };
1856
1857 i2c_ao_sda_e_pins: i2c_ao_sda_e {
1858 mux {
1859 groups = "i2c_ao_sda_e";
1860 function = "i2c_ao";
1861 bias-disable;
1862 drive-strength-microamp = <3000>;
1863 };
1864 };
1865
1866 mclk0_ao_pins: mclk0-ao {
1867 mux {
1868 groups = "mclk0_ao";
1869 function = "mclk0_ao";
1870 bias-disable;
1871 drive-strength-microamp = <3000>;
1872 };
1873 };
1874
1875 tdm_ao_b_din0_pins: tdm-ao-b-din0 {
1876 mux {
1877 groups = "tdm_ao_b_din0";
1878 function = "tdm_ao_b";
1879 bias-disable;
1880 };
1881 };
1882
1883 spdif_ao_out_pins: spdif-ao-out {
1884 mux {
1885 groups = "spdif_ao_out";
1886 function = "spdif_ao_out";
1887 drive-strength-microamp = <500>;
1888 bias-disable;
1889 };
1890 };
1891
1892 tdm_ao_b_din1_pins: tdm-ao-b-din1 {
1893 mux {
1894 groups = "tdm_ao_b_din1";
1895 function = "tdm_ao_b";
1896 bias-disable;
1897 };
1898 };
1899
1900 tdm_ao_b_din2_pins: tdm-ao-b-din2 {
1901 mux {
1902 groups = "tdm_ao_b_din2";
1903 function = "tdm_ao_b";
1904 bias-disable;
1905 };
1906 };
1907
1908 tdm_ao_b_dout0_pins: tdm-ao-b-dout0 {
1909 mux {
1910 groups = "tdm_ao_b_dout0";
1911 function = "tdm_ao_b";
1912 bias-disable;
1913 drive-strength-microamp = <3000>;
1914 };
1915 };
1916
1917 tdm_ao_b_dout1_pins: tdm-ao-b-dout1 {
1918 mux {
1919 groups = "tdm_ao_b_dout1";
1920 function = "tdm_ao_b";
1921 bias-disable;
1922 drive-strength-microamp = <3000>;
1923 };
1924 };
1925
1926 tdm_ao_b_dout2_pins: tdm-ao-b-dout2 {
1927 mux {
1928 groups = "tdm_ao_b_dout2";
1929 function = "tdm_ao_b";
1930 bias-disable;
1931 drive-strength-microamp = <3000>;
1932 };
1933 };
1934
1935 tdm_ao_b_fs_pins: tdm-ao-b-fs {
1936 mux {
1937 groups = "tdm_ao_b_fs";
1938 function = "tdm_ao_b";
1939 bias-disable;
1940 drive-strength-microamp = <3000>;
1941 };
1942 };
1943
1944 tdm_ao_b_sclk_pins: tdm-ao-b-sclk {
1945 mux {
1946 groups = "tdm_ao_b_sclk";
1947 function = "tdm_ao_b";
1948 bias-disable;
1949 drive-strength-microamp = <3000>;
1950 };
1951 };
1952
1953 tdm_ao_b_slv_fs_pins: tdm-ao-b-slv-fs {
1954 mux {
1955 groups = "tdm_ao_b_slv_fs";
1956 function = "tdm_ao_b";
1957 bias-disable;
1958 };
1959 };
1960
1961 tdm_ao_b_slv_sclk_pins: tdm-ao-b-slv-sclk {
1962 mux {
1963 groups = "tdm_ao_b_slv_sclk";
1964 function = "tdm_ao_b";
1965 bias-disable;
1966 };
1967 };
1968
1969 uart_ao_a_pins: uart-a-ao {
1970 mux {
1971 groups = "uart_ao_a_tx",
1972 "uart_ao_a_rx";
1973 function = "uart_ao_a";
1974 bias-disable;
1975 };
1976 };
1977
1978 uart_ao_a_cts_rts_pins: uart-ao-a-cts-rts {
1979 mux {
1980 groups = "uart_ao_a_cts",
1981 "uart_ao_a_rts";
1982 function = "uart_ao_a";
1983 bias-disable;
1984 };
1985 };
1986
1987 pwm_a_e_pins: pwm-a-e {
1988 mux {
1989 groups = "pwm_a_e";
1990 function = "pwm_a_e";
1991 bias-disable;
1992 };
1993 };
1994
1995 pwm_ao_a_pins: pwm-ao-a {
1996 mux {
1997 groups = "pwm_ao_a";
1998 function = "pwm_ao_a";
1999 bias-disable;
2000 };
2001 };
2002
2003 pwm_ao_b_pins: pwm-ao-b {
2004 mux {
2005 groups = "pwm_ao_b";
2006 function = "pwm_ao_b";
2007 bias-disable;
2008 };
2009 };
2010
2011 pwm_ao_c_4_pins: pwm-ao-c-4 {
2012 mux {
2013 groups = "pwm_ao_c_4";
2014 function = "pwm_ao_c";
2015 bias-disable;
2016 };
2017 };
2018
2019 pwm_ao_c_6_pins: pwm-ao-c-6 {
2020 mux {
2021 groups = "pwm_ao_c_6";
2022 function = "pwm_ao_c";
2023 bias-disable;
2024 };
2025 };
2026
2027 pwm_ao_d_5_pins: pwm-ao-d-5 {
2028 mux {
2029 groups = "pwm_ao_d_5";
2030 function = "pwm_ao_d";
2031 bias-disable;
2032 };
2033 };
2034
2035 pwm_ao_d_10_pins: pwm-ao-d-10 {
2036 mux {
2037 groups = "pwm_ao_d_10";
2038 function = "pwm_ao_d";
2039 bias-disable;
2040 };
2041 };
2042
2043 pwm_ao_d_e_pins: pwm-ao-d-e {
2044 mux {
2045 groups = "pwm_ao_d_e";
2046 function = "pwm_ao_d";
2047 };
2048 };
2049
2050 remote_input_ao_pins: remote-input-ao {
2051 mux {
2052 groups = "remote_ao_input";
2053 function = "remote_ao_input";
2054 bias-disable;
2055 };
2056 };
2057 };
2058 };
2059
2060 vrtc: rtc@0a8 {
2061 compatible = "amlogic,meson-vrtc";
2062 reg = <0x0 0x000a8 0x0 0x4>;
2063 };
2064
2065 cec_AO: cec@100 {
2066 compatible = "amlogic,meson-gx-ao-cec";
2067 reg = <0x0 0x00100 0x0 0x14>;
2068 interrupts = <GIC_SPI 199 IRQ_TYPE_EDGE_RISING>;
2069 clocks = <&clkc_AO CLKID_AO_CEC>;
2070 clock-names = "core";
2071 status = "disabled";
2072 };
2073
2074 sec_AO: ao-secure@140 {
2075 compatible = "amlogic,meson-gx-ao-secure", "syscon";
2076 reg = <0x0 0x140 0x0 0x140>;
2077 amlogic,has-chip-id;
2078 };
2079
2080 cecb_AO: cec@280 {
2081 compatible = "amlogic,meson-g12a-ao-cec";
2082 reg = <0x0 0x00280 0x0 0x1c>;
2083 interrupts = <GIC_SPI 203 IRQ_TYPE_EDGE_RISING>;
2084 clocks = <&clkc_AO CLKID_AO_CTS_OSCIN>;
2085 clock-names = "oscin";
2086 status = "disabled";
2087 };
2088
2089 pwm_AO_cd: pwm@2000 {
2090 compatible = "amlogic,meson-g12a-ao-pwm-cd";
2091 reg = <0x0 0x2000 0x0 0x20>;
2092 #pwm-cells = <3>;
2093 status = "disabled";
2094 };
2095
2096 uart_AO: serial@3000 {
2097 compatible = "amlogic,meson-gx-uart",
2098 "amlogic,meson-ao-uart";
2099 reg = <0x0 0x3000 0x0 0x18>;
2100 interrupts = <GIC_SPI 193 IRQ_TYPE_EDGE_RISING>;
2101 clocks = <&xtal>, <&clkc_AO CLKID_AO_UART>, <&xtal>;
2102 clock-names = "xtal", "pclk", "baud";
2103 status = "disabled";
2104 };
2105
2106 uart_AO_B: serial@4000 {
2107 compatible = "amlogic,meson-gx-uart",
2108 "amlogic,meson-ao-uart";
2109 reg = <0x0 0x4000 0x0 0x18>;
2110 interrupts = <GIC_SPI 197 IRQ_TYPE_EDGE_RISING>;
2111 clocks = <&xtal>, <&clkc_AO CLKID_AO_UART2>, <&xtal>;
2112 clock-names = "xtal", "pclk", "baud";
2113 status = "disabled";
2114 };
2115
2116 i2c_AO: i2c@5000 {
2117 compatible = "amlogic,meson-axg-i2c";
2118 status = "disabled";
2119 reg = <0x0 0x05000 0x0 0x20>;
2120 interrupts = <GIC_SPI 195 IRQ_TYPE_EDGE_RISING>;
2121 #address-cells = <1>;
2122 #size-cells = <0>;
2123 clocks = <&clkc CLKID_I2C>;
2124 };
2125
2126 pwm_AO_ab: pwm@7000 {
2127 compatible = "amlogic,meson-g12a-ao-pwm-ab";
2128 reg = <0x0 0x7000 0x0 0x20>;
2129 #pwm-cells = <3>;
2130 status = "disabled";
2131 };
2132
2133 ir: ir@8000 {
2134 compatible = "amlogic,meson-gxbb-ir";
2135 reg = <0x0 0x8000 0x0 0x20>;
2136 interrupts = <GIC_SPI 196 IRQ_TYPE_EDGE_RISING>;
2137 status = "disabled";
2138 };
2139
2140 saradc: adc@9000 {
2141 compatible = "amlogic,meson-g12a-saradc",
2142 "amlogic,meson-saradc";
2143 reg = <0x0 0x9000 0x0 0x48>;
2144 #io-channel-cells = <1>;
2145 interrupts = <GIC_SPI 200 IRQ_TYPE_EDGE_RISING>;
2146 clocks = <&xtal>,
2147 <&clkc_AO CLKID_AO_SAR_ADC>,
2148 <&clkc_AO CLKID_AO_SAR_ADC_CLK>,
2149 <&clkc_AO CLKID_AO_SAR_ADC_SEL>;
2150 clock-names = "clkin", "core", "adc_clk", "adc_sel";
2151 status = "disabled";
2152 };
2153 };
2154
2155 vpu: vpu@ff900000 {
2156 compatible = "amlogic,meson-g12a-vpu";
2157 reg = <0x0 0xff900000 0x0 0x100000>,
2158 <0x0 0xff63c000 0x0 0x1000>;
2159 reg-names = "vpu", "hhi";
2160 interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING>;
2161 #address-cells = <1>;
2162 #size-cells = <0>;
2163 amlogic,canvas = <&canvas>;
2164
2165 /* CVBS VDAC output port */
2166 cvbs_vdac_port: port@0 {
2167 reg = <0>;
2168 };
2169
2170 /* HDMI-TX output port */
2171 hdmi_tx_port: port@1 {
2172 reg = <1>;
2173
2174 hdmi_tx_out: endpoint {
2175 remote-endpoint = <&hdmi_tx_in>;
2176 };
2177 };
2178 };
2179
2180 gic: interrupt-controller@ffc01000 {
2181 compatible = "arm,gic-400";
2182 reg = <0x0 0xffc01000 0 0x1000>,
2183 <0x0 0xffc02000 0 0x2000>,
2184 <0x0 0xffc04000 0 0x2000>,
2185 <0x0 0xffc06000 0 0x2000>;
2186 interrupt-controller;
2187 interrupts = <GIC_PPI 9
2188 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
2189 #interrupt-cells = <3>;
2190 #address-cells = <0>;
2191 };
2192
2193 cbus: bus@ffd00000 {
2194 compatible = "simple-bus";
2195 reg = <0x0 0xffd00000 0x0 0x100000>;
2196 #address-cells = <2>;
2197 #size-cells = <2>;
2198 ranges = <0x0 0x0 0x0 0xffd00000 0x0 0x100000>;
2199
2200 reset: reset-controller@1004 {
2201 compatible = "amlogic,meson-axg-reset";
2202 reg = <0x0 0x1004 0x0 0x9c>;
2203 #reset-cells = <1>;
2204 };
2205
2206 gpio_intc: interrupt-controller@f080 {
2207 compatible = "amlogic,meson-g12a-gpio-intc",
2208 "amlogic,meson-gpio-intc";
2209 reg = <0x0 0xf080 0x0 0x10>;
2210 interrupt-controller;
2211 #interrupt-cells = <2>;
2212 amlogic,channel-interrupts = <64 65 66 67 68 69 70 71>;
2213 };
2214
2215 pwm_ef: pwm@19000 {
2216 compatible = "amlogic,meson-g12a-ee-pwm";
2217 reg = <0x0 0x19000 0x0 0x20>;
2218 #pwm-cells = <3>;
2219 status = "disabled";
2220 };
2221
2222 pwm_cd: pwm@1a000 {
2223 compatible = "amlogic,meson-g12a-ee-pwm";
2224 reg = <0x0 0x1a000 0x0 0x20>;
2225 #pwm-cells = <3>;
2226 status = "disabled";
2227 };
2228
2229 pwm_ab: pwm@1b000 {
2230 compatible = "amlogic,meson-g12a-ee-pwm";
2231 reg = <0x0 0x1b000 0x0 0x20>;
2232 #pwm-cells = <3>;
2233 status = "disabled";
2234 };
2235
2236 i2c3: i2c@1c000 {
2237 compatible = "amlogic,meson-axg-i2c";
2238 status = "disabled";
2239 reg = <0x0 0x1c000 0x0 0x20>;
2240 interrupts = <GIC_SPI 39 IRQ_TYPE_EDGE_RISING>;
2241 #address-cells = <1>;
2242 #size-cells = <0>;
2243 clocks = <&clkc CLKID_I2C>;
2244 };
2245
2246 i2c2: i2c@1d000 {
2247 compatible = "amlogic,meson-axg-i2c";
2248 status = "disabled";
2249 reg = <0x0 0x1d000 0x0 0x20>;
2250 interrupts = <GIC_SPI 215 IRQ_TYPE_EDGE_RISING>;
2251 #address-cells = <1>;
2252 #size-cells = <0>;
2253 clocks = <&clkc CLKID_I2C>;
2254 };
2255
2256 i2c1: i2c@1e000 {
2257 compatible = "amlogic,meson-axg-i2c";
2258 status = "disabled";
2259 reg = <0x0 0x1e000 0x0 0x20>;
2260 interrupts = <GIC_SPI 214 IRQ_TYPE_EDGE_RISING>;
2261 #address-cells = <1>;
2262 #size-cells = <0>;
2263 clocks = <&clkc CLKID_I2C>;
2264 };
2265
2266 i2c0: i2c@1f000 {
2267 compatible = "amlogic,meson-axg-i2c";
2268 status = "disabled";
2269 reg = <0x0 0x1f000 0x0 0x20>;
2270 interrupts = <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>;
2271 #address-cells = <1>;
2272 #size-cells = <0>;
2273 clocks = <&clkc CLKID_I2C>;
2274 };
2275
2276 clk_msr: clock-measure@18000 {
2277 compatible = "amlogic,meson-g12a-clk-measure";
2278 reg = <0x0 0x18000 0x0 0x10>;
2279 };
2280
2281 uart_C: serial@22000 {
2282 compatible = "amlogic,meson-gx-uart";
2283 reg = <0x0 0x22000 0x0 0x18>;
2284 interrupts = <GIC_SPI 93 IRQ_TYPE_EDGE_RISING>;
2285 clocks = <&xtal>, <&clkc CLKID_UART2>, <&xtal>;
2286 clock-names = "xtal", "pclk", "baud";
2287 status = "disabled";
2288 };
2289
2290 uart_B: serial@23000 {
2291 compatible = "amlogic,meson-gx-uart";
2292 reg = <0x0 0x23000 0x0 0x18>;
2293 interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>;
2294 clocks = <&xtal>, <&clkc CLKID_UART1>, <&xtal>;
2295 clock-names = "xtal", "pclk", "baud";
2296 status = "disabled";
2297 };
2298
2299 uart_A: serial@24000 {
2300 compatible = "amlogic,meson-gx-uart";
2301 reg = <0x0 0x24000 0x0 0x18>;
2302 interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
2303 clocks = <&xtal>, <&clkc CLKID_UART0>, <&xtal>;
2304 clock-names = "xtal", "pclk", "baud";
2305 status = "disabled";
2306 };
2307 };
2308
2309 sd_emmc_a: sd@ffe03000 {
2310 compatible = "amlogic,meson-axg-mmc";
2311 reg = <0x0 0xffe03000 0x0 0x800>;
2312 interrupts = <GIC_SPI 189 IRQ_TYPE_EDGE_RISING>;
2313 status = "disabled";
2314 clocks = <&clkc CLKID_SD_EMMC_A>,
2315 <&clkc CLKID_SD_EMMC_A_CLK0>,
2316 <&clkc CLKID_FCLK_DIV2>;
2317 clock-names = "core", "clkin0", "clkin1";
2318 resets = <&reset RESET_SD_EMMC_A>;
2319 };
2320
2321 sd_emmc_b: sd@ffe05000 {
2322 compatible = "amlogic,meson-axg-mmc";
2323 reg = <0x0 0xffe05000 0x0 0x800>;
2324 interrupts = <GIC_SPI 190 IRQ_TYPE_EDGE_RISING>;
2325 status = "disabled";
2326 clocks = <&clkc CLKID_SD_EMMC_B>,
2327 <&clkc CLKID_SD_EMMC_B_CLK0>,
2328 <&clkc CLKID_FCLK_DIV2>;
2329 clock-names = "core", "clkin0", "clkin1";
2330 resets = <&reset RESET_SD_EMMC_B>;
2331 };
2332
2333 sd_emmc_c: mmc@ffe07000 {
2334 compatible = "amlogic,meson-axg-mmc";
2335 reg = <0x0 0xffe07000 0x0 0x800>;
2336 interrupts = <GIC_SPI 191 IRQ_TYPE_EDGE_RISING>;
2337 status = "disabled";
2338 clocks = <&clkc CLKID_SD_EMMC_C>,
2339 <&clkc CLKID_SD_EMMC_C_CLK0>,
2340 <&clkc CLKID_FCLK_DIV2>;
2341 clock-names = "core", "clkin0", "clkin1";
2342 resets = <&reset RESET_SD_EMMC_C>;
2343 };
2344
2345 usb: usb@ffe09000 {
2346 status = "disabled";
2347 compatible = "amlogic,meson-g12a-usb-ctrl";
2348 reg = <0x0 0xffe09000 0x0 0xa0>;
2349 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
2350 #address-cells = <2>;
2351 #size-cells = <2>;
2352 ranges;
2353
2354 clocks = <&clkc CLKID_USB>;
2355 resets = <&reset RESET_USB>;
2356
2357 dr_mode = "otg";
2358
2359 phys = <&usb2_phy0>, <&usb2_phy1>,
2360 <&usb3_pcie_phy PHY_TYPE_USB3>;
2361 phy-names = "usb2-phy0", "usb2-phy1", "usb3-phy0";
2362
2363 dwc2: usb@ff400000 {
2364 compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
2365 reg = <0x0 0xff400000 0x0 0x40000>;
2366 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
2367 clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
2368 clock-names = "ddr";
2369 phys = <&usb2_phy1>;
2370 phy-names = "usb2-phy";
2371 dr_mode = "peripheral";
2372 g-rx-fifo-size = <192>;
2373 g-np-tx-fifo-size = <128>;
2374 g-tx-fifo-size = <128 128 16 16 16>;
2375 };
2376
2377 dwc3: usb@ff500000 {
2378 compatible = "snps,dwc3";
2379 reg = <0x0 0xff500000 0x0 0x100000>;
2380 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
2381 dr_mode = "host";
2382 snps,dis_u2_susphy_quirk;
2383 snps,quirk-frame-length-adjustment;
2384 };
2385 };
2386
2387 mali: gpu@ffe40000 {
2388 compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
2389 reg = <0x0 0xffe40000 0x0 0x40000>;
2390 interrupt-parent = <&gic>;
2391 interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
2392 <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
2393 <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
2394 interrupt-names = "gpu", "mmu", "job";
2395 clocks = <&clkc CLKID_MALI>;
2396 resets = <&reset RESET_DVALIN_CAPB3>, <&reset RESET_DVALIN>;
2397
2398 /*
2399 * Mali clocking is provided by two identical clock paths
2400 * MALI_0 and MALI_1 muxed to a single clock by a glitch
2401 * free mux to safely change frequency while running.
2402 */
2403 assigned-clocks = <&clkc CLKID_MALI_0_SEL>,
2404 <&clkc CLKID_MALI_0>,
2405 <&clkc CLKID_MALI>; /* Glitch free mux */
2406 assigned-clock-parents = <&clkc CLKID_FCLK_DIV2P5>,
2407 <0>, /* Do Nothing */
2408 <&clkc CLKID_MALI_0>;
2409 assigned-clock-rates = <0>, /* Do Nothing */
2410 <800000000>,
2411 <0>; /* Do Nothing */
2412 };
2413 };
2414
2415 timer {
2416 compatible = "arm,armv8-timer";
2417 interrupts = <GIC_PPI 13
2418 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
2419 <GIC_PPI 14
2420 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
2421 <GIC_PPI 11
2422 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
2423 <GIC_PPI 10
2424 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>;
2425 arm,no-tick-in-suspend;
2426 };
2427
2428 xtal: xtal-clk {
2429 compatible = "fixed-clock";
2430 clock-frequency = <24000000>;
2431 clock-output-names = "xtal";
2432 #clock-cells = <0>;
2433 };
2434
2435};