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
188083feecdSNeil Armstrong					hdmitx_ddc_pins: hdmitx_ddc {
189083feecdSNeil Armstrong						mux {
190083feecdSNeil Armstrong							groups = "hdmitx_sda",
191083feecdSNeil Armstrong								 "hdmitx_sck";
192083feecdSNeil Armstrong							function = "hdmitx";
193083feecdSNeil Armstrong							bias-disable;
194083feecdSNeil Armstrong						};
195083feecdSNeil Armstrong					};
196083feecdSNeil Armstrong
197083feecdSNeil Armstrong					hdmitx_hpd_pins: hdmitx_hpd {
198083feecdSNeil Armstrong						mux {
199083feecdSNeil Armstrong							groups = "hdmitx_hpd_in";
200083feecdSNeil Armstrong							function = "hdmitx";
201083feecdSNeil Armstrong							bias-disable;
202083feecdSNeil Armstrong						};
203083feecdSNeil Armstrong					};
204083feecdSNeil Armstrong
205bb23b125SNeil Armstrong					pwm_a_pins: pwm-a {
206bb23b125SNeil Armstrong						mux {
207bb23b125SNeil Armstrong							groups = "pwm_a";
208bb23b125SNeil Armstrong							function = "pwm_a";
209bb23b125SNeil Armstrong							bias-disable;
210bb23b125SNeil Armstrong						};
211bb23b125SNeil Armstrong					};
212bb23b125SNeil Armstrong
213bb23b125SNeil Armstrong					pwm_b_x7_pins: pwm-b-x7 {
214bb23b125SNeil Armstrong						mux {
215bb23b125SNeil Armstrong							groups = "pwm_b_x7";
216bb23b125SNeil Armstrong							function = "pwm_b";
217bb23b125SNeil Armstrong							bias-disable;
218bb23b125SNeil Armstrong						};
219bb23b125SNeil Armstrong					};
220bb23b125SNeil Armstrong
221bb23b125SNeil Armstrong					pwm_b_x19_pins: pwm-b-x19 {
222bb23b125SNeil Armstrong						mux {
223bb23b125SNeil Armstrong							groups = "pwm_b_x19";
224bb23b125SNeil Armstrong							function = "pwm_b";
225bb23b125SNeil Armstrong							bias-disable;
226bb23b125SNeil Armstrong						};
227bb23b125SNeil Armstrong					};
228bb23b125SNeil Armstrong
229bb23b125SNeil Armstrong					pwm_c_c_pins: pwm-c-c {
230bb23b125SNeil Armstrong						mux {
231bb23b125SNeil Armstrong							groups = "pwm_c_c";
232bb23b125SNeil Armstrong							function = "pwm_c";
233bb23b125SNeil Armstrong							bias-disable;
234bb23b125SNeil Armstrong						};
235bb23b125SNeil Armstrong					};
236bb23b125SNeil Armstrong
237bb23b125SNeil Armstrong					pwm_c_x5_pins: pwm-c-x5 {
238bb23b125SNeil Armstrong						mux {
239bb23b125SNeil Armstrong							groups = "pwm_c_x5";
240bb23b125SNeil Armstrong							function = "pwm_c";
241bb23b125SNeil Armstrong							bias-disable;
242bb23b125SNeil Armstrong						};
243bb23b125SNeil Armstrong					};
244bb23b125SNeil Armstrong
245bb23b125SNeil Armstrong					pwm_c_x8_pins: pwm-c-x8 {
246bb23b125SNeil Armstrong						mux {
247bb23b125SNeil Armstrong							groups = "pwm_c_x8";
248bb23b125SNeil Armstrong							function = "pwm_c";
249bb23b125SNeil Armstrong							bias-disable;
250bb23b125SNeil Armstrong						};
251bb23b125SNeil Armstrong					};
252bb23b125SNeil Armstrong
253bb23b125SNeil Armstrong					pwm_d_x3_pins: pwm-d-x3 {
254bb23b125SNeil Armstrong						mux {
255bb23b125SNeil Armstrong							groups = "pwm_d_x3";
256bb23b125SNeil Armstrong							function = "pwm_d";
257bb23b125SNeil Armstrong							bias-disable;
258bb23b125SNeil Armstrong						};
259bb23b125SNeil Armstrong					};
260bb23b125SNeil Armstrong
261bb23b125SNeil Armstrong					pwm_d_x6_pins: pwm-d-x6 {
262bb23b125SNeil Armstrong						mux {
263bb23b125SNeil Armstrong							groups = "pwm_d_x6";
264bb23b125SNeil Armstrong							function = "pwm_d";
265bb23b125SNeil Armstrong							bias-disable;
266bb23b125SNeil Armstrong						};
267bb23b125SNeil Armstrong					};
268bb23b125SNeil Armstrong
269bb23b125SNeil Armstrong					pwm_e_pins: pwm-e {
270bb23b125SNeil Armstrong						mux {
271bb23b125SNeil Armstrong							groups = "pwm_e";
272bb23b125SNeil Armstrong							function = "pwm_e";
273bb23b125SNeil Armstrong							bias-disable;
274bb23b125SNeil Armstrong						};
275bb23b125SNeil Armstrong					};
276bb23b125SNeil Armstrong
277bb23b125SNeil Armstrong					pwm_f_x_pins: pwm-f-x {
278bb23b125SNeil Armstrong						mux {
279bb23b125SNeil Armstrong							groups = "pwm_f_x";
280bb23b125SNeil Armstrong							function = "pwm_f";
281bb23b125SNeil Armstrong							bias-disable;
282bb23b125SNeil Armstrong						};
283bb23b125SNeil Armstrong					};
284bb23b125SNeil Armstrong
285bb23b125SNeil Armstrong					pwm_f_h_pins: pwm-f-h {
286bb23b125SNeil Armstrong						mux {
287bb23b125SNeil Armstrong							groups = "pwm_f_h";
288bb23b125SNeil Armstrong							function = "pwm_f";
289bb23b125SNeil Armstrong							bias-disable;
290bb23b125SNeil Armstrong						};
291bb23b125SNeil Armstrong					};
292bb23b125SNeil Armstrong
293ff4f8b6cSNeil Armstrong					uart_a_pins: uart-a {
294ff4f8b6cSNeil Armstrong						mux {
295ff4f8b6cSNeil Armstrong							groups = "uart_a_tx",
296ff4f8b6cSNeil Armstrong								 "uart_a_rx";
297ff4f8b6cSNeil Armstrong							function = "uart_a";
298ff4f8b6cSNeil Armstrong							bias-disable;
299ff4f8b6cSNeil Armstrong						};
300ff4f8b6cSNeil Armstrong					};
301ff4f8b6cSNeil Armstrong
302ff4f8b6cSNeil Armstrong					uart_a_cts_rts_pins: uart-a-cts-rts {
303ff4f8b6cSNeil Armstrong						mux {
304ff4f8b6cSNeil Armstrong							groups = "uart_a_cts",
305ff4f8b6cSNeil Armstrong								 "uart_a_rts";
306ff4f8b6cSNeil Armstrong							function = "uart_a";
307ff4f8b6cSNeil Armstrong							bias-disable;
308ff4f8b6cSNeil Armstrong						};
309ff4f8b6cSNeil Armstrong					};
310ff4f8b6cSNeil Armstrong
311ff4f8b6cSNeil Armstrong					uart_b_pins: uart-b {
312ff4f8b6cSNeil Armstrong						mux {
313ff4f8b6cSNeil Armstrong							groups = "uart_b_tx",
314ff4f8b6cSNeil Armstrong								 "uart_b_rx";
315ff4f8b6cSNeil Armstrong							function = "uart_b";
316ff4f8b6cSNeil Armstrong							bias-disable;
317ff4f8b6cSNeil Armstrong						};
318ff4f8b6cSNeil Armstrong					};
319ff4f8b6cSNeil Armstrong
320ff4f8b6cSNeil Armstrong					uart_c_pins: uart-c {
321ff4f8b6cSNeil Armstrong						mux {
322ff4f8b6cSNeil Armstrong							groups = "uart_c_tx",
323ff4f8b6cSNeil Armstrong								 "uart_c_rx";
324ff4f8b6cSNeil Armstrong							function = "uart_c";
325ff4f8b6cSNeil Armstrong							bias-disable;
326ff4f8b6cSNeil Armstrong						};
327ff4f8b6cSNeil Armstrong					};
328ff4f8b6cSNeil Armstrong
329ff4f8b6cSNeil Armstrong					uart_c_cts_rts_pins: uart-c-cts-rts {
330ff4f8b6cSNeil Armstrong						mux {
331ff4f8b6cSNeil Armstrong							groups = "uart_c_cts",
332ff4f8b6cSNeil Armstrong								 "uart_c_rts";
333ff4f8b6cSNeil Armstrong							function = "uart_c";
334ff4f8b6cSNeil Armstrong							bias-disable;
335ff4f8b6cSNeil Armstrong						};
336ff4f8b6cSNeil Armstrong					};
33711a7bea1SJerome Brunet				};
3389c8c52f7SJianxin Pan			};
3399c8c52f7SJianxin Pan
3409baf7d6bSNeil Armstrong			usb2_phy0: phy@36000 {
3419baf7d6bSNeil Armstrong				compatible = "amlogic,g12a-usb2-phy";
3429baf7d6bSNeil Armstrong				reg = <0x0 0x36000 0x0 0x2000>;
3439baf7d6bSNeil Armstrong				clocks = <&xtal>;
3449baf7d6bSNeil Armstrong				clock-names = "xtal";
3459baf7d6bSNeil Armstrong				resets = <&reset RESET_USB_PHY20>;
3469baf7d6bSNeil Armstrong				reset-names = "phy";
3479baf7d6bSNeil Armstrong				#phy-cells = <0>;
3489baf7d6bSNeil Armstrong			};
3499baf7d6bSNeil Armstrong
350083feecdSNeil Armstrong			dmc: bus@38000 {
351083feecdSNeil Armstrong				compatible = "simple-bus";
352083feecdSNeil Armstrong				reg = <0x0 0x38000 0x0 0x400>;
353083feecdSNeil Armstrong				#address-cells = <2>;
354083feecdSNeil Armstrong				#size-cells = <2>;
355083feecdSNeil Armstrong				ranges = <0x0 0x0 0x0 0x38000 0x0 0x400>;
356083feecdSNeil Armstrong
357083feecdSNeil Armstrong				canvas: video-lut@48 {
358083feecdSNeil Armstrong					compatible = "amlogic,canvas";
359083feecdSNeil Armstrong					reg = <0x0 0x48 0x0 0x14>;
360083feecdSNeil Armstrong				};
361083feecdSNeil Armstrong			};
362083feecdSNeil Armstrong
3639baf7d6bSNeil Armstrong			usb2_phy1: phy@3a000 {
3649baf7d6bSNeil Armstrong				compatible = "amlogic,g12a-usb2-phy";
3659baf7d6bSNeil Armstrong				reg = <0x0 0x3a000 0x0 0x2000>;
3669baf7d6bSNeil Armstrong				clocks = <&xtal>;
3679baf7d6bSNeil Armstrong				clock-names = "xtal";
3689baf7d6bSNeil Armstrong				resets = <&reset RESET_USB_PHY21>;
3699baf7d6bSNeil Armstrong				reset-names = "phy";
3709baf7d6bSNeil Armstrong				#phy-cells = <0>;
3719baf7d6bSNeil Armstrong			};
3729baf7d6bSNeil Armstrong
373503f5fedSJerome Brunet			hiu: bus@3c000 {
3749c8c52f7SJianxin Pan				compatible = "simple-bus";
375503f5fedSJerome Brunet				reg = <0x0 0x3c000 0x0 0x1400>;
3769c8c52f7SJianxin Pan				#address-cells = <2>;
3779c8c52f7SJianxin Pan				#size-cells = <2>;
378503f5fedSJerome Brunet				ranges = <0x0 0x0 0x0 0x3c000 0x0 0x1400>;
379785fb434SJerome Brunet
380785fb434SJerome Brunet				hhi: system-controller@0 {
381785fb434SJerome Brunet					compatible = "amlogic,meson-gx-hhi-sysctrl",
382785fb434SJerome Brunet						     "simple-mfd", "syscon";
383785fb434SJerome Brunet					reg = <0 0 0 0x400>;
384785fb434SJerome Brunet
385785fb434SJerome Brunet					clkc: clock-controller {
386785fb434SJerome Brunet						compatible = "amlogic,g12a-clkc";
387785fb434SJerome Brunet						#clock-cells = <1>;
388785fb434SJerome Brunet						clocks = <&xtal>;
389785fb434SJerome Brunet						clock-names = "xtal";
390785fb434SJerome Brunet					};
391785fb434SJerome Brunet				};
392503f5fedSJerome Brunet			};
3939baf7d6bSNeil Armstrong
3949baf7d6bSNeil Armstrong			usb3_pcie_phy: phy@46000 {
3959baf7d6bSNeil Armstrong				compatible = "amlogic,g12a-usb3-pcie-phy";
3969baf7d6bSNeil Armstrong				reg = <0x0 0x46000 0x0 0x2000>;
3979baf7d6bSNeil Armstrong				clocks = <&clkc CLKID_PCIE_PLL>;
3989baf7d6bSNeil Armstrong				clock-names = "ref_clk";
3999baf7d6bSNeil Armstrong				resets = <&reset RESET_PCIE_PHY>;
4009baf7d6bSNeil Armstrong				reset-names = "phy";
4019baf7d6bSNeil Armstrong				assigned-clocks = <&clkc CLKID_PCIE_PLL>;
4029baf7d6bSNeil Armstrong				assigned-clock-rates = <100000000>;
4039baf7d6bSNeil Armstrong				#phy-cells = <1>;
4049baf7d6bSNeil Armstrong			};
4059c8c52f7SJianxin Pan		};
4069c8c52f7SJianxin Pan
4079c8c52f7SJianxin Pan		aobus: bus@ff800000 {
4089c8c52f7SJianxin Pan			compatible = "simple-bus";
4099c8c52f7SJianxin Pan			reg = <0x0 0xff800000 0x0 0x100000>;
4109c8c52f7SJianxin Pan			#address-cells = <2>;
4119c8c52f7SJianxin Pan			#size-cells = <2>;
4129c8c52f7SJianxin Pan			ranges = <0x0 0x0 0x0 0xff800000 0x0 0x100000>;
4139c8c52f7SJianxin Pan
414b019f4a4SNeil Armstrong			rti: sys-ctrl@0 {
415b019f4a4SNeil Armstrong				compatible = "amlogic,meson-gx-ao-sysctrl",
416b019f4a4SNeil Armstrong					     "simple-mfd", "syscon";
417b019f4a4SNeil Armstrong				reg = <0x0 0x0 0x0 0x100>;
418b019f4a4SNeil Armstrong				#address-cells = <2>;
419b019f4a4SNeil Armstrong				#size-cells = <2>;
420b019f4a4SNeil Armstrong				ranges = <0x0 0x0 0x0 0x0 0x0 0x100>;
421b019f4a4SNeil Armstrong
422b019f4a4SNeil Armstrong				clkc_AO: clock-controller {
423b019f4a4SNeil Armstrong					compatible = "amlogic,meson-g12a-aoclkc";
424b019f4a4SNeil Armstrong					#clock-cells = <1>;
425b019f4a4SNeil Armstrong					#reset-cells = <1>;
426b019f4a4SNeil Armstrong					clocks = <&xtal>, <&clkc CLKID_CLK81>;
427b019f4a4SNeil Armstrong					clock-names = "xtal", "mpeg-clk";
428b019f4a4SNeil Armstrong				};
42911a7bea1SJerome Brunet
430083feecdSNeil Armstrong				pwrc_vpu: power-controller-vpu {
431083feecdSNeil Armstrong					compatible = "amlogic,meson-g12a-pwrc-vpu";
432083feecdSNeil Armstrong					#power-domain-cells = <0>;
433083feecdSNeil Armstrong					amlogic,hhi-sysctrl = <&hhi>;
434083feecdSNeil Armstrong					resets = <&reset RESET_VIU>,
435083feecdSNeil Armstrong						 <&reset RESET_VENC>,
436083feecdSNeil Armstrong						 <&reset RESET_VCBUS>,
437083feecdSNeil Armstrong						 <&reset RESET_BT656>,
438083feecdSNeil Armstrong						 <&reset RESET_RDMA>,
439083feecdSNeil Armstrong						 <&reset RESET_VENCI>,
440083feecdSNeil Armstrong						 <&reset RESET_VENCP>,
441083feecdSNeil Armstrong						 <&reset RESET_VDAC>,
442083feecdSNeil Armstrong						 <&reset RESET_VDI6>,
443083feecdSNeil Armstrong						 <&reset RESET_VENCL>,
444083feecdSNeil Armstrong						 <&reset RESET_VID_LOCK>;
445083feecdSNeil Armstrong					clocks = <&clkc CLKID_VPU>,
446083feecdSNeil Armstrong						 <&clkc CLKID_VAPB>;
447083feecdSNeil Armstrong					clock-names = "vpu", "vapb";
448083feecdSNeil Armstrong					/*
449083feecdSNeil Armstrong					 * VPU clocking is provided by two identical clock paths
450083feecdSNeil Armstrong					 * VPU_0 and VPU_1 muxed to a single clock by a glitch
451083feecdSNeil Armstrong					 * free mux to safely change frequency while running.
452083feecdSNeil Armstrong					 * Same for VAPB but with a final gate after the glitch free mux.
453083feecdSNeil Armstrong					 */
454083feecdSNeil Armstrong					assigned-clocks = <&clkc CLKID_VPU_0_SEL>,
455083feecdSNeil Armstrong							  <&clkc CLKID_VPU_0>,
456083feecdSNeil Armstrong							  <&clkc CLKID_VPU>, /* Glitch free mux */
457083feecdSNeil Armstrong							  <&clkc CLKID_VAPB_0_SEL>,
458083feecdSNeil Armstrong							  <&clkc CLKID_VAPB_0>,
459083feecdSNeil Armstrong							  <&clkc CLKID_VAPB_SEL>; /* Glitch free mux */
460083feecdSNeil Armstrong					assigned-clock-parents = <&clkc CLKID_FCLK_DIV3>,
461083feecdSNeil Armstrong								 <0>, /* Do Nothing */
462083feecdSNeil Armstrong								 <&clkc CLKID_VPU_0>,
463083feecdSNeil Armstrong								 <&clkc CLKID_FCLK_DIV4>,
464083feecdSNeil Armstrong								 <0>, /* Do Nothing */
465083feecdSNeil Armstrong								 <&clkc CLKID_VAPB_0>;
466083feecdSNeil Armstrong					assigned-clock-rates = <0>, /* Do Nothing */
467083feecdSNeil Armstrong							       <666666666>,
468083feecdSNeil Armstrong							       <0>, /* Do Nothing */
469083feecdSNeil Armstrong							       <0>, /* Do Nothing */
470083feecdSNeil Armstrong							       <250000000>,
471083feecdSNeil Armstrong							       <0>; /* Do Nothing */
472083feecdSNeil Armstrong				};
473083feecdSNeil Armstrong
47411a7bea1SJerome Brunet				ao_pinctrl: pinctrl@14 {
47511a7bea1SJerome Brunet					compatible = "amlogic,meson-g12a-aobus-pinctrl";
47611a7bea1SJerome Brunet					#address-cells = <2>;
47711a7bea1SJerome Brunet					#size-cells = <2>;
47811a7bea1SJerome Brunet					ranges;
47911a7bea1SJerome Brunet
48011a7bea1SJerome Brunet					gpio_ao: bank@14 {
48111a7bea1SJerome Brunet						reg = <0x0 0x14 0x0 0x8>,
48211a7bea1SJerome Brunet						      <0x0 0x1c 0x0 0x8>,
48311a7bea1SJerome Brunet						      <0x0 0x24 0x0 0x14>;
48411a7bea1SJerome Brunet						reg-names = "mux",
48511a7bea1SJerome Brunet							    "ds",
48611a7bea1SJerome Brunet							    "gpio";
48711a7bea1SJerome Brunet						gpio-controller;
48811a7bea1SJerome Brunet						#gpio-cells = <2>;
48911a7bea1SJerome Brunet						gpio-ranges = <&ao_pinctrl 0 0 15>;
49011a7bea1SJerome Brunet					};
491e92546c2SJerome Brunet
492e92546c2SJerome Brunet					uart_ao_a_pins: uart-a-ao {
493e92546c2SJerome Brunet						mux {
494e92546c2SJerome Brunet							groups = "uart_ao_a_tx",
495e92546c2SJerome Brunet								 "uart_ao_a_rx";
496e92546c2SJerome Brunet							function = "uart_ao_a";
497e92546c2SJerome Brunet							bias-disable;
498e92546c2SJerome Brunet						};
499e92546c2SJerome Brunet					};
500e92546c2SJerome Brunet
501e92546c2SJerome Brunet					uart_ao_a_cts_rts_pins: uart-ao-a-cts-rts {
502e92546c2SJerome Brunet						mux {
503e92546c2SJerome Brunet							groups = "uart_ao_a_cts",
504e92546c2SJerome Brunet								 "uart_ao_a_rts";
505e92546c2SJerome Brunet							function = "uart_ao_a";
506e92546c2SJerome Brunet							bias-disable;
507e92546c2SJerome Brunet						};
508e92546c2SJerome Brunet					};
509bb23b125SNeil Armstrong
510bb23b125SNeil Armstrong					pwm_ao_a_pins: pwm-ao-a {
511bb23b125SNeil Armstrong						mux {
512bb23b125SNeil Armstrong							groups = "pwm_ao_a";
513bb23b125SNeil Armstrong							function = "pwm_ao_a";
514bb23b125SNeil Armstrong							bias-disable;
515bb23b125SNeil Armstrong						};
516bb23b125SNeil Armstrong					};
517bb23b125SNeil Armstrong
518bb23b125SNeil Armstrong					pwm_ao_b_pins: pwm-ao-b {
519bb23b125SNeil Armstrong						mux {
520bb23b125SNeil Armstrong							groups = "pwm_ao_b";
521bb23b125SNeil Armstrong							function = "pwm_ao_b";
522bb23b125SNeil Armstrong							bias-disable;
523bb23b125SNeil Armstrong						};
524bb23b125SNeil Armstrong					};
525bb23b125SNeil Armstrong
526bb23b125SNeil Armstrong					pwm_ao_c_4_pins: pwm-ao-c-4 {
527bb23b125SNeil Armstrong						mux {
528bb23b125SNeil Armstrong							groups = "pwm_ao_c_4";
529bb23b125SNeil Armstrong							function = "pwm_ao_c";
530bb23b125SNeil Armstrong							bias-disable;
531bb23b125SNeil Armstrong						};
532bb23b125SNeil Armstrong					};
533bb23b125SNeil Armstrong
534bb23b125SNeil Armstrong					pwm_ao_c_6_pins: pwm-ao-c-6 {
535bb23b125SNeil Armstrong						mux {
536bb23b125SNeil Armstrong							groups = "pwm_ao_c_6";
537bb23b125SNeil Armstrong							function = "pwm_ao_c";
538bb23b125SNeil Armstrong							bias-disable;
539bb23b125SNeil Armstrong						};
540bb23b125SNeil Armstrong					};
541bb23b125SNeil Armstrong
542bb23b125SNeil Armstrong					pwm_ao_d_5_pins: pwm-ao-d-5 {
543bb23b125SNeil Armstrong						mux {
544bb23b125SNeil Armstrong							groups = "pwm_ao_d_5";
545bb23b125SNeil Armstrong							function = "pwm_ao_d";
546bb23b125SNeil Armstrong							bias-disable;
547bb23b125SNeil Armstrong						};
548bb23b125SNeil Armstrong					};
549bb23b125SNeil Armstrong
550bb23b125SNeil Armstrong					pwm_ao_d_10_pins: pwm-ao-d-10 {
551bb23b125SNeil Armstrong						mux {
552bb23b125SNeil Armstrong							groups = "pwm_ao_d_10";
553bb23b125SNeil Armstrong							function = "pwm_ao_d";
554bb23b125SNeil Armstrong							bias-disable;
555bb23b125SNeil Armstrong						};
556bb23b125SNeil Armstrong					};
557bb23b125SNeil Armstrong
558bb23b125SNeil Armstrong					pwm_ao_d_e_pins: pwm-ao-d-e {
559bb23b125SNeil Armstrong						mux {
560bb23b125SNeil Armstrong							groups = "pwm_ao_d_e";
561bb23b125SNeil Armstrong							function = "pwm_ao_d";
562bb23b125SNeil Armstrong							bias-disable;
563bb23b125SNeil Armstrong						};
564bb23b125SNeil Armstrong					};
56511a7bea1SJerome Brunet				};
566b019f4a4SNeil Armstrong			};
567b019f4a4SNeil Armstrong
56891516e54SNeil Armstrong			cec_AO: cec@100 {
56991516e54SNeil Armstrong				compatible = "amlogic,meson-gx-ao-cec";
57091516e54SNeil Armstrong				reg = <0x0 0x00100 0x0 0x14>;
57191516e54SNeil Armstrong				interrupts = <GIC_SPI 199 IRQ_TYPE_EDGE_RISING>;
57291516e54SNeil Armstrong				clocks = <&clkc_AO CLKID_AO_CEC>;
57391516e54SNeil Armstrong				clock-names = "core";
57491516e54SNeil Armstrong				status = "disabled";
57591516e54SNeil Armstrong			};
57691516e54SNeil Armstrong
5770fa724c5SNeil Armstrong			sec_AO: ao-secure@140 {
5780fa724c5SNeil Armstrong				compatible = "amlogic,meson-gx-ao-secure", "syscon";
5790fa724c5SNeil Armstrong				reg = <0x0 0x140 0x0 0x140>;
5800fa724c5SNeil Armstrong				amlogic,has-chip-id;
5810fa724c5SNeil Armstrong			};
5820fa724c5SNeil Armstrong
58391516e54SNeil Armstrong			cecb_AO: cec@280 {
58491516e54SNeil Armstrong				compatible = "amlogic,meson-g12a-ao-cec";
58591516e54SNeil Armstrong				reg = <0x0 0x00280 0x0 0x1c>;
58691516e54SNeil Armstrong				interrupts = <GIC_SPI 203 IRQ_TYPE_EDGE_RISING>;
58791516e54SNeil Armstrong				clocks = <&clkc_AO CLKID_AO_CTS_OSCIN>;
58891516e54SNeil Armstrong				clock-names = "oscin";
58991516e54SNeil Armstrong				status = "disabled";
59091516e54SNeil Armstrong			};
59191516e54SNeil Armstrong
592bb23b125SNeil Armstrong			pwm_AO_cd: pwm@2000 {
593bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ao-pwm-cd";
594bb23b125SNeil Armstrong				reg = <0x0 0x2000 0x0 0x20>;
595bb23b125SNeil Armstrong				#pwm-cells = <3>;
596bb23b125SNeil Armstrong				status = "disabled";
597bb23b125SNeil Armstrong			};
598bb23b125SNeil Armstrong
5999c8c52f7SJianxin Pan			uart_AO: serial@3000 {
600503f5fedSJerome Brunet				compatible = "amlogic,meson-gx-uart",
601503f5fedSJerome Brunet					     "amlogic,meson-ao-uart";
6029c8c52f7SJianxin Pan				reg = <0x0 0x3000 0x0 0x18>;
6039c8c52f7SJianxin Pan				interrupts = <GIC_SPI 193 IRQ_TYPE_EDGE_RISING>;
6049c8c52f7SJianxin Pan				clocks = <&xtal>, <&xtal>, <&xtal>;
6059c8c52f7SJianxin Pan				clock-names = "xtal", "pclk", "baud";
6069c8c52f7SJianxin Pan				status = "disabled";
6079c8c52f7SJianxin Pan			};
6089c8c52f7SJianxin Pan
6099c8c52f7SJianxin Pan			uart_AO_B: serial@4000 {
610503f5fedSJerome Brunet				compatible = "amlogic,meson-gx-uart",
611503f5fedSJerome Brunet					     "amlogic,meson-ao-uart";
6129c8c52f7SJianxin Pan				reg = <0x0 0x4000 0x0 0x18>;
6139c8c52f7SJianxin Pan				interrupts = <GIC_SPI 197 IRQ_TYPE_EDGE_RISING>;
6149c8c52f7SJianxin Pan				clocks = <&xtal>, <&xtal>, <&xtal>;
6159c8c52f7SJianxin Pan				clock-names = "xtal", "pclk", "baud";
6169c8c52f7SJianxin Pan				status = "disabled";
6179c8c52f7SJianxin Pan			};
618820873cfSNeil Armstrong
619bb23b125SNeil Armstrong			pwm_AO_ab: pwm@7000 {
620bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ao-pwm-ab";
621bb23b125SNeil Armstrong				reg = <0x0 0x7000 0x0 0x20>;
622bb23b125SNeil Armstrong				#pwm-cells = <3>;
623bb23b125SNeil Armstrong				status = "disabled";
624bb23b125SNeil Armstrong			};
625bb23b125SNeil Armstrong
626820873cfSNeil Armstrong			saradc: adc@9000 {
627820873cfSNeil Armstrong				compatible = "amlogic,meson-g12a-saradc",
628820873cfSNeil Armstrong					     "amlogic,meson-saradc";
629820873cfSNeil Armstrong				reg = <0x0 0x9000 0x0 0x48>;
630820873cfSNeil Armstrong				#io-channel-cells = <1>;
631820873cfSNeil Armstrong				interrupts = <GIC_SPI 200 IRQ_TYPE_EDGE_RISING>;
632820873cfSNeil Armstrong				clocks = <&xtal>,
633820873cfSNeil Armstrong					 <&clkc_AO CLKID_AO_SAR_ADC>,
634820873cfSNeil Armstrong					 <&clkc_AO CLKID_AO_SAR_ADC_CLK>,
635820873cfSNeil Armstrong					 <&clkc_AO CLKID_AO_SAR_ADC_SEL>;
636820873cfSNeil Armstrong				clock-names = "clkin", "core", "adc_clk", "adc_sel";
637820873cfSNeil Armstrong				status = "disabled";
638820873cfSNeil Armstrong			};
6399c8c52f7SJianxin Pan		};
6409c8c52f7SJianxin Pan
641083feecdSNeil Armstrong		vpu: vpu@ff900000 {
642083feecdSNeil Armstrong			compatible = "amlogic,meson-g12a-vpu";
643083feecdSNeil Armstrong			reg = <0x0 0xff900000 0x0 0x100000>,
644083feecdSNeil Armstrong			      <0x0 0xff63c000 0x0 0x1000>;
645083feecdSNeil Armstrong			reg-names = "vpu", "hhi";
646083feecdSNeil Armstrong			interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING>;
647083feecdSNeil Armstrong			#address-cells = <1>;
648083feecdSNeil Armstrong			#size-cells = <0>;
649083feecdSNeil Armstrong			amlogic,canvas = <&canvas>;
650083feecdSNeil Armstrong			power-domains = <&pwrc_vpu>;
651083feecdSNeil Armstrong
652083feecdSNeil Armstrong			/* CVBS VDAC output port */
653083feecdSNeil Armstrong			cvbs_vdac_port: port@0 {
654083feecdSNeil Armstrong				reg = <0>;
655083feecdSNeil Armstrong			};
656083feecdSNeil Armstrong
657083feecdSNeil Armstrong			/* HDMI-TX output port */
658083feecdSNeil Armstrong			hdmi_tx_port: port@1 {
659083feecdSNeil Armstrong				reg = <1>;
660083feecdSNeil Armstrong
661083feecdSNeil Armstrong				hdmi_tx_out: endpoint {
662083feecdSNeil Armstrong					remote-endpoint = <&hdmi_tx_in>;
663083feecdSNeil Armstrong				};
664083feecdSNeil Armstrong			};
665083feecdSNeil Armstrong		};
666083feecdSNeil Armstrong
6679c8c52f7SJianxin Pan		gic: interrupt-controller@ffc01000 {
6689c8c52f7SJianxin Pan			compatible = "arm,gic-400";
6699c8c52f7SJianxin Pan			reg = <0x0 0xffc01000 0 0x1000>,
6709c8c52f7SJianxin Pan			      <0x0 0xffc02000 0 0x2000>,
6719c8c52f7SJianxin Pan			      <0x0 0xffc04000 0 0x2000>,
6729c8c52f7SJianxin Pan			      <0x0 0xffc06000 0 0x2000>;
6739c8c52f7SJianxin Pan			interrupt-controller;
6749c8c52f7SJianxin Pan			interrupts = <GIC_PPI 9
6759c8c52f7SJianxin Pan				(GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
6769c8c52f7SJianxin Pan			#interrupt-cells = <3>;
6779c8c52f7SJianxin Pan			#address-cells = <0>;
6789c8c52f7SJianxin Pan		};
6799c8c52f7SJianxin Pan
6809c8c52f7SJianxin Pan		cbus: bus@ffd00000 {
6819c8c52f7SJianxin Pan			compatible = "simple-bus";
682503f5fedSJerome Brunet			reg = <0x0 0xffd00000 0x0 0x100000>;
6839c8c52f7SJianxin Pan			#address-cells = <2>;
6849c8c52f7SJianxin Pan			#size-cells = <2>;
685503f5fedSJerome Brunet			ranges = <0x0 0x0 0x0 0xffd00000 0x0 0x100000>;
6869c8c52f7SJianxin Pan
6877ab41c47SJerome Brunet			reset: reset-controller@1004 {
6887ab41c47SJerome Brunet				compatible = "amlogic,meson-g12a-reset",
6897ab41c47SJerome Brunet					     "amlogic,meson-axg-reset";
6907ab41c47SJerome Brunet				reg = <0x0 0x1004 0x0 0x9c>;
6917ab41c47SJerome Brunet				#reset-cells = <1>;
6927ab41c47SJerome Brunet			};
6937ab41c47SJerome Brunet
694bb23b125SNeil Armstrong			pwm_ef: pwm@19000 {
695bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ee-pwm";
696bb23b125SNeil Armstrong				reg = <0x0 0x19000 0x0 0x20>;
697bb23b125SNeil Armstrong				#pwm-cells = <3>;
698bb23b125SNeil Armstrong				status = "disabled";
699bb23b125SNeil Armstrong			};
700bb23b125SNeil Armstrong
701bb23b125SNeil Armstrong			pwm_cd: pwm@1a000 {
702bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ee-pwm";
703bb23b125SNeil Armstrong				reg = <0x0 0x1a000 0x0 0x20>;
704bb23b125SNeil Armstrong				#pwm-cells = <3>;
705bb23b125SNeil Armstrong				status = "disabled";
706bb23b125SNeil Armstrong			};
707bb23b125SNeil Armstrong
708bb23b125SNeil Armstrong			pwm_ab: pwm@1b000 {
709bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ee-pwm";
710bb23b125SNeil Armstrong				reg = <0x0 0x1b000 0x0 0x20>;
711bb23b125SNeil Armstrong				#pwm-cells = <3>;
712bb23b125SNeil Armstrong				status = "disabled";
713bb23b125SNeil Armstrong			};
714bb23b125SNeil Armstrong
71560d4fdb8SJerome Brunet			clk_msr: clock-measure@18000 {
71660d4fdb8SJerome Brunet				compatible = "amlogic,meson-g12a-clk-measure";
71760d4fdb8SJerome Brunet				reg = <0x0 0x18000 0x0 0x10>;
71860d4fdb8SJerome Brunet			};
719ff4f8b6cSNeil Armstrong
720ff4f8b6cSNeil Armstrong			uart_C: serial@22000 {
721ff4f8b6cSNeil Armstrong				compatible = "amlogic,meson-gx-uart";
722ff4f8b6cSNeil Armstrong				reg = <0x0 0x22000 0x0 0x18>;
723ff4f8b6cSNeil Armstrong				interrupts = <GIC_SPI 93 IRQ_TYPE_EDGE_RISING>;
724ff4f8b6cSNeil Armstrong				clocks = <&xtal>, <&clkc CLKID_UART2>, <&xtal>;
725ff4f8b6cSNeil Armstrong				clock-names = "xtal", "pclk", "baud";
726ff4f8b6cSNeil Armstrong				status = "disabled";
727ff4f8b6cSNeil Armstrong			};
728ff4f8b6cSNeil Armstrong
729ff4f8b6cSNeil Armstrong			uart_B: serial@23000 {
730ff4f8b6cSNeil Armstrong				compatible = "amlogic,meson-gx-uart";
731ff4f8b6cSNeil Armstrong				reg = <0x0 0x23000 0x0 0x18>;
732ff4f8b6cSNeil Armstrong				interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>;
733ff4f8b6cSNeil Armstrong				clocks = <&xtal>, <&clkc CLKID_UART1>, <&xtal>;
734ff4f8b6cSNeil Armstrong				clock-names = "xtal", "pclk", "baud";
735ff4f8b6cSNeil Armstrong				status = "disabled";
736ff4f8b6cSNeil Armstrong			};
737ff4f8b6cSNeil Armstrong
738ff4f8b6cSNeil Armstrong			uart_A: serial@24000 {
739ff4f8b6cSNeil Armstrong				compatible = "amlogic,meson-gx-uart";
740ff4f8b6cSNeil Armstrong				reg = <0x0 0x24000 0x0 0x18>;
741ff4f8b6cSNeil Armstrong				interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
742ff4f8b6cSNeil Armstrong				clocks = <&xtal>, <&clkc CLKID_UART0>, <&xtal>;
743ff4f8b6cSNeil Armstrong				clock-names = "xtal", "pclk", "baud";
744ff4f8b6cSNeil Armstrong				status = "disabled";
745ff4f8b6cSNeil Armstrong			};
7469c8c52f7SJianxin Pan		};
7479baf7d6bSNeil Armstrong
7489baf7d6bSNeil Armstrong		usb: usb@ffe09000 {
7499baf7d6bSNeil Armstrong			status = "disabled";
7509baf7d6bSNeil Armstrong			compatible = "amlogic,meson-g12a-usb-ctrl";
7519baf7d6bSNeil Armstrong			reg = <0x0 0xffe09000 0x0 0xa0>;
7529baf7d6bSNeil Armstrong			interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
7539baf7d6bSNeil Armstrong			#address-cells = <2>;
7549baf7d6bSNeil Armstrong			#size-cells = <2>;
7559baf7d6bSNeil Armstrong			ranges;
7569baf7d6bSNeil Armstrong
7579baf7d6bSNeil Armstrong			clocks = <&clkc CLKID_USB>;
7589baf7d6bSNeil Armstrong			resets = <&reset RESET_USB>;
7599baf7d6bSNeil Armstrong
7609baf7d6bSNeil Armstrong			dr_mode = "otg";
7619baf7d6bSNeil Armstrong
7629baf7d6bSNeil Armstrong			phys = <&usb2_phy0>, <&usb2_phy1>,
7639baf7d6bSNeil Armstrong			       <&usb3_pcie_phy PHY_TYPE_USB3>;
7649baf7d6bSNeil Armstrong			phy-names = "usb2-phy0", "usb2-phy1", "usb3-phy0";
7659baf7d6bSNeil Armstrong
7669baf7d6bSNeil Armstrong			dwc2: usb@ff400000 {
7679baf7d6bSNeil Armstrong				compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
7689baf7d6bSNeil Armstrong				reg = <0x0 0xff400000 0x0 0x40000>;
7699baf7d6bSNeil Armstrong				interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
7709baf7d6bSNeil Armstrong				clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
7719baf7d6bSNeil Armstrong				clock-names = "ddr";
7729baf7d6bSNeil Armstrong				phys = <&usb2_phy1>;
7739baf7d6bSNeil Armstrong				dr_mode = "peripheral";
7749baf7d6bSNeil Armstrong				g-rx-fifo-size = <192>;
7759baf7d6bSNeil Armstrong				g-np-tx-fifo-size = <128>;
7769baf7d6bSNeil Armstrong				g-tx-fifo-size = <128 128 16 16 16>;
7779baf7d6bSNeil Armstrong			};
7789baf7d6bSNeil Armstrong
7799baf7d6bSNeil Armstrong			dwc3: usb@ff500000 {
7809baf7d6bSNeil Armstrong				compatible = "snps,dwc3";
7819baf7d6bSNeil Armstrong				reg = <0x0 0xff500000 0x0 0x100000>;
7829baf7d6bSNeil Armstrong				interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
7839baf7d6bSNeil Armstrong				dr_mode = "host";
7849baf7d6bSNeil Armstrong				snps,dis_u2_susphy_quirk;
7859baf7d6bSNeil Armstrong				snps,quirk-frame-length-adjustment;
7869baf7d6bSNeil Armstrong			};
7879baf7d6bSNeil Armstrong		};
7882607fd08SNeil Armstrong
7892607fd08SNeil Armstrong		mali: gpu@ffe40000 {
7902607fd08SNeil Armstrong			compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
7912607fd08SNeil Armstrong			reg = <0x0 0xffe40000 0x0 0x40000>;
7922607fd08SNeil Armstrong			interrupt-parent = <&gic>;
7932607fd08SNeil Armstrong			interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
7942607fd08SNeil Armstrong				     <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
7952607fd08SNeil Armstrong				     <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
7962607fd08SNeil Armstrong			interrupt-names = "gpu", "mmu", "job";
7972607fd08SNeil Armstrong			clocks = <&clkc CLKID_MALI>;
7982607fd08SNeil Armstrong			resets = <&reset RESET_DVALIN_CAPB3>, <&reset RESET_DVALIN>;
7992607fd08SNeil Armstrong
8002607fd08SNeil Armstrong			/*
8012607fd08SNeil Armstrong			 * Mali clocking is provided by two identical clock paths
8022607fd08SNeil Armstrong			 * MALI_0 and MALI_1 muxed to a single clock by a glitch
8032607fd08SNeil Armstrong			 * free mux to safely change frequency while running.
8042607fd08SNeil Armstrong			 */
8052607fd08SNeil Armstrong			assigned-clocks = <&clkc CLKID_MALI_0_SEL>,
8062607fd08SNeil Armstrong					  <&clkc CLKID_MALI_0>,
8072607fd08SNeil Armstrong					  <&clkc CLKID_MALI>; /* Glitch free mux */
8082607fd08SNeil Armstrong			assigned-clock-parents = <&clkc CLKID_FCLK_DIV2P5>,
8092607fd08SNeil Armstrong						 <0>, /* Do Nothing */
8102607fd08SNeil Armstrong						 <&clkc CLKID_MALI_0>;
8112607fd08SNeil Armstrong			assigned-clock-rates = <0>, /* Do Nothing */
8122607fd08SNeil Armstrong					       <800000000>,
8132607fd08SNeil Armstrong					       <0>; /* Do Nothing */
8142607fd08SNeil Armstrong		};
8159c8c52f7SJianxin Pan	};
8169c8c52f7SJianxin Pan
8179c8c52f7SJianxin Pan	timer {
8189c8c52f7SJianxin Pan		compatible = "arm,armv8-timer";
8199c8c52f7SJianxin Pan		interrupts = <GIC_PPI 13
8209c8c52f7SJianxin Pan			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
8219c8c52f7SJianxin Pan			     <GIC_PPI 14
8229c8c52f7SJianxin Pan			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
8239c8c52f7SJianxin Pan			     <GIC_PPI 11
8249c8c52f7SJianxin Pan			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
8259c8c52f7SJianxin Pan			     <GIC_PPI 10
8269c8c52f7SJianxin Pan			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>;
8279c8c52f7SJianxin Pan	};
8289c8c52f7SJianxin Pan
8299c8c52f7SJianxin Pan	xtal: xtal-clk {
8309c8c52f7SJianxin Pan		compatible = "fixed-clock";
8319c8c52f7SJianxin Pan		clock-frequency = <24000000>;
8329c8c52f7SJianxin Pan		clock-output-names = "xtal";
8339c8c52f7SJianxin Pan		#clock-cells = <0>;
8349c8c52f7SJianxin Pan	};
8359c8c52f7SJianxin Pan
8369c8c52f7SJianxin Pan};
837