19c8c52f7SJianxin Pan// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
29c8c52f7SJianxin Pan/*
39c8c52f7SJianxin Pan * Copyright (c) 2018 Amlogic, Inc. All rights reserved.
49c8c52f7SJianxin Pan */
59c8c52f7SJianxin Pan
69baf7d6bSNeil Armstrong#include <dt-bindings/phy/phy.h>
79c8c52f7SJianxin Pan#include <dt-bindings/gpio/gpio.h>
8965c827aSJerome Brunet#include <dt-bindings/clock/g12a-clkc.h>
9820873cfSNeil Armstrong#include <dt-bindings/clock/g12a-aoclkc.h>
109c8c52f7SJianxin Pan#include <dt-bindings/interrupt-controller/irq.h>
119c8c52f7SJianxin Pan#include <dt-bindings/interrupt-controller/arm-gic.h>
129baf7d6bSNeil Armstrong#include <dt-bindings/reset/amlogic,meson-g12a-reset.h>
139c8c52f7SJianxin Pan
149c8c52f7SJianxin Pan/ {
159c8c52f7SJianxin Pan	compatible = "amlogic,g12a";
169c8c52f7SJianxin Pan
179c8c52f7SJianxin Pan	interrupt-parent = <&gic>;
189c8c52f7SJianxin Pan	#address-cells = <2>;
199c8c52f7SJianxin Pan	#size-cells = <2>;
209c8c52f7SJianxin Pan
219c8c52f7SJianxin Pan	cpus {
229c8c52f7SJianxin Pan		#address-cells = <0x2>;
239c8c52f7SJianxin Pan		#size-cells = <0x0>;
249c8c52f7SJianxin Pan
259c8c52f7SJianxin Pan		cpu0: cpu@0 {
269c8c52f7SJianxin Pan			device_type = "cpu";
2731af04cdSRob Herring			compatible = "arm,cortex-a53";
289c8c52f7SJianxin Pan			reg = <0x0 0x0>;
299c8c52f7SJianxin Pan			enable-method = "psci";
309c8c52f7SJianxin Pan			next-level-cache = <&l2>;
319c8c52f7SJianxin Pan		};
329c8c52f7SJianxin Pan
339c8c52f7SJianxin Pan		cpu1: cpu@1 {
349c8c52f7SJianxin Pan			device_type = "cpu";
3531af04cdSRob Herring			compatible = "arm,cortex-a53";
369c8c52f7SJianxin Pan			reg = <0x0 0x1>;
379c8c52f7SJianxin Pan			enable-method = "psci";
389c8c52f7SJianxin Pan			next-level-cache = <&l2>;
399c8c52f7SJianxin Pan		};
409c8c52f7SJianxin Pan
419c8c52f7SJianxin Pan		cpu2: cpu@2 {
429c8c52f7SJianxin Pan			device_type = "cpu";
4331af04cdSRob Herring			compatible = "arm,cortex-a53";
449c8c52f7SJianxin Pan			reg = <0x0 0x2>;
459c8c52f7SJianxin Pan			enable-method = "psci";
469c8c52f7SJianxin Pan			next-level-cache = <&l2>;
479c8c52f7SJianxin Pan		};
489c8c52f7SJianxin Pan
499c8c52f7SJianxin Pan		cpu3: cpu@3 {
509c8c52f7SJianxin Pan			device_type = "cpu";
5131af04cdSRob Herring			compatible = "arm,cortex-a53";
529c8c52f7SJianxin Pan			reg = <0x0 0x3>;
539c8c52f7SJianxin Pan			enable-method = "psci";
549c8c52f7SJianxin Pan			next-level-cache = <&l2>;
559c8c52f7SJianxin Pan		};
569c8c52f7SJianxin Pan
579c8c52f7SJianxin Pan		l2: l2-cache0 {
589c8c52f7SJianxin Pan			compatible = "cache";
599c8c52f7SJianxin Pan		};
609c8c52f7SJianxin Pan	};
619c8c52f7SJianxin Pan
62965c827aSJerome Brunet	efuse: efuse {
63965c827aSJerome Brunet		compatible = "amlogic,meson-gxbb-efuse";
64965c827aSJerome Brunet		clocks = <&clkc CLKID_EFUSE>;
65965c827aSJerome Brunet		#address-cells = <1>;
66965c827aSJerome Brunet		#size-cells = <1>;
67965c827aSJerome Brunet		read-only;
68965c827aSJerome Brunet	};
69965c827aSJerome Brunet
709c8c52f7SJianxin Pan	psci {
719c8c52f7SJianxin Pan		compatible = "arm,psci-1.0";
729c8c52f7SJianxin Pan		method = "smc";
739c8c52f7SJianxin Pan	};
749c8c52f7SJianxin Pan
759c8c52f7SJianxin Pan	reserved-memory {
769c8c52f7SJianxin Pan		#address-cells = <2>;
779c8c52f7SJianxin Pan		#size-cells = <2>;
789c8c52f7SJianxin Pan		ranges;
799c8c52f7SJianxin Pan
809c8c52f7SJianxin Pan		/* 3 MiB reserved for ARM Trusted Firmware (BL31) */
819c8c52f7SJianxin Pan		secmon_reserved: secmon@5000000 {
829c8c52f7SJianxin Pan			reg = <0x0 0x05000000 0x0 0x300000>;
839c8c52f7SJianxin Pan			no-map;
849c8c52f7SJianxin Pan		};
85e2cffeb3SNeil Armstrong
86e2cffeb3SNeil Armstrong		linux,cma {
87e2cffeb3SNeil Armstrong			compatible = "shared-dma-pool";
88e2cffeb3SNeil Armstrong			reusable;
89e2cffeb3SNeil Armstrong			size = <0x0 0x10000000>;
90e2cffeb3SNeil Armstrong			alignment = <0x0 0x400000>;
91e2cffeb3SNeil Armstrong			linux,cma-default;
92e2cffeb3SNeil Armstrong		};
939c8c52f7SJianxin Pan	};
949c8c52f7SJianxin Pan
95bd395152SJerome Brunet	sm: secure-monitor {
96bd395152SJerome Brunet		compatible = "amlogic,meson-gxbb-sm";
97bd395152SJerome Brunet	};
98bd395152SJerome Brunet
999c8c52f7SJianxin Pan	soc {
1009c8c52f7SJianxin Pan		compatible = "simple-bus";
1019c8c52f7SJianxin Pan		#address-cells = <2>;
1029c8c52f7SJianxin Pan		#size-cells = <2>;
1039c8c52f7SJianxin Pan		ranges;
1049c8c52f7SJianxin Pan
105503f5fedSJerome Brunet		apb: bus@ff600000 {
1069c8c52f7SJianxin Pan			compatible = "simple-bus";
107503f5fedSJerome Brunet			reg = <0x0 0xff600000 0x0 0x200000>;
1089c8c52f7SJianxin Pan			#address-cells = <2>;
1099c8c52f7SJianxin Pan			#size-cells = <2>;
110503f5fedSJerome Brunet			ranges = <0x0 0x0 0x0 0xff600000 0x0 0x200000>;
111503f5fedSJerome Brunet
112083feecdSNeil Armstrong			hdmi_tx: hdmi-tx@0 {
113083feecdSNeil Armstrong				compatible = "amlogic,meson-g12a-dw-hdmi";
114083feecdSNeil Armstrong				reg = <0x0 0x0 0x0 0x10000>;
115083feecdSNeil Armstrong				interrupts = <GIC_SPI 57 IRQ_TYPE_EDGE_RISING>;
116083feecdSNeil Armstrong				resets = <&reset RESET_HDMITX_CAPB3>,
117083feecdSNeil Armstrong					 <&reset RESET_HDMITX_PHY>,
118083feecdSNeil Armstrong					 <&reset RESET_HDMITX>;
119083feecdSNeil Armstrong				reset-names = "hdmitx_apb", "hdmitx", "hdmitx_phy";
120083feecdSNeil Armstrong				clocks = <&clkc CLKID_HDMI>,
121083feecdSNeil Armstrong					 <&clkc CLKID_HTX_PCLK>,
122083feecdSNeil Armstrong					 <&clkc CLKID_VPU_INTR>;
123083feecdSNeil Armstrong				clock-names = "isfr", "iahb", "venci";
124083feecdSNeil Armstrong				#address-cells = <1>;
125083feecdSNeil Armstrong				#size-cells = <0>;
126083feecdSNeil Armstrong				status = "disabled";
127083feecdSNeil Armstrong
128083feecdSNeil Armstrong				/* VPU VENC Input */
129083feecdSNeil Armstrong				hdmi_tx_venc_port: port@0 {
130083feecdSNeil Armstrong					reg = <0>;
131083feecdSNeil Armstrong
132083feecdSNeil Armstrong					hdmi_tx_in: endpoint {
133083feecdSNeil Armstrong						remote-endpoint = <&hdmi_tx_out>;
134083feecdSNeil Armstrong					};
135083feecdSNeil Armstrong				};
136083feecdSNeil Armstrong
137083feecdSNeil Armstrong				/* TMDS Output */
138083feecdSNeil Armstrong				hdmi_tx_tmds_port: port@1 {
139083feecdSNeil Armstrong					reg = <1>;
140083feecdSNeil Armstrong				};
141083feecdSNeil Armstrong			};
142083feecdSNeil Armstrong
143503f5fedSJerome Brunet			periphs: bus@34400 {
144503f5fedSJerome Brunet				compatible = "simple-bus";
145503f5fedSJerome Brunet				reg = <0x0 0x34400 0x0 0x400>;
146503f5fedSJerome Brunet				#address-cells = <2>;
147503f5fedSJerome Brunet				#size-cells = <2>;
148503f5fedSJerome Brunet				ranges = <0x0 0x0 0x0 0x34400 0x0 0x400>;
14911a7bea1SJerome Brunet
15011a7bea1SJerome Brunet				periphs_pinctrl: pinctrl@40 {
15111a7bea1SJerome Brunet					compatible = "amlogic,meson-g12a-periphs-pinctrl";
15211a7bea1SJerome Brunet					#address-cells = <2>;
15311a7bea1SJerome Brunet					#size-cells = <2>;
15411a7bea1SJerome Brunet					ranges;
15511a7bea1SJerome Brunet
15611a7bea1SJerome Brunet					gpio: bank@40 {
15711a7bea1SJerome Brunet						reg = <0x0 0x40  0x0 0x4c>,
15811a7bea1SJerome Brunet						      <0x0 0xe8  0x0 0x18>,
15911a7bea1SJerome Brunet						      <0x0 0x120 0x0 0x18>,
16011a7bea1SJerome Brunet						      <0x0 0x2c0 0x0 0x40>,
16111a7bea1SJerome Brunet						      <0x0 0x340 0x0 0x1c>;
16211a7bea1SJerome Brunet						reg-names = "gpio",
16311a7bea1SJerome Brunet							    "pull",
16411a7bea1SJerome Brunet							    "pull-enable",
16511a7bea1SJerome Brunet							    "mux",
16611a7bea1SJerome Brunet							    "ds";
16711a7bea1SJerome Brunet						gpio-controller;
16811a7bea1SJerome Brunet						#gpio-cells = <2>;
16911a7bea1SJerome Brunet						gpio-ranges = <&periphs_pinctrl 0 0 86>;
17011a7bea1SJerome Brunet					};
171ff4f8b6cSNeil Armstrong
17291516e54SNeil Armstrong					cec_ao_a_h_pins: cec_ao_a_h {
17391516e54SNeil Armstrong						mux {
17491516e54SNeil Armstrong							groups = "cec_ao_a_h";
17591516e54SNeil Armstrong							function = "cec_ao_a_h";
17691516e54SNeil Armstrong							bias-disable;
17791516e54SNeil Armstrong						};
17891516e54SNeil Armstrong					};
17991516e54SNeil Armstrong
18091516e54SNeil Armstrong					cec_ao_b_h_pins: cec_ao_b_h {
18191516e54SNeil Armstrong						mux {
18291516e54SNeil Armstrong							groups = "cec_ao_b_h";
18391516e54SNeil Armstrong							function = "cec_ao_b_h";
18491516e54SNeil Armstrong							bias-disable;
18591516e54SNeil Armstrong						};
18691516e54SNeil Armstrong					};
18791516e54SNeil Armstrong
1884759fd87SJerome Brunet					emmc_pins: emmc {
1894759fd87SJerome Brunet						mux-0 {
1904759fd87SJerome Brunet							groups = "emmc_nand_d0",
1914759fd87SJerome Brunet								 "emmc_nand_d1",
1924759fd87SJerome Brunet								 "emmc_nand_d2",
1934759fd87SJerome Brunet								 "emmc_nand_d3",
1944759fd87SJerome Brunet								 "emmc_nand_d4",
1954759fd87SJerome Brunet								 "emmc_nand_d5",
1964759fd87SJerome Brunet								 "emmc_nand_d6",
1974759fd87SJerome Brunet								 "emmc_nand_d7",
1984759fd87SJerome Brunet								 "emmc_cmd";
1994759fd87SJerome Brunet							function = "emmc";
2004759fd87SJerome Brunet							bias-pull-up;
2014759fd87SJerome Brunet							drive-strength-microamp = <4000>;
2024759fd87SJerome Brunet						};
2034759fd87SJerome Brunet
2044759fd87SJerome Brunet						mux-1 {
2054759fd87SJerome Brunet							groups = "emmc_clk";
2064759fd87SJerome Brunet							function = "emmc";
2074759fd87SJerome Brunet							bias-disable;
2084759fd87SJerome Brunet							drive-strength-microamp = <4000>;
2094759fd87SJerome Brunet						};
2104759fd87SJerome Brunet					};
2114759fd87SJerome Brunet
2124759fd87SJerome Brunet					emmc_ds_pins: emmc-ds {
2134759fd87SJerome Brunet						mux {
2144759fd87SJerome Brunet							groups = "emmc_nand_ds";
2154759fd87SJerome Brunet							function = "emmc";
2164759fd87SJerome Brunet							bias-pull-down;
2174759fd87SJerome Brunet							drive-strength-microamp = <4000>;
2184759fd87SJerome Brunet						};
2194759fd87SJerome Brunet					};
2204759fd87SJerome Brunet
2214759fd87SJerome Brunet					emmc_clk_gate_pins: emmc_clk_gate {
2224759fd87SJerome Brunet						mux {
2234759fd87SJerome Brunet							groups = "BOOT_8";
2244759fd87SJerome Brunet							function = "gpio_periphs";
2254759fd87SJerome Brunet							bias-pull-down;
2264759fd87SJerome Brunet							drive-strength-microamp = <4000>;
2274759fd87SJerome Brunet						};
2284759fd87SJerome Brunet					};
2294759fd87SJerome Brunet
230083feecdSNeil Armstrong					hdmitx_ddc_pins: hdmitx_ddc {
231083feecdSNeil Armstrong						mux {
232083feecdSNeil Armstrong							groups = "hdmitx_sda",
233083feecdSNeil Armstrong								 "hdmitx_sck";
234083feecdSNeil Armstrong							function = "hdmitx";
235083feecdSNeil Armstrong							bias-disable;
236083feecdSNeil Armstrong						};
237083feecdSNeil Armstrong					};
238083feecdSNeil Armstrong
239083feecdSNeil Armstrong					hdmitx_hpd_pins: hdmitx_hpd {
240083feecdSNeil Armstrong						mux {
241083feecdSNeil Armstrong							groups = "hdmitx_hpd_in";
242083feecdSNeil Armstrong							function = "hdmitx";
243083feecdSNeil Armstrong							bias-disable;
244083feecdSNeil Armstrong						};
245083feecdSNeil Armstrong					};
246083feecdSNeil Armstrong
247bb23b125SNeil Armstrong					pwm_a_pins: pwm-a {
248bb23b125SNeil Armstrong						mux {
249bb23b125SNeil Armstrong							groups = "pwm_a";
250bb23b125SNeil Armstrong							function = "pwm_a";
251bb23b125SNeil Armstrong							bias-disable;
252bb23b125SNeil Armstrong						};
253bb23b125SNeil Armstrong					};
254bb23b125SNeil Armstrong
255bb23b125SNeil Armstrong					pwm_b_x7_pins: pwm-b-x7 {
256bb23b125SNeil Armstrong						mux {
257bb23b125SNeil Armstrong							groups = "pwm_b_x7";
258bb23b125SNeil Armstrong							function = "pwm_b";
259bb23b125SNeil Armstrong							bias-disable;
260bb23b125SNeil Armstrong						};
261bb23b125SNeil Armstrong					};
262bb23b125SNeil Armstrong
263bb23b125SNeil Armstrong					pwm_b_x19_pins: pwm-b-x19 {
264bb23b125SNeil Armstrong						mux {
265bb23b125SNeil Armstrong							groups = "pwm_b_x19";
266bb23b125SNeil Armstrong							function = "pwm_b";
267bb23b125SNeil Armstrong							bias-disable;
268bb23b125SNeil Armstrong						};
269bb23b125SNeil Armstrong					};
270bb23b125SNeil Armstrong
271bb23b125SNeil Armstrong					pwm_c_c_pins: pwm-c-c {
272bb23b125SNeil Armstrong						mux {
273bb23b125SNeil Armstrong							groups = "pwm_c_c";
274bb23b125SNeil Armstrong							function = "pwm_c";
275bb23b125SNeil Armstrong							bias-disable;
276bb23b125SNeil Armstrong						};
277bb23b125SNeil Armstrong					};
278bb23b125SNeil Armstrong
279bb23b125SNeil Armstrong					pwm_c_x5_pins: pwm-c-x5 {
280bb23b125SNeil Armstrong						mux {
281bb23b125SNeil Armstrong							groups = "pwm_c_x5";
282bb23b125SNeil Armstrong							function = "pwm_c";
283bb23b125SNeil Armstrong							bias-disable;
284bb23b125SNeil Armstrong						};
285bb23b125SNeil Armstrong					};
286bb23b125SNeil Armstrong
287bb23b125SNeil Armstrong					pwm_c_x8_pins: pwm-c-x8 {
288bb23b125SNeil Armstrong						mux {
289bb23b125SNeil Armstrong							groups = "pwm_c_x8";
290bb23b125SNeil Armstrong							function = "pwm_c";
291bb23b125SNeil Armstrong							bias-disable;
292bb23b125SNeil Armstrong						};
293bb23b125SNeil Armstrong					};
294bb23b125SNeil Armstrong
295bb23b125SNeil Armstrong					pwm_d_x3_pins: pwm-d-x3 {
296bb23b125SNeil Armstrong						mux {
297bb23b125SNeil Armstrong							groups = "pwm_d_x3";
298bb23b125SNeil Armstrong							function = "pwm_d";
299bb23b125SNeil Armstrong							bias-disable;
300bb23b125SNeil Armstrong						};
301bb23b125SNeil Armstrong					};
302bb23b125SNeil Armstrong
303bb23b125SNeil Armstrong					pwm_d_x6_pins: pwm-d-x6 {
304bb23b125SNeil Armstrong						mux {
305bb23b125SNeil Armstrong							groups = "pwm_d_x6";
306bb23b125SNeil Armstrong							function = "pwm_d";
307bb23b125SNeil Armstrong							bias-disable;
308bb23b125SNeil Armstrong						};
309bb23b125SNeil Armstrong					};
310bb23b125SNeil Armstrong
311bb23b125SNeil Armstrong					pwm_e_pins: pwm-e {
312bb23b125SNeil Armstrong						mux {
313bb23b125SNeil Armstrong							groups = "pwm_e";
314bb23b125SNeil Armstrong							function = "pwm_e";
315bb23b125SNeil Armstrong							bias-disable;
316bb23b125SNeil Armstrong						};
317bb23b125SNeil Armstrong					};
318bb23b125SNeil Armstrong
319bb23b125SNeil Armstrong					pwm_f_x_pins: pwm-f-x {
320bb23b125SNeil Armstrong						mux {
321bb23b125SNeil Armstrong							groups = "pwm_f_x";
322bb23b125SNeil Armstrong							function = "pwm_f";
323bb23b125SNeil Armstrong							bias-disable;
324bb23b125SNeil Armstrong						};
325bb23b125SNeil Armstrong					};
326bb23b125SNeil Armstrong
327bb23b125SNeil Armstrong					pwm_f_h_pins: pwm-f-h {
328bb23b125SNeil Armstrong						mux {
329bb23b125SNeil Armstrong							groups = "pwm_f_h";
330bb23b125SNeil Armstrong							function = "pwm_f";
331bb23b125SNeil Armstrong							bias-disable;
332bb23b125SNeil Armstrong						};
333bb23b125SNeil Armstrong					};
334bb23b125SNeil Armstrong
3354759fd87SJerome Brunet					sdcard_c_pins: sdcard_c {
3364759fd87SJerome Brunet						mux-0 {
3374759fd87SJerome Brunet							groups = "sdcard_d0_c",
3384759fd87SJerome Brunet								 "sdcard_d1_c",
3394759fd87SJerome Brunet								 "sdcard_d2_c",
3404759fd87SJerome Brunet								 "sdcard_d3_c",
3414759fd87SJerome Brunet								 "sdcard_cmd_c";
3424759fd87SJerome Brunet							function = "sdcard";
3434759fd87SJerome Brunet							bias-pull-up;
3444759fd87SJerome Brunet							drive-strength-microamp = <4000>;
3454759fd87SJerome Brunet						};
3464759fd87SJerome Brunet
3474759fd87SJerome Brunet						mux-1 {
3484759fd87SJerome Brunet							groups = "sdcard_clk_c";
3494759fd87SJerome Brunet							function = "sdcard";
3504759fd87SJerome Brunet							bias-disable;
3514759fd87SJerome Brunet							drive-strength-microamp = <4000>;
3524759fd87SJerome Brunet						};
3534759fd87SJerome Brunet					};
3544759fd87SJerome Brunet
3554759fd87SJerome Brunet					sdcard_clk_gate_c_pins: sdcard_clk_gate_c {
3564759fd87SJerome Brunet						mux {
3574759fd87SJerome Brunet							groups = "GPIOC_4";
3584759fd87SJerome Brunet							function = "gpio_periphs";
3594759fd87SJerome Brunet							bias-pull-down;
3604759fd87SJerome Brunet							drive-strength-microamp = <4000>;
3614759fd87SJerome Brunet						};
3624759fd87SJerome Brunet					};
3634759fd87SJerome Brunet
3644759fd87SJerome Brunet					sdcard_z_pins: sdcard_z {
3654759fd87SJerome Brunet						mux-0 {
3664759fd87SJerome Brunet							groups = "sdcard_d0_z",
3674759fd87SJerome Brunet								 "sdcard_d1_z",
3684759fd87SJerome Brunet								 "sdcard_d2_z",
3694759fd87SJerome Brunet								 "sdcard_d3_z",
3704759fd87SJerome Brunet								 "sdcard_cmd_z";
3714759fd87SJerome Brunet							function = "sdcard";
3724759fd87SJerome Brunet							bias-pull-up;
3734759fd87SJerome Brunet							drive-strength-microamp = <4000>;
3744759fd87SJerome Brunet						};
3754759fd87SJerome Brunet
3764759fd87SJerome Brunet						mux-1 {
3774759fd87SJerome Brunet							groups = "sdcard_clk_z";
3784759fd87SJerome Brunet							function = "sdcard";
3794759fd87SJerome Brunet							bias-disable;
3804759fd87SJerome Brunet							drive-strength-microamp = <4000>;
3814759fd87SJerome Brunet						};
3824759fd87SJerome Brunet					};
3834759fd87SJerome Brunet
3844759fd87SJerome Brunet					sdcard_clk_gate_z_pins: sdcard_clk_gate_z {
3854759fd87SJerome Brunet						mux {
3864759fd87SJerome Brunet							groups = "GPIOZ_6";
3874759fd87SJerome Brunet							function = "gpio_periphs";
3884759fd87SJerome Brunet							bias-pull-down;
3894759fd87SJerome Brunet							drive-strength-microamp = <4000>;
3904759fd87SJerome Brunet						};
3914759fd87SJerome Brunet					};
3924759fd87SJerome Brunet
393ff4f8b6cSNeil Armstrong					uart_a_pins: uart-a {
394ff4f8b6cSNeil Armstrong						mux {
395ff4f8b6cSNeil Armstrong							groups = "uart_a_tx",
396ff4f8b6cSNeil Armstrong								 "uart_a_rx";
397ff4f8b6cSNeil Armstrong							function = "uart_a";
398ff4f8b6cSNeil Armstrong							bias-disable;
399ff4f8b6cSNeil Armstrong						};
400ff4f8b6cSNeil Armstrong					};
401ff4f8b6cSNeil Armstrong
402ff4f8b6cSNeil Armstrong					uart_a_cts_rts_pins: uart-a-cts-rts {
403ff4f8b6cSNeil Armstrong						mux {
404ff4f8b6cSNeil Armstrong							groups = "uart_a_cts",
405ff4f8b6cSNeil Armstrong								 "uart_a_rts";
406ff4f8b6cSNeil Armstrong							function = "uart_a";
407ff4f8b6cSNeil Armstrong							bias-disable;
408ff4f8b6cSNeil Armstrong						};
409ff4f8b6cSNeil Armstrong					};
410ff4f8b6cSNeil Armstrong
411ff4f8b6cSNeil Armstrong					uart_b_pins: uart-b {
412ff4f8b6cSNeil Armstrong						mux {
413ff4f8b6cSNeil Armstrong							groups = "uart_b_tx",
414ff4f8b6cSNeil Armstrong								 "uart_b_rx";
415ff4f8b6cSNeil Armstrong							function = "uart_b";
416ff4f8b6cSNeil Armstrong							bias-disable;
417ff4f8b6cSNeil Armstrong						};
418ff4f8b6cSNeil Armstrong					};
419ff4f8b6cSNeil Armstrong
420ff4f8b6cSNeil Armstrong					uart_c_pins: uart-c {
421ff4f8b6cSNeil Armstrong						mux {
422ff4f8b6cSNeil Armstrong							groups = "uart_c_tx",
423ff4f8b6cSNeil Armstrong								 "uart_c_rx";
424ff4f8b6cSNeil Armstrong							function = "uart_c";
425ff4f8b6cSNeil Armstrong							bias-disable;
426ff4f8b6cSNeil Armstrong						};
427ff4f8b6cSNeil Armstrong					};
428ff4f8b6cSNeil Armstrong
429ff4f8b6cSNeil Armstrong					uart_c_cts_rts_pins: uart-c-cts-rts {
430ff4f8b6cSNeil Armstrong						mux {
431ff4f8b6cSNeil Armstrong							groups = "uart_c_cts",
432ff4f8b6cSNeil Armstrong								 "uart_c_rts";
433ff4f8b6cSNeil Armstrong							function = "uart_c";
434ff4f8b6cSNeil Armstrong							bias-disable;
435ff4f8b6cSNeil Armstrong						};
436ff4f8b6cSNeil Armstrong					};
43711a7bea1SJerome Brunet				};
4389c8c52f7SJianxin Pan			};
4399c8c52f7SJianxin Pan
4409baf7d6bSNeil Armstrong			usb2_phy0: phy@36000 {
4419baf7d6bSNeil Armstrong				compatible = "amlogic,g12a-usb2-phy";
4429baf7d6bSNeil Armstrong				reg = <0x0 0x36000 0x0 0x2000>;
4439baf7d6bSNeil Armstrong				clocks = <&xtal>;
4449baf7d6bSNeil Armstrong				clock-names = "xtal";
4459baf7d6bSNeil Armstrong				resets = <&reset RESET_USB_PHY20>;
4469baf7d6bSNeil Armstrong				reset-names = "phy";
4479baf7d6bSNeil Armstrong				#phy-cells = <0>;
4489baf7d6bSNeil Armstrong			};
4499baf7d6bSNeil Armstrong
450083feecdSNeil Armstrong			dmc: bus@38000 {
451083feecdSNeil Armstrong				compatible = "simple-bus";
452083feecdSNeil Armstrong				reg = <0x0 0x38000 0x0 0x400>;
453083feecdSNeil Armstrong				#address-cells = <2>;
454083feecdSNeil Armstrong				#size-cells = <2>;
455083feecdSNeil Armstrong				ranges = <0x0 0x0 0x0 0x38000 0x0 0x400>;
456083feecdSNeil Armstrong
457083feecdSNeil Armstrong				canvas: video-lut@48 {
458083feecdSNeil Armstrong					compatible = "amlogic,canvas";
459083feecdSNeil Armstrong					reg = <0x0 0x48 0x0 0x14>;
460083feecdSNeil Armstrong				};
461083feecdSNeil Armstrong			};
462083feecdSNeil Armstrong
4639baf7d6bSNeil Armstrong			usb2_phy1: phy@3a000 {
4649baf7d6bSNeil Armstrong				compatible = "amlogic,g12a-usb2-phy";
4659baf7d6bSNeil Armstrong				reg = <0x0 0x3a000 0x0 0x2000>;
4669baf7d6bSNeil Armstrong				clocks = <&xtal>;
4679baf7d6bSNeil Armstrong				clock-names = "xtal";
4689baf7d6bSNeil Armstrong				resets = <&reset RESET_USB_PHY21>;
4699baf7d6bSNeil Armstrong				reset-names = "phy";
4709baf7d6bSNeil Armstrong				#phy-cells = <0>;
4719baf7d6bSNeil Armstrong			};
4729baf7d6bSNeil Armstrong
473503f5fedSJerome Brunet			hiu: bus@3c000 {
4749c8c52f7SJianxin Pan				compatible = "simple-bus";
475503f5fedSJerome Brunet				reg = <0x0 0x3c000 0x0 0x1400>;
4769c8c52f7SJianxin Pan				#address-cells = <2>;
4779c8c52f7SJianxin Pan				#size-cells = <2>;
478503f5fedSJerome Brunet				ranges = <0x0 0x0 0x0 0x3c000 0x0 0x1400>;
479785fb434SJerome Brunet
480785fb434SJerome Brunet				hhi: system-controller@0 {
481785fb434SJerome Brunet					compatible = "amlogic,meson-gx-hhi-sysctrl",
482785fb434SJerome Brunet						     "simple-mfd", "syscon";
483785fb434SJerome Brunet					reg = <0 0 0 0x400>;
484785fb434SJerome Brunet
485785fb434SJerome Brunet					clkc: clock-controller {
486785fb434SJerome Brunet						compatible = "amlogic,g12a-clkc";
487785fb434SJerome Brunet						#clock-cells = <1>;
488785fb434SJerome Brunet						clocks = <&xtal>;
489785fb434SJerome Brunet						clock-names = "xtal";
490785fb434SJerome Brunet					};
491785fb434SJerome Brunet				};
492503f5fedSJerome Brunet			};
4939baf7d6bSNeil Armstrong
4949baf7d6bSNeil Armstrong			usb3_pcie_phy: phy@46000 {
4959baf7d6bSNeil Armstrong				compatible = "amlogic,g12a-usb3-pcie-phy";
4969baf7d6bSNeil Armstrong				reg = <0x0 0x46000 0x0 0x2000>;
4979baf7d6bSNeil Armstrong				clocks = <&clkc CLKID_PCIE_PLL>;
4989baf7d6bSNeil Armstrong				clock-names = "ref_clk";
4999baf7d6bSNeil Armstrong				resets = <&reset RESET_PCIE_PHY>;
5009baf7d6bSNeil Armstrong				reset-names = "phy";
5019baf7d6bSNeil Armstrong				assigned-clocks = <&clkc CLKID_PCIE_PLL>;
5029baf7d6bSNeil Armstrong				assigned-clock-rates = <100000000>;
5039baf7d6bSNeil Armstrong				#phy-cells = <1>;
5049baf7d6bSNeil Armstrong			};
5059c8c52f7SJianxin Pan		};
5069c8c52f7SJianxin Pan
5079c8c52f7SJianxin Pan		aobus: bus@ff800000 {
5089c8c52f7SJianxin Pan			compatible = "simple-bus";
5099c8c52f7SJianxin Pan			reg = <0x0 0xff800000 0x0 0x100000>;
5109c8c52f7SJianxin Pan			#address-cells = <2>;
5119c8c52f7SJianxin Pan			#size-cells = <2>;
5129c8c52f7SJianxin Pan			ranges = <0x0 0x0 0x0 0xff800000 0x0 0x100000>;
5139c8c52f7SJianxin Pan
514b019f4a4SNeil Armstrong			rti: sys-ctrl@0 {
515b019f4a4SNeil Armstrong				compatible = "amlogic,meson-gx-ao-sysctrl",
516b019f4a4SNeil Armstrong					     "simple-mfd", "syscon";
517b019f4a4SNeil Armstrong				reg = <0x0 0x0 0x0 0x100>;
518b019f4a4SNeil Armstrong				#address-cells = <2>;
519b019f4a4SNeil Armstrong				#size-cells = <2>;
520b019f4a4SNeil Armstrong				ranges = <0x0 0x0 0x0 0x0 0x0 0x100>;
521b019f4a4SNeil Armstrong
522b019f4a4SNeil Armstrong				clkc_AO: clock-controller {
523b019f4a4SNeil Armstrong					compatible = "amlogic,meson-g12a-aoclkc";
524b019f4a4SNeil Armstrong					#clock-cells = <1>;
525b019f4a4SNeil Armstrong					#reset-cells = <1>;
526b019f4a4SNeil Armstrong					clocks = <&xtal>, <&clkc CLKID_CLK81>;
527b019f4a4SNeil Armstrong					clock-names = "xtal", "mpeg-clk";
528b019f4a4SNeil Armstrong				};
52911a7bea1SJerome Brunet
530083feecdSNeil Armstrong				pwrc_vpu: power-controller-vpu {
531083feecdSNeil Armstrong					compatible = "amlogic,meson-g12a-pwrc-vpu";
532083feecdSNeil Armstrong					#power-domain-cells = <0>;
533083feecdSNeil Armstrong					amlogic,hhi-sysctrl = <&hhi>;
534083feecdSNeil Armstrong					resets = <&reset RESET_VIU>,
535083feecdSNeil Armstrong						 <&reset RESET_VENC>,
536083feecdSNeil Armstrong						 <&reset RESET_VCBUS>,
537083feecdSNeil Armstrong						 <&reset RESET_BT656>,
538083feecdSNeil Armstrong						 <&reset RESET_RDMA>,
539083feecdSNeil Armstrong						 <&reset RESET_VENCI>,
540083feecdSNeil Armstrong						 <&reset RESET_VENCP>,
541083feecdSNeil Armstrong						 <&reset RESET_VDAC>,
542083feecdSNeil Armstrong						 <&reset RESET_VDI6>,
543083feecdSNeil Armstrong						 <&reset RESET_VENCL>,
544083feecdSNeil Armstrong						 <&reset RESET_VID_LOCK>;
545083feecdSNeil Armstrong					clocks = <&clkc CLKID_VPU>,
546083feecdSNeil Armstrong						 <&clkc CLKID_VAPB>;
547083feecdSNeil Armstrong					clock-names = "vpu", "vapb";
548083feecdSNeil Armstrong					/*
549083feecdSNeil Armstrong					 * VPU clocking is provided by two identical clock paths
550083feecdSNeil Armstrong					 * VPU_0 and VPU_1 muxed to a single clock by a glitch
551083feecdSNeil Armstrong					 * free mux to safely change frequency while running.
552083feecdSNeil Armstrong					 * Same for VAPB but with a final gate after the glitch free mux.
553083feecdSNeil Armstrong					 */
554083feecdSNeil Armstrong					assigned-clocks = <&clkc CLKID_VPU_0_SEL>,
555083feecdSNeil Armstrong							  <&clkc CLKID_VPU_0>,
556083feecdSNeil Armstrong							  <&clkc CLKID_VPU>, /* Glitch free mux */
557083feecdSNeil Armstrong							  <&clkc CLKID_VAPB_0_SEL>,
558083feecdSNeil Armstrong							  <&clkc CLKID_VAPB_0>,
559083feecdSNeil Armstrong							  <&clkc CLKID_VAPB_SEL>; /* Glitch free mux */
560083feecdSNeil Armstrong					assigned-clock-parents = <&clkc CLKID_FCLK_DIV3>,
561083feecdSNeil Armstrong								 <0>, /* Do Nothing */
562083feecdSNeil Armstrong								 <&clkc CLKID_VPU_0>,
563083feecdSNeil Armstrong								 <&clkc CLKID_FCLK_DIV4>,
564083feecdSNeil Armstrong								 <0>, /* Do Nothing */
565083feecdSNeil Armstrong								 <&clkc CLKID_VAPB_0>;
566083feecdSNeil Armstrong					assigned-clock-rates = <0>, /* Do Nothing */
567083feecdSNeil Armstrong							       <666666666>,
568083feecdSNeil Armstrong							       <0>, /* Do Nothing */
569083feecdSNeil Armstrong							       <0>, /* Do Nothing */
570083feecdSNeil Armstrong							       <250000000>,
571083feecdSNeil Armstrong							       <0>; /* Do Nothing */
572083feecdSNeil Armstrong				};
573083feecdSNeil Armstrong
57411a7bea1SJerome Brunet				ao_pinctrl: pinctrl@14 {
57511a7bea1SJerome Brunet					compatible = "amlogic,meson-g12a-aobus-pinctrl";
57611a7bea1SJerome Brunet					#address-cells = <2>;
57711a7bea1SJerome Brunet					#size-cells = <2>;
57811a7bea1SJerome Brunet					ranges;
57911a7bea1SJerome Brunet
58011a7bea1SJerome Brunet					gpio_ao: bank@14 {
58111a7bea1SJerome Brunet						reg = <0x0 0x14 0x0 0x8>,
58211a7bea1SJerome Brunet						      <0x0 0x1c 0x0 0x8>,
58311a7bea1SJerome Brunet						      <0x0 0x24 0x0 0x14>;
58411a7bea1SJerome Brunet						reg-names = "mux",
58511a7bea1SJerome Brunet							    "ds",
58611a7bea1SJerome Brunet							    "gpio";
58711a7bea1SJerome Brunet						gpio-controller;
58811a7bea1SJerome Brunet						#gpio-cells = <2>;
58911a7bea1SJerome Brunet						gpio-ranges = <&ao_pinctrl 0 0 15>;
59011a7bea1SJerome Brunet					};
591e92546c2SJerome Brunet
592e92546c2SJerome Brunet					uart_ao_a_pins: uart-a-ao {
593e92546c2SJerome Brunet						mux {
594e92546c2SJerome Brunet							groups = "uart_ao_a_tx",
595e92546c2SJerome Brunet								 "uart_ao_a_rx";
596e92546c2SJerome Brunet							function = "uart_ao_a";
597e92546c2SJerome Brunet							bias-disable;
598e92546c2SJerome Brunet						};
599e92546c2SJerome Brunet					};
600e92546c2SJerome Brunet
601e92546c2SJerome Brunet					uart_ao_a_cts_rts_pins: uart-ao-a-cts-rts {
602e92546c2SJerome Brunet						mux {
603e92546c2SJerome Brunet							groups = "uart_ao_a_cts",
604e92546c2SJerome Brunet								 "uart_ao_a_rts";
605e92546c2SJerome Brunet							function = "uart_ao_a";
606e92546c2SJerome Brunet							bias-disable;
607e92546c2SJerome Brunet						};
608e92546c2SJerome Brunet					};
609bb23b125SNeil Armstrong
610bb23b125SNeil Armstrong					pwm_ao_a_pins: pwm-ao-a {
611bb23b125SNeil Armstrong						mux {
612bb23b125SNeil Armstrong							groups = "pwm_ao_a";
613bb23b125SNeil Armstrong							function = "pwm_ao_a";
614bb23b125SNeil Armstrong							bias-disable;
615bb23b125SNeil Armstrong						};
616bb23b125SNeil Armstrong					};
617bb23b125SNeil Armstrong
618bb23b125SNeil Armstrong					pwm_ao_b_pins: pwm-ao-b {
619bb23b125SNeil Armstrong						mux {
620bb23b125SNeil Armstrong							groups = "pwm_ao_b";
621bb23b125SNeil Armstrong							function = "pwm_ao_b";
622bb23b125SNeil Armstrong							bias-disable;
623bb23b125SNeil Armstrong						};
624bb23b125SNeil Armstrong					};
625bb23b125SNeil Armstrong
626bb23b125SNeil Armstrong					pwm_ao_c_4_pins: pwm-ao-c-4 {
627bb23b125SNeil Armstrong						mux {
628bb23b125SNeil Armstrong							groups = "pwm_ao_c_4";
629bb23b125SNeil Armstrong							function = "pwm_ao_c";
630bb23b125SNeil Armstrong							bias-disable;
631bb23b125SNeil Armstrong						};
632bb23b125SNeil Armstrong					};
633bb23b125SNeil Armstrong
634bb23b125SNeil Armstrong					pwm_ao_c_6_pins: pwm-ao-c-6 {
635bb23b125SNeil Armstrong						mux {
636bb23b125SNeil Armstrong							groups = "pwm_ao_c_6";
637bb23b125SNeil Armstrong							function = "pwm_ao_c";
638bb23b125SNeil Armstrong							bias-disable;
639bb23b125SNeil Armstrong						};
640bb23b125SNeil Armstrong					};
641bb23b125SNeil Armstrong
642bb23b125SNeil Armstrong					pwm_ao_d_5_pins: pwm-ao-d-5 {
643bb23b125SNeil Armstrong						mux {
644bb23b125SNeil Armstrong							groups = "pwm_ao_d_5";
645bb23b125SNeil Armstrong							function = "pwm_ao_d";
646bb23b125SNeil Armstrong							bias-disable;
647bb23b125SNeil Armstrong						};
648bb23b125SNeil Armstrong					};
649bb23b125SNeil Armstrong
650bb23b125SNeil Armstrong					pwm_ao_d_10_pins: pwm-ao-d-10 {
651bb23b125SNeil Armstrong						mux {
652bb23b125SNeil Armstrong							groups = "pwm_ao_d_10";
653bb23b125SNeil Armstrong							function = "pwm_ao_d";
654bb23b125SNeil Armstrong							bias-disable;
655bb23b125SNeil Armstrong						};
656bb23b125SNeil Armstrong					};
657bb23b125SNeil Armstrong
658bb23b125SNeil Armstrong					pwm_ao_d_e_pins: pwm-ao-d-e {
659bb23b125SNeil Armstrong						mux {
660bb23b125SNeil Armstrong							groups = "pwm_ao_d_e";
661bb23b125SNeil Armstrong							function = "pwm_ao_d";
6622bfe8412SNeil Armstrong						};
6632bfe8412SNeil Armstrong					};
6642bfe8412SNeil Armstrong
6652bfe8412SNeil Armstrong					remote_input_ao_pins: remote-input-ao {
6662bfe8412SNeil Armstrong						mux {
6672bfe8412SNeil Armstrong							groups = "remote_ao_input";
6682bfe8412SNeil Armstrong							function = "remote_ao_input";
669bb23b125SNeil Armstrong							bias-disable;
670bb23b125SNeil Armstrong						};
671bb23b125SNeil Armstrong					};
67211a7bea1SJerome Brunet				};
673b019f4a4SNeil Armstrong			};
674b019f4a4SNeil Armstrong
67591516e54SNeil Armstrong			cec_AO: cec@100 {
67691516e54SNeil Armstrong				compatible = "amlogic,meson-gx-ao-cec";
67791516e54SNeil Armstrong				reg = <0x0 0x00100 0x0 0x14>;
67891516e54SNeil Armstrong				interrupts = <GIC_SPI 199 IRQ_TYPE_EDGE_RISING>;
67991516e54SNeil Armstrong				clocks = <&clkc_AO CLKID_AO_CEC>;
68091516e54SNeil Armstrong				clock-names = "core";
68191516e54SNeil Armstrong				status = "disabled";
68291516e54SNeil Armstrong			};
68391516e54SNeil Armstrong
6840fa724c5SNeil Armstrong			sec_AO: ao-secure@140 {
6850fa724c5SNeil Armstrong				compatible = "amlogic,meson-gx-ao-secure", "syscon";
6860fa724c5SNeil Armstrong				reg = <0x0 0x140 0x0 0x140>;
6870fa724c5SNeil Armstrong				amlogic,has-chip-id;
6880fa724c5SNeil Armstrong			};
6890fa724c5SNeil Armstrong
69091516e54SNeil Armstrong			cecb_AO: cec@280 {
69191516e54SNeil Armstrong				compatible = "amlogic,meson-g12a-ao-cec";
69291516e54SNeil Armstrong				reg = <0x0 0x00280 0x0 0x1c>;
69391516e54SNeil Armstrong				interrupts = <GIC_SPI 203 IRQ_TYPE_EDGE_RISING>;
69491516e54SNeil Armstrong				clocks = <&clkc_AO CLKID_AO_CTS_OSCIN>;
69591516e54SNeil Armstrong				clock-names = "oscin";
69691516e54SNeil Armstrong				status = "disabled";
69791516e54SNeil Armstrong			};
69891516e54SNeil Armstrong
699bb23b125SNeil Armstrong			pwm_AO_cd: pwm@2000 {
700bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ao-pwm-cd";
701bb23b125SNeil Armstrong				reg = <0x0 0x2000 0x0 0x20>;
702bb23b125SNeil Armstrong				#pwm-cells = <3>;
703bb23b125SNeil Armstrong				status = "disabled";
704bb23b125SNeil Armstrong			};
705bb23b125SNeil Armstrong
7069c8c52f7SJianxin Pan			uart_AO: serial@3000 {
707503f5fedSJerome Brunet				compatible = "amlogic,meson-gx-uart",
708503f5fedSJerome Brunet					     "amlogic,meson-ao-uart";
7099c8c52f7SJianxin Pan				reg = <0x0 0x3000 0x0 0x18>;
7109c8c52f7SJianxin Pan				interrupts = <GIC_SPI 193 IRQ_TYPE_EDGE_RISING>;
7119c8c52f7SJianxin Pan				clocks = <&xtal>, <&xtal>, <&xtal>;
7129c8c52f7SJianxin Pan				clock-names = "xtal", "pclk", "baud";
7139c8c52f7SJianxin Pan				status = "disabled";
7149c8c52f7SJianxin Pan			};
7159c8c52f7SJianxin Pan
7169c8c52f7SJianxin Pan			uart_AO_B: serial@4000 {
717503f5fedSJerome Brunet				compatible = "amlogic,meson-gx-uart",
718503f5fedSJerome Brunet					     "amlogic,meson-ao-uart";
7199c8c52f7SJianxin Pan				reg = <0x0 0x4000 0x0 0x18>;
7209c8c52f7SJianxin Pan				interrupts = <GIC_SPI 197 IRQ_TYPE_EDGE_RISING>;
7219c8c52f7SJianxin Pan				clocks = <&xtal>, <&xtal>, <&xtal>;
7229c8c52f7SJianxin Pan				clock-names = "xtal", "pclk", "baud";
7239c8c52f7SJianxin Pan				status = "disabled";
7249c8c52f7SJianxin Pan			};
725820873cfSNeil Armstrong
726bb23b125SNeil Armstrong			pwm_AO_ab: pwm@7000 {
727bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ao-pwm-ab";
728bb23b125SNeil Armstrong				reg = <0x0 0x7000 0x0 0x20>;
729bb23b125SNeil Armstrong				#pwm-cells = <3>;
730bb23b125SNeil Armstrong				status = "disabled";
731bb23b125SNeil Armstrong			};
732bb23b125SNeil Armstrong
7332bfe8412SNeil Armstrong			ir: ir@8000 {
7342bfe8412SNeil Armstrong				compatible = "amlogic,meson-gxbb-ir";
7352bfe8412SNeil Armstrong				reg = <0x0 0x8000 0x0 0x20>;
7362bfe8412SNeil Armstrong				interrupts = <GIC_SPI 196 IRQ_TYPE_EDGE_RISING>;
7372bfe8412SNeil Armstrong				status = "disabled";
7382bfe8412SNeil Armstrong			};
7392bfe8412SNeil Armstrong
740820873cfSNeil Armstrong			saradc: adc@9000 {
741820873cfSNeil Armstrong				compatible = "amlogic,meson-g12a-saradc",
742820873cfSNeil Armstrong					     "amlogic,meson-saradc";
743820873cfSNeil Armstrong				reg = <0x0 0x9000 0x0 0x48>;
744820873cfSNeil Armstrong				#io-channel-cells = <1>;
745820873cfSNeil Armstrong				interrupts = <GIC_SPI 200 IRQ_TYPE_EDGE_RISING>;
746820873cfSNeil Armstrong				clocks = <&xtal>,
747820873cfSNeil Armstrong					 <&clkc_AO CLKID_AO_SAR_ADC>,
748820873cfSNeil Armstrong					 <&clkc_AO CLKID_AO_SAR_ADC_CLK>,
749820873cfSNeil Armstrong					 <&clkc_AO CLKID_AO_SAR_ADC_SEL>;
750820873cfSNeil Armstrong				clock-names = "clkin", "core", "adc_clk", "adc_sel";
751820873cfSNeil Armstrong				status = "disabled";
752820873cfSNeil Armstrong			};
7539c8c52f7SJianxin Pan		};
7549c8c52f7SJianxin Pan
755083feecdSNeil Armstrong		vpu: vpu@ff900000 {
756083feecdSNeil Armstrong			compatible = "amlogic,meson-g12a-vpu";
757083feecdSNeil Armstrong			reg = <0x0 0xff900000 0x0 0x100000>,
758083feecdSNeil Armstrong			      <0x0 0xff63c000 0x0 0x1000>;
759083feecdSNeil Armstrong			reg-names = "vpu", "hhi";
760083feecdSNeil Armstrong			interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING>;
761083feecdSNeil Armstrong			#address-cells = <1>;
762083feecdSNeil Armstrong			#size-cells = <0>;
763083feecdSNeil Armstrong			amlogic,canvas = <&canvas>;
764083feecdSNeil Armstrong			power-domains = <&pwrc_vpu>;
765083feecdSNeil Armstrong
766083feecdSNeil Armstrong			/* CVBS VDAC output port */
767083feecdSNeil Armstrong			cvbs_vdac_port: port@0 {
768083feecdSNeil Armstrong				reg = <0>;
769083feecdSNeil Armstrong			};
770083feecdSNeil Armstrong
771083feecdSNeil Armstrong			/* HDMI-TX output port */
772083feecdSNeil Armstrong			hdmi_tx_port: port@1 {
773083feecdSNeil Armstrong				reg = <1>;
774083feecdSNeil Armstrong
775083feecdSNeil Armstrong				hdmi_tx_out: endpoint {
776083feecdSNeil Armstrong					remote-endpoint = <&hdmi_tx_in>;
777083feecdSNeil Armstrong				};
778083feecdSNeil Armstrong			};
779083feecdSNeil Armstrong		};
780083feecdSNeil Armstrong
7819c8c52f7SJianxin Pan		gic: interrupt-controller@ffc01000 {
7829c8c52f7SJianxin Pan			compatible = "arm,gic-400";
7839c8c52f7SJianxin Pan			reg = <0x0 0xffc01000 0 0x1000>,
7849c8c52f7SJianxin Pan			      <0x0 0xffc02000 0 0x2000>,
7859c8c52f7SJianxin Pan			      <0x0 0xffc04000 0 0x2000>,
7869c8c52f7SJianxin Pan			      <0x0 0xffc06000 0 0x2000>;
7879c8c52f7SJianxin Pan			interrupt-controller;
7889c8c52f7SJianxin Pan			interrupts = <GIC_PPI 9
7899c8c52f7SJianxin Pan				(GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
7909c8c52f7SJianxin Pan			#interrupt-cells = <3>;
7919c8c52f7SJianxin Pan			#address-cells = <0>;
7929c8c52f7SJianxin Pan		};
7939c8c52f7SJianxin Pan
7949c8c52f7SJianxin Pan		cbus: bus@ffd00000 {
7959c8c52f7SJianxin Pan			compatible = "simple-bus";
796503f5fedSJerome Brunet			reg = <0x0 0xffd00000 0x0 0x100000>;
7979c8c52f7SJianxin Pan			#address-cells = <2>;
7989c8c52f7SJianxin Pan			#size-cells = <2>;
799503f5fedSJerome Brunet			ranges = <0x0 0x0 0x0 0xffd00000 0x0 0x100000>;
8009c8c52f7SJianxin Pan
8017ab41c47SJerome Brunet			reset: reset-controller@1004 {
8027ab41c47SJerome Brunet				compatible = "amlogic,meson-g12a-reset",
8037ab41c47SJerome Brunet					     "amlogic,meson-axg-reset";
8047ab41c47SJerome Brunet				reg = <0x0 0x1004 0x0 0x9c>;
8057ab41c47SJerome Brunet				#reset-cells = <1>;
8067ab41c47SJerome Brunet			};
8077ab41c47SJerome Brunet
808bb23b125SNeil Armstrong			pwm_ef: pwm@19000 {
809bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ee-pwm";
810bb23b125SNeil Armstrong				reg = <0x0 0x19000 0x0 0x20>;
811bb23b125SNeil Armstrong				#pwm-cells = <3>;
812bb23b125SNeil Armstrong				status = "disabled";
813bb23b125SNeil Armstrong			};
814bb23b125SNeil Armstrong
815bb23b125SNeil Armstrong			pwm_cd: pwm@1a000 {
816bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ee-pwm";
817bb23b125SNeil Armstrong				reg = <0x0 0x1a000 0x0 0x20>;
818bb23b125SNeil Armstrong				#pwm-cells = <3>;
819bb23b125SNeil Armstrong				status = "disabled";
820bb23b125SNeil Armstrong			};
821bb23b125SNeil Armstrong
822bb23b125SNeil Armstrong			pwm_ab: pwm@1b000 {
823bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ee-pwm";
824bb23b125SNeil Armstrong				reg = <0x0 0x1b000 0x0 0x20>;
825bb23b125SNeil Armstrong				#pwm-cells = <3>;
826bb23b125SNeil Armstrong				status = "disabled";
827bb23b125SNeil Armstrong			};
828bb23b125SNeil Armstrong
82960d4fdb8SJerome Brunet			clk_msr: clock-measure@18000 {
83060d4fdb8SJerome Brunet				compatible = "amlogic,meson-g12a-clk-measure";
83160d4fdb8SJerome Brunet				reg = <0x0 0x18000 0x0 0x10>;
83260d4fdb8SJerome Brunet			};
833ff4f8b6cSNeil Armstrong
834ff4f8b6cSNeil Armstrong			uart_C: serial@22000 {
835ff4f8b6cSNeil Armstrong				compatible = "amlogic,meson-gx-uart";
836ff4f8b6cSNeil Armstrong				reg = <0x0 0x22000 0x0 0x18>;
837ff4f8b6cSNeil Armstrong				interrupts = <GIC_SPI 93 IRQ_TYPE_EDGE_RISING>;
838ff4f8b6cSNeil Armstrong				clocks = <&xtal>, <&clkc CLKID_UART2>, <&xtal>;
839ff4f8b6cSNeil Armstrong				clock-names = "xtal", "pclk", "baud";
840ff4f8b6cSNeil Armstrong				status = "disabled";
841ff4f8b6cSNeil Armstrong			};
842ff4f8b6cSNeil Armstrong
843ff4f8b6cSNeil Armstrong			uart_B: serial@23000 {
844ff4f8b6cSNeil Armstrong				compatible = "amlogic,meson-gx-uart";
845ff4f8b6cSNeil Armstrong				reg = <0x0 0x23000 0x0 0x18>;
846ff4f8b6cSNeil Armstrong				interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>;
847ff4f8b6cSNeil Armstrong				clocks = <&xtal>, <&clkc CLKID_UART1>, <&xtal>;
848ff4f8b6cSNeil Armstrong				clock-names = "xtal", "pclk", "baud";
849ff4f8b6cSNeil Armstrong				status = "disabled";
850ff4f8b6cSNeil Armstrong			};
851ff4f8b6cSNeil Armstrong
852ff4f8b6cSNeil Armstrong			uart_A: serial@24000 {
853ff4f8b6cSNeil Armstrong				compatible = "amlogic,meson-gx-uart";
854ff4f8b6cSNeil Armstrong				reg = <0x0 0x24000 0x0 0x18>;
855ff4f8b6cSNeil Armstrong				interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
856ff4f8b6cSNeil Armstrong				clocks = <&xtal>, <&clkc CLKID_UART0>, <&xtal>;
857ff4f8b6cSNeil Armstrong				clock-names = "xtal", "pclk", "baud";
858ff4f8b6cSNeil Armstrong				status = "disabled";
859ff4f8b6cSNeil Armstrong			};
8609c8c52f7SJianxin Pan		};
8619baf7d6bSNeil Armstrong
8624759fd87SJerome Brunet		sd_emmc_b: sd@ffe05000 {
8634759fd87SJerome Brunet			compatible = "amlogic,meson-axg-mmc";
8644759fd87SJerome Brunet			reg = <0x0 0xffe05000 0x0 0x800>;
8654759fd87SJerome Brunet			interrupts = <GIC_SPI 190 IRQ_TYPE_EDGE_RISING>;
8664759fd87SJerome Brunet			status = "disabled";
8674759fd87SJerome Brunet			clocks = <&clkc CLKID_SD_EMMC_B>,
8684759fd87SJerome Brunet				 <&clkc CLKID_SD_EMMC_B_CLK0>,
8694759fd87SJerome Brunet				 <&clkc CLKID_FCLK_DIV2>;
8704759fd87SJerome Brunet			clock-names = "core", "clkin0", "clkin1";
8714759fd87SJerome Brunet			resets = <&reset RESET_SD_EMMC_B>;
8724759fd87SJerome Brunet		};
8734759fd87SJerome Brunet
8744759fd87SJerome Brunet		sd_emmc_c: mmc@ffe07000 {
8754759fd87SJerome Brunet			compatible = "amlogic,meson-axg-mmc";
8764759fd87SJerome Brunet			reg = <0x0 0xffe07000 0x0 0x800>;
8774759fd87SJerome Brunet			interrupts = <GIC_SPI 191 IRQ_TYPE_EDGE_RISING>;
8784759fd87SJerome Brunet			status = "disabled";
8794759fd87SJerome Brunet			clocks = <&clkc CLKID_SD_EMMC_C>,
8804759fd87SJerome Brunet				 <&clkc CLKID_SD_EMMC_C_CLK0>,
8814759fd87SJerome Brunet				 <&clkc CLKID_FCLK_DIV2>;
8824759fd87SJerome Brunet			clock-names = "core", "clkin0", "clkin1";
8834759fd87SJerome Brunet			resets = <&reset RESET_SD_EMMC_C>;
8844759fd87SJerome Brunet		};
8854759fd87SJerome Brunet
8869baf7d6bSNeil Armstrong		usb: usb@ffe09000 {
8879baf7d6bSNeil Armstrong			status = "disabled";
8889baf7d6bSNeil Armstrong			compatible = "amlogic,meson-g12a-usb-ctrl";
8899baf7d6bSNeil Armstrong			reg = <0x0 0xffe09000 0x0 0xa0>;
8909baf7d6bSNeil Armstrong			interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
8919baf7d6bSNeil Armstrong			#address-cells = <2>;
8929baf7d6bSNeil Armstrong			#size-cells = <2>;
8939baf7d6bSNeil Armstrong			ranges;
8949baf7d6bSNeil Armstrong
8959baf7d6bSNeil Armstrong			clocks = <&clkc CLKID_USB>;
8969baf7d6bSNeil Armstrong			resets = <&reset RESET_USB>;
8979baf7d6bSNeil Armstrong
8989baf7d6bSNeil Armstrong			dr_mode = "otg";
8999baf7d6bSNeil Armstrong
9009baf7d6bSNeil Armstrong			phys = <&usb2_phy0>, <&usb2_phy1>,
9019baf7d6bSNeil Armstrong			       <&usb3_pcie_phy PHY_TYPE_USB3>;
9029baf7d6bSNeil Armstrong			phy-names = "usb2-phy0", "usb2-phy1", "usb3-phy0";
9039baf7d6bSNeil Armstrong
9049baf7d6bSNeil Armstrong			dwc2: usb@ff400000 {
9059baf7d6bSNeil Armstrong				compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
9069baf7d6bSNeil Armstrong				reg = <0x0 0xff400000 0x0 0x40000>;
9079baf7d6bSNeil Armstrong				interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
9089baf7d6bSNeil Armstrong				clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
9099baf7d6bSNeil Armstrong				clock-names = "ddr";
9109baf7d6bSNeil Armstrong				phys = <&usb2_phy1>;
9119baf7d6bSNeil Armstrong				dr_mode = "peripheral";
9129baf7d6bSNeil Armstrong				g-rx-fifo-size = <192>;
9139baf7d6bSNeil Armstrong				g-np-tx-fifo-size = <128>;
9149baf7d6bSNeil Armstrong				g-tx-fifo-size = <128 128 16 16 16>;
9159baf7d6bSNeil Armstrong			};
9169baf7d6bSNeil Armstrong
9179baf7d6bSNeil Armstrong			dwc3: usb@ff500000 {
9189baf7d6bSNeil Armstrong				compatible = "snps,dwc3";
9199baf7d6bSNeil Armstrong				reg = <0x0 0xff500000 0x0 0x100000>;
9209baf7d6bSNeil Armstrong				interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
9219baf7d6bSNeil Armstrong				dr_mode = "host";
9229baf7d6bSNeil Armstrong				snps,dis_u2_susphy_quirk;
9239baf7d6bSNeil Armstrong				snps,quirk-frame-length-adjustment;
9249baf7d6bSNeil Armstrong			};
9259baf7d6bSNeil Armstrong		};
9262607fd08SNeil Armstrong
9272607fd08SNeil Armstrong		mali: gpu@ffe40000 {
9282607fd08SNeil Armstrong			compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
9292607fd08SNeil Armstrong			reg = <0x0 0xffe40000 0x0 0x40000>;
9302607fd08SNeil Armstrong			interrupt-parent = <&gic>;
9312607fd08SNeil Armstrong			interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
9322607fd08SNeil Armstrong				     <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
9332607fd08SNeil Armstrong				     <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
9342607fd08SNeil Armstrong			interrupt-names = "gpu", "mmu", "job";
9352607fd08SNeil Armstrong			clocks = <&clkc CLKID_MALI>;
9362607fd08SNeil Armstrong			resets = <&reset RESET_DVALIN_CAPB3>, <&reset RESET_DVALIN>;
9372607fd08SNeil Armstrong
9382607fd08SNeil Armstrong			/*
9392607fd08SNeil Armstrong			 * Mali clocking is provided by two identical clock paths
9402607fd08SNeil Armstrong			 * MALI_0 and MALI_1 muxed to a single clock by a glitch
9412607fd08SNeil Armstrong			 * free mux to safely change frequency while running.
9422607fd08SNeil Armstrong			 */
9432607fd08SNeil Armstrong			assigned-clocks = <&clkc CLKID_MALI_0_SEL>,
9442607fd08SNeil Armstrong					  <&clkc CLKID_MALI_0>,
9452607fd08SNeil Armstrong					  <&clkc CLKID_MALI>; /* Glitch free mux */
9462607fd08SNeil Armstrong			assigned-clock-parents = <&clkc CLKID_FCLK_DIV2P5>,
9472607fd08SNeil Armstrong						 <0>, /* Do Nothing */
9482607fd08SNeil Armstrong						 <&clkc CLKID_MALI_0>;
9492607fd08SNeil Armstrong			assigned-clock-rates = <0>, /* Do Nothing */
9502607fd08SNeil Armstrong					       <800000000>,
9512607fd08SNeil Armstrong					       <0>; /* Do Nothing */
9522607fd08SNeil Armstrong		};
9539c8c52f7SJianxin Pan	};
9549c8c52f7SJianxin Pan
9559c8c52f7SJianxin Pan	timer {
9569c8c52f7SJianxin Pan		compatible = "arm,armv8-timer";
9579c8c52f7SJianxin Pan		interrupts = <GIC_PPI 13
9589c8c52f7SJianxin Pan			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
9599c8c52f7SJianxin Pan			     <GIC_PPI 14
9609c8c52f7SJianxin Pan			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
9619c8c52f7SJianxin Pan			     <GIC_PPI 11
9629c8c52f7SJianxin Pan			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
9639c8c52f7SJianxin Pan			     <GIC_PPI 10
9649c8c52f7SJianxin Pan			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>;
9659c8c52f7SJianxin Pan	};
9669c8c52f7SJianxin Pan
9679c8c52f7SJianxin Pan	xtal: xtal-clk {
9689c8c52f7SJianxin Pan		compatible = "fixed-clock";
9699c8c52f7SJianxin Pan		clock-frequency = <24000000>;
9709c8c52f7SJianxin Pan		clock-output-names = "xtal";
9719c8c52f7SJianxin Pan		#clock-cells = <0>;
9729c8c52f7SJianxin Pan	};
9739c8c52f7SJianxin Pan
9749c8c52f7SJianxin Pan};
975