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