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";
5622bfe8412SNeil Armstrong						};
5632bfe8412SNeil Armstrong					};
5642bfe8412SNeil Armstrong
5652bfe8412SNeil Armstrong					remote_input_ao_pins: remote-input-ao {
5662bfe8412SNeil Armstrong						mux {
5672bfe8412SNeil Armstrong							groups = "remote_ao_input";
5682bfe8412SNeil Armstrong							function = "remote_ao_input";
569bb23b125SNeil Armstrong							bias-disable;
570bb23b125SNeil Armstrong						};
571bb23b125SNeil Armstrong					};
57211a7bea1SJerome Brunet				};
573b019f4a4SNeil Armstrong			};
574b019f4a4SNeil Armstrong
57591516e54SNeil Armstrong			cec_AO: cec@100 {
57691516e54SNeil Armstrong				compatible = "amlogic,meson-gx-ao-cec";
57791516e54SNeil Armstrong				reg = <0x0 0x00100 0x0 0x14>;
57891516e54SNeil Armstrong				interrupts = <GIC_SPI 199 IRQ_TYPE_EDGE_RISING>;
57991516e54SNeil Armstrong				clocks = <&clkc_AO CLKID_AO_CEC>;
58091516e54SNeil Armstrong				clock-names = "core";
58191516e54SNeil Armstrong				status = "disabled";
58291516e54SNeil Armstrong			};
58391516e54SNeil Armstrong
5840fa724c5SNeil Armstrong			sec_AO: ao-secure@140 {
5850fa724c5SNeil Armstrong				compatible = "amlogic,meson-gx-ao-secure", "syscon";
5860fa724c5SNeil Armstrong				reg = <0x0 0x140 0x0 0x140>;
5870fa724c5SNeil Armstrong				amlogic,has-chip-id;
5880fa724c5SNeil Armstrong			};
5890fa724c5SNeil Armstrong
59091516e54SNeil Armstrong			cecb_AO: cec@280 {
59191516e54SNeil Armstrong				compatible = "amlogic,meson-g12a-ao-cec";
59291516e54SNeil Armstrong				reg = <0x0 0x00280 0x0 0x1c>;
59391516e54SNeil Armstrong				interrupts = <GIC_SPI 203 IRQ_TYPE_EDGE_RISING>;
59491516e54SNeil Armstrong				clocks = <&clkc_AO CLKID_AO_CTS_OSCIN>;
59591516e54SNeil Armstrong				clock-names = "oscin";
59691516e54SNeil Armstrong				status = "disabled";
59791516e54SNeil Armstrong			};
59891516e54SNeil Armstrong
599bb23b125SNeil Armstrong			pwm_AO_cd: pwm@2000 {
600bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ao-pwm-cd";
601bb23b125SNeil Armstrong				reg = <0x0 0x2000 0x0 0x20>;
602bb23b125SNeil Armstrong				#pwm-cells = <3>;
603bb23b125SNeil Armstrong				status = "disabled";
604bb23b125SNeil Armstrong			};
605bb23b125SNeil Armstrong
6069c8c52f7SJianxin Pan			uart_AO: serial@3000 {
607503f5fedSJerome Brunet				compatible = "amlogic,meson-gx-uart",
608503f5fedSJerome Brunet					     "amlogic,meson-ao-uart";
6099c8c52f7SJianxin Pan				reg = <0x0 0x3000 0x0 0x18>;
6109c8c52f7SJianxin Pan				interrupts = <GIC_SPI 193 IRQ_TYPE_EDGE_RISING>;
6119c8c52f7SJianxin Pan				clocks = <&xtal>, <&xtal>, <&xtal>;
6129c8c52f7SJianxin Pan				clock-names = "xtal", "pclk", "baud";
6139c8c52f7SJianxin Pan				status = "disabled";
6149c8c52f7SJianxin Pan			};
6159c8c52f7SJianxin Pan
6169c8c52f7SJianxin Pan			uart_AO_B: serial@4000 {
617503f5fedSJerome Brunet				compatible = "amlogic,meson-gx-uart",
618503f5fedSJerome Brunet					     "amlogic,meson-ao-uart";
6199c8c52f7SJianxin Pan				reg = <0x0 0x4000 0x0 0x18>;
6209c8c52f7SJianxin Pan				interrupts = <GIC_SPI 197 IRQ_TYPE_EDGE_RISING>;
6219c8c52f7SJianxin Pan				clocks = <&xtal>, <&xtal>, <&xtal>;
6229c8c52f7SJianxin Pan				clock-names = "xtal", "pclk", "baud";
6239c8c52f7SJianxin Pan				status = "disabled";
6249c8c52f7SJianxin Pan			};
625820873cfSNeil Armstrong
626bb23b125SNeil Armstrong			pwm_AO_ab: pwm@7000 {
627bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ao-pwm-ab";
628bb23b125SNeil Armstrong				reg = <0x0 0x7000 0x0 0x20>;
629bb23b125SNeil Armstrong				#pwm-cells = <3>;
630bb23b125SNeil Armstrong				status = "disabled";
631bb23b125SNeil Armstrong			};
632bb23b125SNeil Armstrong
6332bfe8412SNeil Armstrong			ir: ir@8000 {
6342bfe8412SNeil Armstrong				compatible = "amlogic,meson-gxbb-ir";
6352bfe8412SNeil Armstrong				reg = <0x0 0x8000 0x0 0x20>;
6362bfe8412SNeil Armstrong				interrupts = <GIC_SPI 196 IRQ_TYPE_EDGE_RISING>;
6372bfe8412SNeil Armstrong				status = "disabled";
6382bfe8412SNeil Armstrong			};
6392bfe8412SNeil Armstrong
640820873cfSNeil Armstrong			saradc: adc@9000 {
641820873cfSNeil Armstrong				compatible = "amlogic,meson-g12a-saradc",
642820873cfSNeil Armstrong					     "amlogic,meson-saradc";
643820873cfSNeil Armstrong				reg = <0x0 0x9000 0x0 0x48>;
644820873cfSNeil Armstrong				#io-channel-cells = <1>;
645820873cfSNeil Armstrong				interrupts = <GIC_SPI 200 IRQ_TYPE_EDGE_RISING>;
646820873cfSNeil Armstrong				clocks = <&xtal>,
647820873cfSNeil Armstrong					 <&clkc_AO CLKID_AO_SAR_ADC>,
648820873cfSNeil Armstrong					 <&clkc_AO CLKID_AO_SAR_ADC_CLK>,
649820873cfSNeil Armstrong					 <&clkc_AO CLKID_AO_SAR_ADC_SEL>;
650820873cfSNeil Armstrong				clock-names = "clkin", "core", "adc_clk", "adc_sel";
651820873cfSNeil Armstrong				status = "disabled";
652820873cfSNeil Armstrong			};
6539c8c52f7SJianxin Pan		};
6549c8c52f7SJianxin Pan
655083feecdSNeil Armstrong		vpu: vpu@ff900000 {
656083feecdSNeil Armstrong			compatible = "amlogic,meson-g12a-vpu";
657083feecdSNeil Armstrong			reg = <0x0 0xff900000 0x0 0x100000>,
658083feecdSNeil Armstrong			      <0x0 0xff63c000 0x0 0x1000>;
659083feecdSNeil Armstrong			reg-names = "vpu", "hhi";
660083feecdSNeil Armstrong			interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING>;
661083feecdSNeil Armstrong			#address-cells = <1>;
662083feecdSNeil Armstrong			#size-cells = <0>;
663083feecdSNeil Armstrong			amlogic,canvas = <&canvas>;
664083feecdSNeil Armstrong			power-domains = <&pwrc_vpu>;
665083feecdSNeil Armstrong
666083feecdSNeil Armstrong			/* CVBS VDAC output port */
667083feecdSNeil Armstrong			cvbs_vdac_port: port@0 {
668083feecdSNeil Armstrong				reg = <0>;
669083feecdSNeil Armstrong			};
670083feecdSNeil Armstrong
671083feecdSNeil Armstrong			/* HDMI-TX output port */
672083feecdSNeil Armstrong			hdmi_tx_port: port@1 {
673083feecdSNeil Armstrong				reg = <1>;
674083feecdSNeil Armstrong
675083feecdSNeil Armstrong				hdmi_tx_out: endpoint {
676083feecdSNeil Armstrong					remote-endpoint = <&hdmi_tx_in>;
677083feecdSNeil Armstrong				};
678083feecdSNeil Armstrong			};
679083feecdSNeil Armstrong		};
680083feecdSNeil Armstrong
6819c8c52f7SJianxin Pan		gic: interrupt-controller@ffc01000 {
6829c8c52f7SJianxin Pan			compatible = "arm,gic-400";
6839c8c52f7SJianxin Pan			reg = <0x0 0xffc01000 0 0x1000>,
6849c8c52f7SJianxin Pan			      <0x0 0xffc02000 0 0x2000>,
6859c8c52f7SJianxin Pan			      <0x0 0xffc04000 0 0x2000>,
6869c8c52f7SJianxin Pan			      <0x0 0xffc06000 0 0x2000>;
6879c8c52f7SJianxin Pan			interrupt-controller;
6889c8c52f7SJianxin Pan			interrupts = <GIC_PPI 9
6899c8c52f7SJianxin Pan				(GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
6909c8c52f7SJianxin Pan			#interrupt-cells = <3>;
6919c8c52f7SJianxin Pan			#address-cells = <0>;
6929c8c52f7SJianxin Pan		};
6939c8c52f7SJianxin Pan
6949c8c52f7SJianxin Pan		cbus: bus@ffd00000 {
6959c8c52f7SJianxin Pan			compatible = "simple-bus";
696503f5fedSJerome Brunet			reg = <0x0 0xffd00000 0x0 0x100000>;
6979c8c52f7SJianxin Pan			#address-cells = <2>;
6989c8c52f7SJianxin Pan			#size-cells = <2>;
699503f5fedSJerome Brunet			ranges = <0x0 0x0 0x0 0xffd00000 0x0 0x100000>;
7009c8c52f7SJianxin Pan
7017ab41c47SJerome Brunet			reset: reset-controller@1004 {
7027ab41c47SJerome Brunet				compatible = "amlogic,meson-g12a-reset",
7037ab41c47SJerome Brunet					     "amlogic,meson-axg-reset";
7047ab41c47SJerome Brunet				reg = <0x0 0x1004 0x0 0x9c>;
7057ab41c47SJerome Brunet				#reset-cells = <1>;
7067ab41c47SJerome Brunet			};
7077ab41c47SJerome Brunet
708bb23b125SNeil Armstrong			pwm_ef: pwm@19000 {
709bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ee-pwm";
710bb23b125SNeil Armstrong				reg = <0x0 0x19000 0x0 0x20>;
711bb23b125SNeil Armstrong				#pwm-cells = <3>;
712bb23b125SNeil Armstrong				status = "disabled";
713bb23b125SNeil Armstrong			};
714bb23b125SNeil Armstrong
715bb23b125SNeil Armstrong			pwm_cd: pwm@1a000 {
716bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ee-pwm";
717bb23b125SNeil Armstrong				reg = <0x0 0x1a000 0x0 0x20>;
718bb23b125SNeil Armstrong				#pwm-cells = <3>;
719bb23b125SNeil Armstrong				status = "disabled";
720bb23b125SNeil Armstrong			};
721bb23b125SNeil Armstrong
722bb23b125SNeil Armstrong			pwm_ab: pwm@1b000 {
723bb23b125SNeil Armstrong				compatible = "amlogic,meson-g12a-ee-pwm";
724bb23b125SNeil Armstrong				reg = <0x0 0x1b000 0x0 0x20>;
725bb23b125SNeil Armstrong				#pwm-cells = <3>;
726bb23b125SNeil Armstrong				status = "disabled";
727bb23b125SNeil Armstrong			};
728bb23b125SNeil Armstrong
72960d4fdb8SJerome Brunet			clk_msr: clock-measure@18000 {
73060d4fdb8SJerome Brunet				compatible = "amlogic,meson-g12a-clk-measure";
73160d4fdb8SJerome Brunet				reg = <0x0 0x18000 0x0 0x10>;
73260d4fdb8SJerome Brunet			};
733ff4f8b6cSNeil Armstrong
734ff4f8b6cSNeil Armstrong			uart_C: serial@22000 {
735ff4f8b6cSNeil Armstrong				compatible = "amlogic,meson-gx-uart";
736ff4f8b6cSNeil Armstrong				reg = <0x0 0x22000 0x0 0x18>;
737ff4f8b6cSNeil Armstrong				interrupts = <GIC_SPI 93 IRQ_TYPE_EDGE_RISING>;
738ff4f8b6cSNeil Armstrong				clocks = <&xtal>, <&clkc CLKID_UART2>, <&xtal>;
739ff4f8b6cSNeil Armstrong				clock-names = "xtal", "pclk", "baud";
740ff4f8b6cSNeil Armstrong				status = "disabled";
741ff4f8b6cSNeil Armstrong			};
742ff4f8b6cSNeil Armstrong
743ff4f8b6cSNeil Armstrong			uart_B: serial@23000 {
744ff4f8b6cSNeil Armstrong				compatible = "amlogic,meson-gx-uart";
745ff4f8b6cSNeil Armstrong				reg = <0x0 0x23000 0x0 0x18>;
746ff4f8b6cSNeil Armstrong				interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>;
747ff4f8b6cSNeil Armstrong				clocks = <&xtal>, <&clkc CLKID_UART1>, <&xtal>;
748ff4f8b6cSNeil Armstrong				clock-names = "xtal", "pclk", "baud";
749ff4f8b6cSNeil Armstrong				status = "disabled";
750ff4f8b6cSNeil Armstrong			};
751ff4f8b6cSNeil Armstrong
752ff4f8b6cSNeil Armstrong			uart_A: serial@24000 {
753ff4f8b6cSNeil Armstrong				compatible = "amlogic,meson-gx-uart";
754ff4f8b6cSNeil Armstrong				reg = <0x0 0x24000 0x0 0x18>;
755ff4f8b6cSNeil Armstrong				interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
756ff4f8b6cSNeil Armstrong				clocks = <&xtal>, <&clkc CLKID_UART0>, <&xtal>;
757ff4f8b6cSNeil Armstrong				clock-names = "xtal", "pclk", "baud";
758ff4f8b6cSNeil Armstrong				status = "disabled";
759ff4f8b6cSNeil Armstrong			};
7609c8c52f7SJianxin Pan		};
7619baf7d6bSNeil Armstrong
7629baf7d6bSNeil Armstrong		usb: usb@ffe09000 {
7639baf7d6bSNeil Armstrong			status = "disabled";
7649baf7d6bSNeil Armstrong			compatible = "amlogic,meson-g12a-usb-ctrl";
7659baf7d6bSNeil Armstrong			reg = <0x0 0xffe09000 0x0 0xa0>;
7669baf7d6bSNeil Armstrong			interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
7679baf7d6bSNeil Armstrong			#address-cells = <2>;
7689baf7d6bSNeil Armstrong			#size-cells = <2>;
7699baf7d6bSNeil Armstrong			ranges;
7709baf7d6bSNeil Armstrong
7719baf7d6bSNeil Armstrong			clocks = <&clkc CLKID_USB>;
7729baf7d6bSNeil Armstrong			resets = <&reset RESET_USB>;
7739baf7d6bSNeil Armstrong
7749baf7d6bSNeil Armstrong			dr_mode = "otg";
7759baf7d6bSNeil Armstrong
7769baf7d6bSNeil Armstrong			phys = <&usb2_phy0>, <&usb2_phy1>,
7779baf7d6bSNeil Armstrong			       <&usb3_pcie_phy PHY_TYPE_USB3>;
7789baf7d6bSNeil Armstrong			phy-names = "usb2-phy0", "usb2-phy1", "usb3-phy0";
7799baf7d6bSNeil Armstrong
7809baf7d6bSNeil Armstrong			dwc2: usb@ff400000 {
7819baf7d6bSNeil Armstrong				compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
7829baf7d6bSNeil Armstrong				reg = <0x0 0xff400000 0x0 0x40000>;
7839baf7d6bSNeil Armstrong				interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
7849baf7d6bSNeil Armstrong				clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
7859baf7d6bSNeil Armstrong				clock-names = "ddr";
7869baf7d6bSNeil Armstrong				phys = <&usb2_phy1>;
7879baf7d6bSNeil Armstrong				dr_mode = "peripheral";
7889baf7d6bSNeil Armstrong				g-rx-fifo-size = <192>;
7899baf7d6bSNeil Armstrong				g-np-tx-fifo-size = <128>;
7909baf7d6bSNeil Armstrong				g-tx-fifo-size = <128 128 16 16 16>;
7919baf7d6bSNeil Armstrong			};
7929baf7d6bSNeil Armstrong
7939baf7d6bSNeil Armstrong			dwc3: usb@ff500000 {
7949baf7d6bSNeil Armstrong				compatible = "snps,dwc3";
7959baf7d6bSNeil Armstrong				reg = <0x0 0xff500000 0x0 0x100000>;
7969baf7d6bSNeil Armstrong				interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
7979baf7d6bSNeil Armstrong				dr_mode = "host";
7989baf7d6bSNeil Armstrong				snps,dis_u2_susphy_quirk;
7999baf7d6bSNeil Armstrong				snps,quirk-frame-length-adjustment;
8009baf7d6bSNeil Armstrong			};
8019baf7d6bSNeil Armstrong		};
8022607fd08SNeil Armstrong
8032607fd08SNeil Armstrong		mali: gpu@ffe40000 {
8042607fd08SNeil Armstrong			compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
8052607fd08SNeil Armstrong			reg = <0x0 0xffe40000 0x0 0x40000>;
8062607fd08SNeil Armstrong			interrupt-parent = <&gic>;
8072607fd08SNeil Armstrong			interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
8082607fd08SNeil Armstrong				     <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
8092607fd08SNeil Armstrong				     <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
8102607fd08SNeil Armstrong			interrupt-names = "gpu", "mmu", "job";
8112607fd08SNeil Armstrong			clocks = <&clkc CLKID_MALI>;
8122607fd08SNeil Armstrong			resets = <&reset RESET_DVALIN_CAPB3>, <&reset RESET_DVALIN>;
8132607fd08SNeil Armstrong
8142607fd08SNeil Armstrong			/*
8152607fd08SNeil Armstrong			 * Mali clocking is provided by two identical clock paths
8162607fd08SNeil Armstrong			 * MALI_0 and MALI_1 muxed to a single clock by a glitch
8172607fd08SNeil Armstrong			 * free mux to safely change frequency while running.
8182607fd08SNeil Armstrong			 */
8192607fd08SNeil Armstrong			assigned-clocks = <&clkc CLKID_MALI_0_SEL>,
8202607fd08SNeil Armstrong					  <&clkc CLKID_MALI_0>,
8212607fd08SNeil Armstrong					  <&clkc CLKID_MALI>; /* Glitch free mux */
8222607fd08SNeil Armstrong			assigned-clock-parents = <&clkc CLKID_FCLK_DIV2P5>,
8232607fd08SNeil Armstrong						 <0>, /* Do Nothing */
8242607fd08SNeil Armstrong						 <&clkc CLKID_MALI_0>;
8252607fd08SNeil Armstrong			assigned-clock-rates = <0>, /* Do Nothing */
8262607fd08SNeil Armstrong					       <800000000>,
8272607fd08SNeil Armstrong					       <0>; /* Do Nothing */
8282607fd08SNeil Armstrong		};
8299c8c52f7SJianxin Pan	};
8309c8c52f7SJianxin Pan
8319c8c52f7SJianxin Pan	timer {
8329c8c52f7SJianxin Pan		compatible = "arm,armv8-timer";
8339c8c52f7SJianxin Pan		interrupts = <GIC_PPI 13
8349c8c52f7SJianxin Pan			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
8359c8c52f7SJianxin Pan			     <GIC_PPI 14
8369c8c52f7SJianxin Pan			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
8379c8c52f7SJianxin Pan			     <GIC_PPI 11
8389c8c52f7SJianxin Pan			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
8399c8c52f7SJianxin Pan			     <GIC_PPI 10
8409c8c52f7SJianxin Pan			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>;
8419c8c52f7SJianxin Pan	};
8429c8c52f7SJianxin Pan
8439c8c52f7SJianxin Pan	xtal: xtal-clk {
8449c8c52f7SJianxin Pan		compatible = "fixed-clock";
8459c8c52f7SJianxin Pan		clock-frequency = <24000000>;
8469c8c52f7SJianxin Pan		clock-output-names = "xtal";
8479c8c52f7SJianxin Pan		#clock-cells = <0>;
8489c8c52f7SJianxin Pan	};
8499c8c52f7SJianxin Pan
8509c8c52f7SJianxin Pan};
851