xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/rk312x.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * This file is dual-licensed: you can use it either under the terms
3*4882a593Smuzhiyun * of the GPL or the X11 license, at your option. Note that this dual
4*4882a593Smuzhiyun * licensing only applies to this file, and not this project as a
5*4882a593Smuzhiyun * whole.
6*4882a593Smuzhiyun *
7*4882a593Smuzhiyun *  a) This file is free software; you can redistribute it and/or
8*4882a593Smuzhiyun *     modify it under the terms of the GNU General Public License as
9*4882a593Smuzhiyun *     published by the Free Software Foundation; either version 2 of the
10*4882a593Smuzhiyun *     License, or (at your option) any later version.
11*4882a593Smuzhiyun *
12*4882a593Smuzhiyun *     This file is distributed in the hope that it will be useful,
13*4882a593Smuzhiyun *     but WITHOUT ANY WARRANTY; without even the implied warranty of
14*4882a593Smuzhiyun *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*4882a593Smuzhiyun *     GNU General Public License for more details.
16*4882a593Smuzhiyun *
17*4882a593Smuzhiyun * Or, alternatively,
18*4882a593Smuzhiyun *
19*4882a593Smuzhiyun *  b) Permission is hereby granted, free of charge, to any person
20*4882a593Smuzhiyun *     obtaining a copy of this software and associated documentation
21*4882a593Smuzhiyun *     files (the "Software"), to deal in the Software without
22*4882a593Smuzhiyun *     restriction, including without limitation the rights to use,
23*4882a593Smuzhiyun *     copy, modify, merge, publish, distribute, sublicense, and/or
24*4882a593Smuzhiyun *     sell copies of the Software, and to permit persons to whom the
25*4882a593Smuzhiyun *     Software is furnished to do so, subject to the following
26*4882a593Smuzhiyun *     conditions:
27*4882a593Smuzhiyun *
28*4882a593Smuzhiyun *     The above copyright notice and this permission notice shall be
29*4882a593Smuzhiyun *     included in all copies or substantial portions of the Software.
30*4882a593Smuzhiyun *
31*4882a593Smuzhiyun *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
32*4882a593Smuzhiyun *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
33*4882a593Smuzhiyun *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
34*4882a593Smuzhiyun *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
35*4882a593Smuzhiyun *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
36*4882a593Smuzhiyun *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
37*4882a593Smuzhiyun *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
38*4882a593Smuzhiyun *     OTHER DEALINGS IN THE SOFTWARE.
39*4882a593Smuzhiyun */
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h>
42*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/irq.h>
43*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h>
44*4882a593Smuzhiyun#include <dt-bindings/pinctrl/rockchip.h>
45*4882a593Smuzhiyun#include <dt-bindings/power/rk3128-power.h>
46*4882a593Smuzhiyun#include <dt-bindings/soc/rockchip,boot-mode.h>
47*4882a593Smuzhiyun#include <dt-bindings/soc/rockchip-system-status.h>
48*4882a593Smuzhiyun#include <dt-bindings/clock/rk3128-cru.h>
49*4882a593Smuzhiyun#include <dt-bindings/display/media-bus-format.h>
50*4882a593Smuzhiyun#include <dt-bindings/thermal/thermal.h>
51*4882a593Smuzhiyun#include "rk3128-dram-default-timing.dtsi"
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun/ {
54*4882a593Smuzhiyun	interrupt-parent = <&gic>;
55*4882a593Smuzhiyun	#address-cells = <1>;
56*4882a593Smuzhiyun	#size-cells = <1>;
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun	aliases {
59*4882a593Smuzhiyun		ethernet0 = &gmac;
60*4882a593Smuzhiyun		i2c0 = &i2c0;
61*4882a593Smuzhiyun		i2c1 = &i2c1;
62*4882a593Smuzhiyun		i2c2 = &i2c2;
63*4882a593Smuzhiyun		i2c3 = &i2c3;
64*4882a593Smuzhiyun		mmc0 = &sdmmc;
65*4882a593Smuzhiyun		mmc1 = &sdio;
66*4882a593Smuzhiyun		mmc2 = &emmc;
67*4882a593Smuzhiyun		serial0 = &uart0;
68*4882a593Smuzhiyun		serial1 = &uart1;
69*4882a593Smuzhiyun		serial2 = &uart2;
70*4882a593Smuzhiyun		spi0 = &spi0;
71*4882a593Smuzhiyun	};
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun	cpus {
74*4882a593Smuzhiyun		#address-cells = <1>;
75*4882a593Smuzhiyun		#size-cells = <0>;
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun		cpu0: cpu@f00 {
78*4882a593Smuzhiyun			device_type = "cpu";
79*4882a593Smuzhiyun			compatible = "arm,cortex-a7";
80*4882a593Smuzhiyun			reg = <0xf00>;
81*4882a593Smuzhiyun			operating-points-v2 = <&cpu0_opp_table>;
82*4882a593Smuzhiyun			clocks = <&cru ARMCLK>;
83*4882a593Smuzhiyun			#cooling-cells = <2>; /* min followed by max */
84*4882a593Smuzhiyun			dynamic-power-coefficient = <120>;
85*4882a593Smuzhiyun		};
86*4882a593Smuzhiyun		cpu1: cpu@f01 {
87*4882a593Smuzhiyun			device_type = "cpu";
88*4882a593Smuzhiyun			compatible = "arm,cortex-a7";
89*4882a593Smuzhiyun			reg = <0xf01>;
90*4882a593Smuzhiyun			operating-points-v2 = <&cpu0_opp_table>;
91*4882a593Smuzhiyun		};
92*4882a593Smuzhiyun		cpu2: cpu@f02 {
93*4882a593Smuzhiyun			device_type = "cpu";
94*4882a593Smuzhiyun			compatible = "arm,cortex-a7";
95*4882a593Smuzhiyun			reg = <0xf02>;
96*4882a593Smuzhiyun			operating-points-v2 = <&cpu0_opp_table>;
97*4882a593Smuzhiyun		};
98*4882a593Smuzhiyun		cpu3: cpu@f03 {
99*4882a593Smuzhiyun			device_type = "cpu";
100*4882a593Smuzhiyun			compatible = "arm,cortex-a7";
101*4882a593Smuzhiyun			reg = <0xf03>;
102*4882a593Smuzhiyun			operating-points-v2 = <&cpu0_opp_table>;
103*4882a593Smuzhiyun		};
104*4882a593Smuzhiyun	};
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun	cpu0_opp_table: opp_table0 {
107*4882a593Smuzhiyun		compatible = "operating-points-v2";
108*4882a593Smuzhiyun		opp-shared;
109*4882a593Smuzhiyun
110*4882a593Smuzhiyun		rockchip,leakage-scaling-sel = <
111*4882a593Smuzhiyun			1   13   18
112*4882a593Smuzhiyun			14  254  0
113*4882a593Smuzhiyun		>;
114*4882a593Smuzhiyun		clocks = <&cru PLL_APLL>;
115*4882a593Smuzhiyun		rockchip,leakage-voltage-sel = <
116*4882a593Smuzhiyun			1   13   0
117*4882a593Smuzhiyun			14  49   1
118*4882a593Smuzhiyun			50  254  2
119*4882a593Smuzhiyun		>;
120*4882a593Smuzhiyun		nvmem-cells = <&cpu_leakage>;
121*4882a593Smuzhiyun		nvmem-cell-names = "cpu_leakage";
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun		opp-216000000 {
124*4882a593Smuzhiyun			opp-hz = /bits/ 64 <216000000>;
125*4882a593Smuzhiyun			opp-microvolt = <1000000 1000000 1425000>;
126*4882a593Smuzhiyun			opp-microvolt-L0 = <1000000 1000000 1425000>;
127*4882a593Smuzhiyun			opp-microvolt-L1 = <950000 950000 1425000>;
128*4882a593Smuzhiyun			opp-microvolt-L2 = <950000 950000 1425000>;
129*4882a593Smuzhiyun			clock-latency-ns = <40000>;
130*4882a593Smuzhiyun		};
131*4882a593Smuzhiyun		opp-408000000 {
132*4882a593Smuzhiyun			opp-hz = /bits/ 64 <408000000>;
133*4882a593Smuzhiyun			opp-microvolt = <1000000 1000000 1425000>;
134*4882a593Smuzhiyun			opp-microvolt-L0 = <1000000 1000000 1425000>;
135*4882a593Smuzhiyun			opp-microvolt-L1 = <950000 950000 1425000>;
136*4882a593Smuzhiyun			opp-microvolt-L2 = <950000 950000 1425000>;
137*4882a593Smuzhiyun			clock-latency-ns = <40000>;
138*4882a593Smuzhiyun		};
139*4882a593Smuzhiyun		opp-600000000 {
140*4882a593Smuzhiyun			opp-hz = /bits/ 64 <600000000>;
141*4882a593Smuzhiyun			opp-microvolt = <1150000 1150000 1425000>;
142*4882a593Smuzhiyun			opp-microvolt-L0 = <1150000 1150000 1425000>;
143*4882a593Smuzhiyun			opp-microvolt-L1 = <1100000 1100000 1425000>;
144*4882a593Smuzhiyun			opp-microvolt-L2 = <1050000 1050000 1425000>;
145*4882a593Smuzhiyun			clock-latency-ns = <40000>;
146*4882a593Smuzhiyun		};
147*4882a593Smuzhiyun		opp-696000000 {
148*4882a593Smuzhiyun			opp-hz = /bits/ 64 <696000000>;
149*4882a593Smuzhiyun			opp-microvolt = <1150000 1150000 1425000>;
150*4882a593Smuzhiyun			opp-microvolt-L0 = <1150000 1150000 1425000>;
151*4882a593Smuzhiyun			opp-microvolt-L1 = <1100000 1100000 1425000>;
152*4882a593Smuzhiyun			opp-microvolt-L2 = <1050000 1050000 1425000>;
153*4882a593Smuzhiyun			clock-latency-ns = <40000>;
154*4882a593Smuzhiyun		};
155*4882a593Smuzhiyun		opp-816000000 {
156*4882a593Smuzhiyun			opp-hz = /bits/ 64 <816000000>;
157*4882a593Smuzhiyun			opp-microvolt = <1200000 1200000 1425000>;
158*4882a593Smuzhiyun			opp-microvolt-L0 = <1200000 1200000 1425000>;
159*4882a593Smuzhiyun			opp-microvolt-L1 = <1150000 1150000 1425000>;
160*4882a593Smuzhiyun			opp-microvolt-L2 = <1100000 1100000 1425000>;
161*4882a593Smuzhiyun			clock-latency-ns = <40000>;
162*4882a593Smuzhiyun			opp-suspend;
163*4882a593Smuzhiyun		};
164*4882a593Smuzhiyun		opp-1008000000 {
165*4882a593Smuzhiyun			opp-hz = /bits/ 64 <1008000000>;
166*4882a593Smuzhiyun			opp-microvolt = <1350000 1350000 1425000>;
167*4882a593Smuzhiyun			opp-microvolt-L0 = <1350000 1350000 1425000>;
168*4882a593Smuzhiyun			opp-microvolt-L1 = <1275000 1275000 1425000>;
169*4882a593Smuzhiyun			opp-microvolt-L2 = <1225000 1225000 1425000>;
170*4882a593Smuzhiyun			clock-latency-ns = <40000>;
171*4882a593Smuzhiyun		};
172*4882a593Smuzhiyun		opp-1200000000 {
173*4882a593Smuzhiyun			opp-hz = /bits/ 64 <1200000000>;
174*4882a593Smuzhiyun			opp-microvolt = <1425000 1425000 1425000>;
175*4882a593Smuzhiyun			opp-microvolt-L0 = <1425000 1425000 1425000>;
176*4882a593Smuzhiyun			opp-microvolt-L1 = <1425000 1425000 1425000>;
177*4882a593Smuzhiyun			opp-microvolt-L2 = <1375000 1375000 1425000>;
178*4882a593Smuzhiyun			clock-latency-ns = <40000>;
179*4882a593Smuzhiyun		};
180*4882a593Smuzhiyun	};
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun	amba {
183*4882a593Smuzhiyun		compatible = "simple-bus";
184*4882a593Smuzhiyun		#address-cells = <1>;
185*4882a593Smuzhiyun		#size-cells = <1>;
186*4882a593Smuzhiyun		ranges;
187*4882a593Smuzhiyun
188*4882a593Smuzhiyun		pdma: pdma@20078000 {
189*4882a593Smuzhiyun			compatible = "arm,pl330", "arm,primecell";
190*4882a593Smuzhiyun			reg = <0x20078000 0x4000>;
191*4882a593Smuzhiyun			interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
192*4882a593Smuzhiyun				     <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
193*4882a593Smuzhiyun			#dma-cells = <1>;
194*4882a593Smuzhiyun			arm,pl330-broken-no-flushp;
195*4882a593Smuzhiyun			arm,pl330-periph-burst;
196*4882a593Smuzhiyun			clocks = <&cru ACLK_DMAC>;
197*4882a593Smuzhiyun			clock-names = "apb_pclk";
198*4882a593Smuzhiyun		};
199*4882a593Smuzhiyun	};
200*4882a593Smuzhiyun
201*4882a593Smuzhiyun	arm-pmu {
202*4882a593Smuzhiyun		compatible = "arm,cortex-a7-pmu";
203*4882a593Smuzhiyun		interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
204*4882a593Smuzhiyun			     <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
205*4882a593Smuzhiyun			     <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>,
206*4882a593Smuzhiyun			     <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
207*4882a593Smuzhiyun		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
208*4882a593Smuzhiyun	};
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun	dfi: dfi {
211*4882a593Smuzhiyun		compatible = "rockchip,rk3128-dfi";
212*4882a593Smuzhiyun		rockchip,pmu = <&pmu>;
213*4882a593Smuzhiyun		rockchip,grf = <&grf>;
214*4882a593Smuzhiyun		status = "disabled";
215*4882a593Smuzhiyun	};
216*4882a593Smuzhiyun
217*4882a593Smuzhiyun	display_subsystem: display-subsystem {
218*4882a593Smuzhiyun		compatible = "rockchip,display-subsystem";
219*4882a593Smuzhiyun		ports = <&vop_out>;
220*4882a593Smuzhiyun		status = "disabled";
221*4882a593Smuzhiyun	};
222*4882a593Smuzhiyun
223*4882a593Smuzhiyun	dmc: dmc {
224*4882a593Smuzhiyun		compatible = "rockchip,rk3128-dmc";
225*4882a593Smuzhiyun		devfreq-events = <&dfi>;
226*4882a593Smuzhiyun		clocks = <&cru SCLK_DDRC>;
227*4882a593Smuzhiyun		clock-names = "dmc_clk";
228*4882a593Smuzhiyun		upthreshold = <55>;
229*4882a593Smuzhiyun		downdifferential = <10>;
230*4882a593Smuzhiyun		operating-points-v2 = <&dmc_opp_table>;
231*4882a593Smuzhiyun		vop-dclk-mode = <0>;
232*4882a593Smuzhiyun		min-cpu-freq = <600000>;
233*4882a593Smuzhiyun		rockchip,ddr_timing = <&ddr_timing>;
234*4882a593Smuzhiyun		system-status-freq = <
235*4882a593Smuzhiyun			/*system status		freq(KHz)*/
236*4882a593Smuzhiyun			SYS_STATUS_NORMAL	456000
237*4882a593Smuzhiyun			SYS_STATUS_SUSPEND	300000
238*4882a593Smuzhiyun			SYS_STATUS_REBOOT	456000
239*4882a593Smuzhiyun		>;
240*4882a593Smuzhiyun		auto-min-freq = <456000>;
241*4882a593Smuzhiyun		auto-freq-en = <0>;
242*4882a593Smuzhiyun		status = "disabled";
243*4882a593Smuzhiyun	};
244*4882a593Smuzhiyun
245*4882a593Smuzhiyun	dmc_opp_table: opp_table2 {
246*4882a593Smuzhiyun		compatible = "operating-points-v2";
247*4882a593Smuzhiyun
248*4882a593Smuzhiyun		opp-200000000 {
249*4882a593Smuzhiyun			opp-hz = /bits/ 64 <200000000>;
250*4882a593Smuzhiyun			opp-microvolt = <1025000>;
251*4882a593Smuzhiyun			status = "disabled";
252*4882a593Smuzhiyun		};
253*4882a593Smuzhiyun		opp-300000000 {
254*4882a593Smuzhiyun			opp-hz = /bits/ 64 <300000000>;
255*4882a593Smuzhiyun			opp-microvolt = <1025000>;
256*4882a593Smuzhiyun		};
257*4882a593Smuzhiyun		opp-396000000 {
258*4882a593Smuzhiyun			opp-hz = /bits/ 64 <396000000>;
259*4882a593Smuzhiyun			opp-microvolt = <1100000>;
260*4882a593Smuzhiyun		};
261*4882a593Smuzhiyun		opp-456000000 {
262*4882a593Smuzhiyun			opp-hz = /bits/ 64 <456000000>;
263*4882a593Smuzhiyun			opp-microvolt = <1200000>;
264*4882a593Smuzhiyun		};
265*4882a593Smuzhiyun	};
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun	firmware {
268*4882a593Smuzhiyun		optee: optee {
269*4882a593Smuzhiyun			compatible = "linaro,optee-tz";
270*4882a593Smuzhiyun			method = "smc";
271*4882a593Smuzhiyun			status = "disabled";
272*4882a593Smuzhiyun		};
273*4882a593Smuzhiyun	};
274*4882a593Smuzhiyun
275*4882a593Smuzhiyun	psci {
276*4882a593Smuzhiyun		compatible = "arm,psci-1.0";
277*4882a593Smuzhiyun		method = "smc";
278*4882a593Smuzhiyun	};
279*4882a593Smuzhiyun
280*4882a593Smuzhiyun	timer {
281*4882a593Smuzhiyun		compatible = "arm,armv7-timer";
282*4882a593Smuzhiyun		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
283*4882a593Smuzhiyun			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
284*4882a593Smuzhiyun			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
285*4882a593Smuzhiyun			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
286*4882a593Smuzhiyun		clock-frequency = <24000000>;
287*4882a593Smuzhiyun	};
288*4882a593Smuzhiyun
289*4882a593Smuzhiyun	thermal-zones {
290*4882a593Smuzhiyun		soc_thermal: soc-thermal {
291*4882a593Smuzhiyun			polling-delay-passive = <1000>;
292*4882a593Smuzhiyun			polling-delay = <2000>;
293*4882a593Smuzhiyun			sustainable-power = <200>;
294*4882a593Smuzhiyun
295*4882a593Smuzhiyun			thermal-sensors = <&tsadc 0>;
296*4882a593Smuzhiyun
297*4882a593Smuzhiyun			trips {
298*4882a593Smuzhiyun				threshold: trip-point0 {
299*4882a593Smuzhiyun					temperature = <80000>;
300*4882a593Smuzhiyun					hysteresis = <2000>;
301*4882a593Smuzhiyun					type = "passive";
302*4882a593Smuzhiyun				};
303*4882a593Smuzhiyun				target: trip-point1 {
304*4882a593Smuzhiyun					temperature = <90000>;
305*4882a593Smuzhiyun					hysteresis = <2000>;
306*4882a593Smuzhiyun					type = "passive";
307*4882a593Smuzhiyun				};
308*4882a593Smuzhiyun			};
309*4882a593Smuzhiyun
310*4882a593Smuzhiyun			cooling-maps {
311*4882a593Smuzhiyun				map0 {
312*4882a593Smuzhiyun					trip = <&target>;
313*4882a593Smuzhiyun					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
314*4882a593Smuzhiyun					contribution = <1024>;
315*4882a593Smuzhiyun				};
316*4882a593Smuzhiyun				map1 {
317*4882a593Smuzhiyun					trip = <&target>;
318*4882a593Smuzhiyun					cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
319*4882a593Smuzhiyun					contribution = <1024>;
320*4882a593Smuzhiyun				};
321*4882a593Smuzhiyun			};
322*4882a593Smuzhiyun		};
323*4882a593Smuzhiyun
324*4882a593Smuzhiyun	};
325*4882a593Smuzhiyun
326*4882a593Smuzhiyun	tsadc: tsadc {
327*4882a593Smuzhiyun		compatible = "rockchip,rk3126-tsadc-virtual";
328*4882a593Smuzhiyun		nvmem-cells = <&cpu_leakage>;
329*4882a593Smuzhiyun		nvmem-cell-names = "cpu_leakage";
330*4882a593Smuzhiyun		#thermal-sensor-cells = <1>;
331*4882a593Smuzhiyun		status = "disabled";
332*4882a593Smuzhiyun	};
333*4882a593Smuzhiyun
334*4882a593Smuzhiyun	xin24m: oscillator {
335*4882a593Smuzhiyun		compatible = "fixed-clock";
336*4882a593Smuzhiyun		clock-frequency = <24000000>;
337*4882a593Smuzhiyun		clock-output-names = "xin24m";
338*4882a593Smuzhiyun		#clock-cells = <0>;
339*4882a593Smuzhiyun	};
340*4882a593Smuzhiyun
341*4882a593Smuzhiyun	gpu: gpu@10090000 {
342*4882a593Smuzhiyun		compatible = "arm,mali400";
343*4882a593Smuzhiyun		reg = <0x10090000 0x10000>;
344*4882a593Smuzhiyun		upthreshold = <40>;
345*4882a593Smuzhiyun		downdifferential = <10>;
346*4882a593Smuzhiyun
347*4882a593Smuzhiyun		interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
348*4882a593Smuzhiyun			     <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
349*4882a593Smuzhiyun			     <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
350*4882a593Smuzhiyun			     <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
351*4882a593Smuzhiyun			     <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
352*4882a593Smuzhiyun			     <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
353*4882a593Smuzhiyun
354*4882a593Smuzhiyun		interrupt-names = "Mali_GP_IRQ",
355*4882a593Smuzhiyun				  "Mali_GP_MMU_IRQ",
356*4882a593Smuzhiyun				  "Mali_PP0_IRQ",
357*4882a593Smuzhiyun				  "Mali_PP0_MMU_IRQ",
358*4882a593Smuzhiyun				  "Mali_PP1_IRQ",
359*4882a593Smuzhiyun				  "Mali_PP1_MMU_IRQ";
360*4882a593Smuzhiyun		clocks = <&cru ACLK_GPU>;
361*4882a593Smuzhiyun		#cooling-cells = <2>; /* min followed by max */
362*4882a593Smuzhiyun		clock-names = "clk_mali";
363*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_GPU>;
364*4882a593Smuzhiyun		operating-points-v2 = <&gpu_opp_table>;
365*4882a593Smuzhiyun		status = "disabled";
366*4882a593Smuzhiyun
367*4882a593Smuzhiyun		gpu_power_model: power_model {
368*4882a593Smuzhiyun			compatible = "arm,mali-simple-power-model";
369*4882a593Smuzhiyun			voltage = <900>;
370*4882a593Smuzhiyun			frequency = <500>;
371*4882a593Smuzhiyun			static-power = <300>;
372*4882a593Smuzhiyun			dynamic-power = <396>;
373*4882a593Smuzhiyun			ts = <32000 4700 (-80) 2>;
374*4882a593Smuzhiyun			thermal-zone = "soc-thermal";
375*4882a593Smuzhiyun		};
376*4882a593Smuzhiyun	};
377*4882a593Smuzhiyun
378*4882a593Smuzhiyun	gpu_opp_table: opp-table2 {
379*4882a593Smuzhiyun		compatible = "operating-points-v2";
380*4882a593Smuzhiyun
381*4882a593Smuzhiyun		opp-200000000 {
382*4882a593Smuzhiyun			opp-hz = /bits/ 64 <200000000>;
383*4882a593Smuzhiyun			opp-microvolt = <975000>;
384*4882a593Smuzhiyun		};
385*4882a593Smuzhiyun		opp-300000000 {
386*4882a593Smuzhiyun			opp-hz = /bits/ 64 <300000000>;
387*4882a593Smuzhiyun			opp-microvolt = <1050000>;
388*4882a593Smuzhiyun		};
389*4882a593Smuzhiyun		opp-400000000 {
390*4882a593Smuzhiyun			opp-hz = /bits/ 64 <400000000>;
391*4882a593Smuzhiyun			opp-microvolt = <1150000>;
392*4882a593Smuzhiyun		};
393*4882a593Smuzhiyun		opp-480000000 {
394*4882a593Smuzhiyun			opp-hz = /bits/ 64 <480000000>;
395*4882a593Smuzhiyun			opp-microvolt = <1250000>;
396*4882a593Smuzhiyun		};
397*4882a593Smuzhiyun	};
398*4882a593Smuzhiyun
399*4882a593Smuzhiyun	pmu: syscon@100a0000 {
400*4882a593Smuzhiyun		compatible = "rockchip,rk3128-pmu", "syscon", "simple-mfd";
401*4882a593Smuzhiyun		reg = <0x100a0000 0x1000>;
402*4882a593Smuzhiyun		#address-cells = <1>;
403*4882a593Smuzhiyun		#size-cells = <1>;
404*4882a593Smuzhiyun
405*4882a593Smuzhiyun		power: power-controller {
406*4882a593Smuzhiyun			compatible = "rockchip,rk3128-power-controller";
407*4882a593Smuzhiyun			#power-domain-cells = <1>;
408*4882a593Smuzhiyun			#address-cells = <1>;
409*4882a593Smuzhiyun			#size-cells = <0>;
410*4882a593Smuzhiyun			status = "okay";
411*4882a593Smuzhiyun
412*4882a593Smuzhiyun			pd_vio: pd_vio@RK3128_PD_VIO {
413*4882a593Smuzhiyun				reg = <RK3128_PD_VIO>;
414*4882a593Smuzhiyun				clocks = <&cru ACLK_RGA>,
415*4882a593Smuzhiyun					 <&cru ACLK_LCDC0>,
416*4882a593Smuzhiyun					 <&cru ACLK_IEP>,
417*4882a593Smuzhiyun					 <&cru ACLK_CIF>,
418*4882a593Smuzhiyun					 <&cru ACLK_VIO0>,
419*4882a593Smuzhiyun					 <&cru ACLK_VIO1>,
420*4882a593Smuzhiyun					 <&cru DCLK_VOP>,
421*4882a593Smuzhiyun					 <&cru DCLK_EBC>,
422*4882a593Smuzhiyun					 <&cru HCLK_RGA>,
423*4882a593Smuzhiyun					 <&cru HCLK_VIO>,
424*4882a593Smuzhiyun					 <&cru HCLK_EBC>,
425*4882a593Smuzhiyun					 <&cru HCLK_LCDC0>,
426*4882a593Smuzhiyun					 <&cru HCLK_IEP>,
427*4882a593Smuzhiyun					 <&cru HCLK_CIF>,
428*4882a593Smuzhiyun					 <&cru HCLK_VIO_H2P>,
429*4882a593Smuzhiyun					 <&cru PCLK_MIPI>,
430*4882a593Smuzhiyun					 <&cru PCLK_MIPIPHY>,
431*4882a593Smuzhiyun					 <&cru SCLK_VOP>;
432*4882a593Smuzhiyun				pm_qos = <&qos_rga>,
433*4882a593Smuzhiyun					 <&qos_iep>,
434*4882a593Smuzhiyun					 <&qos_lcdc0>,
435*4882a593Smuzhiyun					 <&qos_vip0>;
436*4882a593Smuzhiyun			};
437*4882a593Smuzhiyun			pd_video@RK3128_PD_VIDEO {
438*4882a593Smuzhiyun				reg = <RK3128_PD_VIDEO>;
439*4882a593Smuzhiyun				clocks = <&cru ACLK_VEPU>,
440*4882a593Smuzhiyun					 <&cru ACLK_VDPU>,
441*4882a593Smuzhiyun					 <&cru HCLK_VEPU>,
442*4882a593Smuzhiyun					 <&cru HCLK_VDPU>,
443*4882a593Smuzhiyun					 <&cru SCLK_HEVC_CORE>;
444*4882a593Smuzhiyun				pm_qos = <&qos_vpu>;
445*4882a593Smuzhiyun			};
446*4882a593Smuzhiyun			pd_gpu@RK3128_PD_GPU {
447*4882a593Smuzhiyun				reg = <RK3128_PD_GPU>;
448*4882a593Smuzhiyun				clocks = <&cru ACLK_GPU>;
449*4882a593Smuzhiyun				pm_qos = <&qos_gpu>;
450*4882a593Smuzhiyun			};
451*4882a593Smuzhiyun		};
452*4882a593Smuzhiyun
453*4882a593Smuzhiyun		reboot_mode: reboot-mode {
454*4882a593Smuzhiyun			compatible = "syscon-reboot-mode";
455*4882a593Smuzhiyun			offset = <0x38>;
456*4882a593Smuzhiyun			mode-bootloader = <BOOT_BL_DOWNLOAD>;
457*4882a593Smuzhiyun			mode-charge = <BOOT_CHARGING>;
458*4882a593Smuzhiyun			mode-fastboot = <BOOT_FASTBOOT>;
459*4882a593Smuzhiyun			mode-loader = <BOOT_BL_DOWNLOAD>;
460*4882a593Smuzhiyun			mode-normal = <BOOT_NORMAL>;
461*4882a593Smuzhiyun			mode-recovery = <BOOT_RECOVERY>;
462*4882a593Smuzhiyun			mode-ums = <BOOT_UMS>;
463*4882a593Smuzhiyun		};
464*4882a593Smuzhiyun	};
465*4882a593Smuzhiyun
466*4882a593Smuzhiyun	mpp_srv: mpp-srv {
467*4882a593Smuzhiyun		compatible = "rockchip,mpp-service";
468*4882a593Smuzhiyun		rockchip,taskqueue-count = <1>;
469*4882a593Smuzhiyun		rockchip,resetgroup-count = <1>;
470*4882a593Smuzhiyun		rockchip,grf = <&grf>;
471*4882a593Smuzhiyun		rockchip,grf-offset = <0x0144>;
472*4882a593Smuzhiyun		rockchip,grf-values = <0x04000400>, <0x04000400>;
473*4882a593Smuzhiyun		rockchip,grf-names = "grf_vdpu1", "grf_vepu1";
474*4882a593Smuzhiyun		status = "disabled";
475*4882a593Smuzhiyun	};
476*4882a593Smuzhiyun
477*4882a593Smuzhiyun	hevc: hevc@10104000 {
478*4882a593Smuzhiyun		compatible = "rockchip,hevc-decoder";
479*4882a593Smuzhiyun		reg = <0x10104000 0x400>;
480*4882a593Smuzhiyun		interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
481*4882a593Smuzhiyun		interrupt-names = "irq_dec";
482*4882a593Smuzhiyun		clocks = <&cru ACLK_VDPU>, <&cru HCLK_VDPU>,
483*4882a593Smuzhiyun			<&cru SCLK_HEVC_CORE>;
484*4882a593Smuzhiyun		clock-names = "aclk_vcodec", "hclk_vcodec", "clk_core";
485*4882a593Smuzhiyun		resets = <&cru SRST_VCODEC_H>, <&cru SRST_VCODEC_A>,
486*4882a593Smuzhiyun			<&cru SRST_HEVC_CORE>;
487*4882a593Smuzhiyun		reset-names = "shared_video_h", "shared_video_a",
488*4882a593Smuzhiyun			      "video_core";
489*4882a593Smuzhiyun		iommus = <&hevc_mmu>;
490*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIDEO>;
491*4882a593Smuzhiyun		rockchip,srv = <&mpp_srv>;
492*4882a593Smuzhiyun		rockchip,taskqueue-node = <0>;
493*4882a593Smuzhiyun		rockchip,resetgroup-node = <0>;
494*4882a593Smuzhiyun		status = "disabled";
495*4882a593Smuzhiyun	};
496*4882a593Smuzhiyun
497*4882a593Smuzhiyun	hevc_mmu: iommu@10104440 {
498*4882a593Smuzhiyun		compatible = "rockchip,iommu";
499*4882a593Smuzhiyun		reg = <0x10104440 0x40>, <0x10104480 0x40>;
500*4882a593Smuzhiyun		interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
501*4882a593Smuzhiyun		interrupt-names = "hevc_mmu";
502*4882a593Smuzhiyun		clock-names = "aclk", "iface";
503*4882a593Smuzhiyun		clocks = <&cru ACLK_VDPU>, <&cru HCLK_VDPU>;
504*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIDEO>;
505*4882a593Smuzhiyun		#iommu-cells = <0>;
506*4882a593Smuzhiyun		status = "disabled";
507*4882a593Smuzhiyun	};
508*4882a593Smuzhiyun
509*4882a593Smuzhiyun	vepu: vepu@0x10106000 {
510*4882a593Smuzhiyun		compatible = "rockchip,vpu-encoder-v1";
511*4882a593Smuzhiyun		reg = <0x10106000 0x400>;
512*4882a593Smuzhiyun		interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
513*4882a593Smuzhiyun		interrupt-names = "irq_enc";
514*4882a593Smuzhiyun		clocks = <&cru ACLK_VDPU>, <&cru HCLK_VDPU>;
515*4882a593Smuzhiyun		clock-names = "aclk_vcodec", "hclk_vcodec";
516*4882a593Smuzhiyun		resets = <&cru SRST_VCODEC_H>, <&cru SRST_VCODEC_A>;
517*4882a593Smuzhiyun		reset-names = "shared_video_h", "shared_video_a";
518*4882a593Smuzhiyun		iommus = <&vpu_mmu>;
519*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIDEO>;
520*4882a593Smuzhiyun		rockchip,srv = <&mpp_srv>;
521*4882a593Smuzhiyun		rockchip,taskqueue-node = <0>;
522*4882a593Smuzhiyun		rockchip,resetgroup-node = <0>;
523*4882a593Smuzhiyun		status = "disabled";
524*4882a593Smuzhiyun	};
525*4882a593Smuzhiyun
526*4882a593Smuzhiyun	vdpu: vdpu@10106400 {
527*4882a593Smuzhiyun		compatible = "rockchip,vpu-decoder-v1";
528*4882a593Smuzhiyun		reg = <0x10106400 0x400>;
529*4882a593Smuzhiyun		interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
530*4882a593Smuzhiyun		interrupt-names = "irq_dec";
531*4882a593Smuzhiyun		clocks = <&cru ACLK_VDPU>, <&cru HCLK_VDPU>;
532*4882a593Smuzhiyun		clock-names = "aclk_vcodec", "hclk_vcodec";
533*4882a593Smuzhiyun		resets = <&cru SRST_VCODEC_H>, <&cru SRST_VCODEC_A>;
534*4882a593Smuzhiyun		reset-names = "shared_video_h", "shared_video_a";
535*4882a593Smuzhiyun		iommus = <&vpu_mmu>;
536*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIDEO>;
537*4882a593Smuzhiyun		rockchip,srv = <&mpp_srv>;
538*4882a593Smuzhiyun		rockchip,taskqueue-node = <0>;
539*4882a593Smuzhiyun		rockchip,resetgroup-node = <0>;
540*4882a593Smuzhiyun		status = "disabled";
541*4882a593Smuzhiyun	};
542*4882a593Smuzhiyun
543*4882a593Smuzhiyun	vpu_mmu: iommu@10106800 {
544*4882a593Smuzhiyun		compatible = "rockchip,iommu";
545*4882a593Smuzhiyun		reg = <0x10106800 0x40>;
546*4882a593Smuzhiyun		interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
547*4882a593Smuzhiyun		interrupt-names = "vpu_mmu";
548*4882a593Smuzhiyun		clocks = <&cru ACLK_VDPU>, <&cru HCLK_VDPU>;
549*4882a593Smuzhiyun		clock-names = "aclk", "iface";
550*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIDEO>;
551*4882a593Smuzhiyun		#iommu-cells = <0>;
552*4882a593Smuzhiyun		status = "disabled";
553*4882a593Smuzhiyun	};
554*4882a593Smuzhiyun
555*4882a593Smuzhiyun	iep: iep@10108000 {
556*4882a593Smuzhiyun		compatible = "rockchip,iep";
557*4882a593Smuzhiyun		iommu_enabled = <1>;
558*4882a593Smuzhiyun		iommus = <&iep_mmu>;
559*4882a593Smuzhiyun		reg = <0x10108000 0x800>;
560*4882a593Smuzhiyun		interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
561*4882a593Smuzhiyun		clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>;
562*4882a593Smuzhiyun		clock-names = "aclk_iep", "hclk_iep";
563*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIO>;
564*4882a593Smuzhiyun		allocator = <1>;
565*4882a593Smuzhiyun		version = <1>;
566*4882a593Smuzhiyun		status = "disabled";
567*4882a593Smuzhiyun	};
568*4882a593Smuzhiyun
569*4882a593Smuzhiyun	iep_mmu: iommu@10108800 {
570*4882a593Smuzhiyun		compatible = "rockchip,iommu";
571*4882a593Smuzhiyun		reg = <0x10108800 0x40>;
572*4882a593Smuzhiyun		interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
573*4882a593Smuzhiyun		interrupt-names = "iep_mmu";
574*4882a593Smuzhiyun		clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>;
575*4882a593Smuzhiyun		clock-names = "aclk", "iface";
576*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIO>;
577*4882a593Smuzhiyun		#iommu-cells = <0>;
578*4882a593Smuzhiyun		status = "disabled";
579*4882a593Smuzhiyun	};
580*4882a593Smuzhiyun
581*4882a593Smuzhiyun	cif: cif@1010a000 {
582*4882a593Smuzhiyun		compatible = "rockchip,cif";
583*4882a593Smuzhiyun		reg = <0x1010a000 0x200>;
584*4882a593Smuzhiyun		interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
585*4882a593Smuzhiyun		clocks = <&cru ACLK_CIF>, <&cru HCLK_CIF>,
586*4882a593Smuzhiyun				<&cru SCLK_CIF_SRC>, <&cru SCLK_CIF_OUT>;
587*4882a593Smuzhiyun		clock-names = "aclk_cif0", "hclk_cif0",
588*4882a593Smuzhiyun				"cif0_in", "cif0_out";
589*4882a593Smuzhiyun		resets = <&cru SRST_CIF0>;
590*4882a593Smuzhiyun		reset-names = "rst_cif";
591*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIO>;
592*4882a593Smuzhiyun		status = "disabled";
593*4882a593Smuzhiyun	};
594*4882a593Smuzhiyun
595*4882a593Smuzhiyun	cif_new: cif-new@1010a000 {
596*4882a593Smuzhiyun		compatible = "rockchip,rk3128-cif";
597*4882a593Smuzhiyun		reg = <0x1010a000 0x200>;
598*4882a593Smuzhiyun
599*4882a593Smuzhiyun		clocks = <&cru ACLK_CIF>, <&cru HCLK_CIF>,
600*4882a593Smuzhiyun			 <&cru SCLK_CIF_OUT>;
601*4882a593Smuzhiyun		clock-names = "aclk_cif", "hclk_cif",
602*4882a593Smuzhiyun			      "sclk_cif_out";
603*4882a593Smuzhiyun		resets = <&cru SRST_CIF0>;
604*4882a593Smuzhiyun		reset-names = "rst_cif";
605*4882a593Smuzhiyun		interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
606*4882a593Smuzhiyun		/* rk312x has not iommu attached */
607*4882a593Smuzhiyun		/* iommus = <&cif_mmu>; */
608*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIO>;
609*4882a593Smuzhiyun
610*4882a593Smuzhiyun		status = "disabled";
611*4882a593Smuzhiyun	};
612*4882a593Smuzhiyun
613*4882a593Smuzhiyun	rga: rga@1010c000 {
614*4882a593Smuzhiyun		compatible = "rockchip,rk312x-rga";
615*4882a593Smuzhiyun		reg = <0x1010c000 0x1000>;
616*4882a593Smuzhiyun		interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
617*4882a593Smuzhiyun		clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA>;
618*4882a593Smuzhiyun		clock-names = "aclk_rga", "hclk_rga", "sclk_rga";
619*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIO>;
620*4882a593Smuzhiyun		status = "disabled";
621*4882a593Smuzhiyun	};
622*4882a593Smuzhiyun
623*4882a593Smuzhiyun	vop: vop@1010e000 {
624*4882a593Smuzhiyun		compatible = "rockchip,rk3126-vop";
625*4882a593Smuzhiyun		reg = <0x1010e000 0x100>, <0x1010ec00 0x400>;
626*4882a593Smuzhiyun		reg-names = "regs", "gamma_lut";
627*4882a593Smuzhiyun		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
628*4882a593Smuzhiyun		clocks = <&cru ACLK_LCDC0>, <&cru DCLK_VOP>, <&cru HCLK_LCDC0>;
629*4882a593Smuzhiyun		clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
630*4882a593Smuzhiyun		resets = <&cru SRST_VOP_A>, <&cru SRST_VOP_D>, <&cru SRST_VOP_H>;
631*4882a593Smuzhiyun		reset-names = "axi", "ahb", "dclk";
632*4882a593Smuzhiyun		iommus = <&vop_mmu>;
633*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIO>;
634*4882a593Smuzhiyun		status = "disabled";
635*4882a593Smuzhiyun
636*4882a593Smuzhiyun		vop_out: port {
637*4882a593Smuzhiyun			#address-cells = <1>;
638*4882a593Smuzhiyun			#size-cells = <0>;
639*4882a593Smuzhiyun
640*4882a593Smuzhiyun			vop_out_dsi: endpoint@0 {
641*4882a593Smuzhiyun				reg = <0>;
642*4882a593Smuzhiyun				remote-endpoint = <&dsi_in_vop>;
643*4882a593Smuzhiyun			};
644*4882a593Smuzhiyun
645*4882a593Smuzhiyun			vop_out_lvds: endpoint@1 {
646*4882a593Smuzhiyun				reg = <1>;
647*4882a593Smuzhiyun				remote-endpoint = <&lvds_in_vop>;
648*4882a593Smuzhiyun			};
649*4882a593Smuzhiyun
650*4882a593Smuzhiyun			vop_out_rgb: endpoint@2 {
651*4882a593Smuzhiyun				reg = <2>;
652*4882a593Smuzhiyun				remote-endpoint = <&rgb_in_vop>;
653*4882a593Smuzhiyun			};
654*4882a593Smuzhiyun		};
655*4882a593Smuzhiyun	};
656*4882a593Smuzhiyun
657*4882a593Smuzhiyun	vop_mmu: iommu@1010e300 {
658*4882a593Smuzhiyun		compatible = "rockchip,iommu";
659*4882a593Smuzhiyun		reg = <0x1010e300 0x100>;
660*4882a593Smuzhiyun		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
661*4882a593Smuzhiyun		interrupt-names = "vop_mmu";
662*4882a593Smuzhiyun		clocks = <&cru ACLK_LCDC0>, <&cru HCLK_LCDC0>;
663*4882a593Smuzhiyun		clock-names = "aclk", "iface";
664*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIO>;
665*4882a593Smuzhiyun		#iommu-cells = <0>;
666*4882a593Smuzhiyun		rockchip,disable-device-link-resume;
667*4882a593Smuzhiyun		status = "disabled";
668*4882a593Smuzhiyun	};
669*4882a593Smuzhiyun
670*4882a593Smuzhiyun	dsi: dsi@10110000 {
671*4882a593Smuzhiyun		compatible = "rockchip,rk3128-mipi-dsi";
672*4882a593Smuzhiyun		reg = <0x10110000 0x4000>;
673*4882a593Smuzhiyun		interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
674*4882a593Smuzhiyun		clocks = <&cru PCLK_MIPI>, <&cru HCLK_VIO_H2P>;
675*4882a593Smuzhiyun		clock-names = "pclk", "hclk";
676*4882a593Smuzhiyun		resets = <&cru SRST_VIO_MIPI_DSI>;
677*4882a593Smuzhiyun		reset-names = "apb";
678*4882a593Smuzhiyun		phys = <&video_phy>;
679*4882a593Smuzhiyun		phy-names = "dphy";
680*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIO>;
681*4882a593Smuzhiyun		rockchip,grf = <&grf>;
682*4882a593Smuzhiyun		#address-cells = <1>;
683*4882a593Smuzhiyun		#size-cells = <0>;
684*4882a593Smuzhiyun		status = "disabled";
685*4882a593Smuzhiyun
686*4882a593Smuzhiyun		ports {
687*4882a593Smuzhiyun			port {
688*4882a593Smuzhiyun				dsi_in_vop: endpoint {
689*4882a593Smuzhiyun					remote-endpoint = <&vop_out_dsi>;
690*4882a593Smuzhiyun				};
691*4882a593Smuzhiyun			};
692*4882a593Smuzhiyun		};
693*4882a593Smuzhiyun	};
694*4882a593Smuzhiyun
695*4882a593Smuzhiyun	qos_gpu: qos@1012d000 {
696*4882a593Smuzhiyun		compatible = "syscon";
697*4882a593Smuzhiyun		reg = <0x1012d000 0x20>;
698*4882a593Smuzhiyun	};
699*4882a593Smuzhiyun
700*4882a593Smuzhiyun	qos_vpu: qos@1012e000 {
701*4882a593Smuzhiyun		compatible = "syscon";
702*4882a593Smuzhiyun		reg = <0x1012e000 0x20>;
703*4882a593Smuzhiyun	};
704*4882a593Smuzhiyun
705*4882a593Smuzhiyun	qos_rga: qos@1012f000 {
706*4882a593Smuzhiyun		compatible = "syscon";
707*4882a593Smuzhiyun		reg = <0x1012f000 0x20>;
708*4882a593Smuzhiyun	};
709*4882a593Smuzhiyun
710*4882a593Smuzhiyun	qos_iep: qos@1012f100 {
711*4882a593Smuzhiyun		compatible = "syscon";
712*4882a593Smuzhiyun		reg = <0x1012f100 0x20>;
713*4882a593Smuzhiyun	};
714*4882a593Smuzhiyun
715*4882a593Smuzhiyun	qos_lcdc0: qos@1012f180 {
716*4882a593Smuzhiyun		compatible = "syscon";
717*4882a593Smuzhiyun		reg = <0x1012f180 0x20>;
718*4882a593Smuzhiyun	};
719*4882a593Smuzhiyun
720*4882a593Smuzhiyun	qos_vip0: qos@1012f200 {
721*4882a593Smuzhiyun		compatible = "syscon";
722*4882a593Smuzhiyun		reg = <0x1012f200 0x20>;
723*4882a593Smuzhiyun	};
724*4882a593Smuzhiyun
725*4882a593Smuzhiyun	gic: interrupt-controller@10139000 {
726*4882a593Smuzhiyun		compatible = "arm,cortex-a7-gic";
727*4882a593Smuzhiyun		interrupt-controller;
728*4882a593Smuzhiyun		#interrupt-cells = <3>;
729*4882a593Smuzhiyun		#address-cells = <0>;
730*4882a593Smuzhiyun
731*4882a593Smuzhiyun		reg = <0x10139000 0x1000>,
732*4882a593Smuzhiyun		      <0x1013a000 0x1000>,
733*4882a593Smuzhiyun		      <0x1013c000 0x2000>,
734*4882a593Smuzhiyun		      <0x1013e000 0x2000>;
735*4882a593Smuzhiyun		interrupts = <GIC_PPI 9 0xf04>;
736*4882a593Smuzhiyun	};
737*4882a593Smuzhiyun
738*4882a593Smuzhiyun	usb_otg: usb@10180000 {
739*4882a593Smuzhiyun		compatible = "rockchip,rk3128-usb", "rockchip,rk3066-usb",
740*4882a593Smuzhiyun			     "snps,dwc2";
741*4882a593Smuzhiyun		reg = <0x10180000 0x40000>;
742*4882a593Smuzhiyun		interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
743*4882a593Smuzhiyun		clocks = <&cru HCLK_OTG>;
744*4882a593Smuzhiyun		clock-names = "otg";
745*4882a593Smuzhiyun		dr_mode = "otg";
746*4882a593Smuzhiyun		g-np-tx-fifo-size = <16>;
747*4882a593Smuzhiyun		g-rx-fifo-size = <280>;
748*4882a593Smuzhiyun		g-tx-fifo-size = <256 128 128 64 32 16>;
749*4882a593Smuzhiyun		g-use-dma;
750*4882a593Smuzhiyun		phys = <&u2phy_otg>;
751*4882a593Smuzhiyun		phy-names = "usb2-phy";
752*4882a593Smuzhiyun		status = "disabled";
753*4882a593Smuzhiyun	};
754*4882a593Smuzhiyun
755*4882a593Smuzhiyun	usb_host_ehci: usb@101c0000 {
756*4882a593Smuzhiyun		compatible = "generic-ehci";
757*4882a593Smuzhiyun		reg = <0x101c0000 0x20000>;
758*4882a593Smuzhiyun		interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
759*4882a593Smuzhiyun		clocks = <&cru HCLK_HOST2>, <&u2phy>;
760*4882a593Smuzhiyun		clock-names = "usbhost", "utmi";
761*4882a593Smuzhiyun		phys = <&u2phy_host>;
762*4882a593Smuzhiyun		phy-names = "usb";
763*4882a593Smuzhiyun		status = "disabled";
764*4882a593Smuzhiyun	};
765*4882a593Smuzhiyun
766*4882a593Smuzhiyun	usb_host_ohci: usb@101e0000 {
767*4882a593Smuzhiyun		compatible = "generic-ohci";
768*4882a593Smuzhiyun		reg = <0x101e0000 0x20000>;
769*4882a593Smuzhiyun		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
770*4882a593Smuzhiyun		clocks = <&cru HCLK_HOST2>, <&u2phy>;
771*4882a593Smuzhiyun		clock-names = "usbhost", "utmi";
772*4882a593Smuzhiyun		phys = <&u2phy_host>;
773*4882a593Smuzhiyun		phy-names = "usb";
774*4882a593Smuzhiyun		status = "disabled";
775*4882a593Smuzhiyun	};
776*4882a593Smuzhiyun
777*4882a593Smuzhiyun	i2s_8ch: i2s-8ch@10200000 {
778*4882a593Smuzhiyun		compatible = "rockchip,rk3128-i2s", "rockchip,rk3066-i2s";
779*4882a593Smuzhiyun		reg = <0x10200000 0x1000>;
780*4882a593Smuzhiyun		clocks = <&cru SCLK_I2S0>, <&cru HCLK_I2S_8CH>;
781*4882a593Smuzhiyun		clock-names = "i2s_clk", "i2s_hclk";
782*4882a593Smuzhiyun		interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
783*4882a593Smuzhiyun		dmas = <&pdma 14>, <&pdma 15>;
784*4882a593Smuzhiyun		dma-names = "tx", "rx";
785*4882a593Smuzhiyun		resets = <&cru SRST_I2S_8CH>;
786*4882a593Smuzhiyun		reset-names = "reset-m";
787*4882a593Smuzhiyun		status = "disabled";
788*4882a593Smuzhiyun	};
789*4882a593Smuzhiyun
790*4882a593Smuzhiyun	spdif: spdif@10204000 {
791*4882a593Smuzhiyun		compatible = "rockchip,rk3128-spdif";
792*4882a593Smuzhiyun		reg = <0x10204000 0x1000>;
793*4882a593Smuzhiyun		interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
794*4882a593Smuzhiyun		clocks = <&cru SCLK_SPDIF>, <&cru HCLK_SPDIF>;
795*4882a593Smuzhiyun		clock-names = "mclk", "hclk";
796*4882a593Smuzhiyun		dmas = <&pdma 13>;
797*4882a593Smuzhiyun		dma-names = "tx";
798*4882a593Smuzhiyun		pinctrl-names = "default";
799*4882a593Smuzhiyun		pinctrl-0 = <&spdif_tx>;
800*4882a593Smuzhiyun		status = "disabled";
801*4882a593Smuzhiyun	};
802*4882a593Smuzhiyun
803*4882a593Smuzhiyun	sfc: sfc@1020c000 {
804*4882a593Smuzhiyun		compatible = "rockchip,sfc";
805*4882a593Smuzhiyun		reg = <0x1020c000 0x8000>;
806*4882a593Smuzhiyun		interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
807*4882a593Smuzhiyun		clocks = <&cru SCLK_SFC>, <&cru HCLK_SFC>;
808*4882a593Smuzhiyun		clock-names = "clk_sfc", "hclk_sfc";
809*4882a593Smuzhiyun		assigned-clocks = <&cru SCLK_SFC>;
810*4882a593Smuzhiyun		assigned-clock-rates = <60000000>;
811*4882a593Smuzhiyun		status = "disabled";
812*4882a593Smuzhiyun	};
813*4882a593Smuzhiyun
814*4882a593Smuzhiyun	i2s_2ch: i2s-2ch@10220000 {
815*4882a593Smuzhiyun		compatible = "rockchip,rk3128-i2s", "rockchip,rk3066-i2s";
816*4882a593Smuzhiyun		reg = <0x10220000 0x1000>;
817*4882a593Smuzhiyun		clocks = <&cru SCLK_I2S1>, <&cru HCLK_I2S_2CH>;
818*4882a593Smuzhiyun		clock-names = "i2s_clk", "i2s_hclk";
819*4882a593Smuzhiyun		interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
820*4882a593Smuzhiyun		dmas = <&pdma 0>, <&pdma 1>;
821*4882a593Smuzhiyun		dma-names = "tx", "rx";
822*4882a593Smuzhiyun		resets = <&cru SRST_I2S_2CH>;
823*4882a593Smuzhiyun		reset-names = "reset-m";
824*4882a593Smuzhiyun		status = "disabled";
825*4882a593Smuzhiyun	};
826*4882a593Smuzhiyun
827*4882a593Smuzhiyun	sdmmc: dwmmc@10214000 {
828*4882a593Smuzhiyun		compatible = "rockchip,rk312x-dw-mshc", "rockchip,rk3288-dw-mshc";
829*4882a593Smuzhiyun		reg = <0x10214000 0x4000>;
830*4882a593Smuzhiyun		interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
831*4882a593Smuzhiyun		#address-cells = <1>;
832*4882a593Smuzhiyun		#size-cells = <0>;
833*4882a593Smuzhiyun		pinctrl-names = "default";
834*4882a593Smuzhiyun		pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
835*4882a593Smuzhiyun		max-frequency = <50000000>;
836*4882a593Smuzhiyun		clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>, <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
837*4882a593Smuzhiyun		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
838*4882a593Smuzhiyun		dmas = <&pdma 10>;
839*4882a593Smuzhiyun		dma-names = "rx-tx";
840*4882a593Smuzhiyun		fifo-depth = <0x100>;
841*4882a593Smuzhiyun		bus-width = <4>;
842*4882a593Smuzhiyun		status = "disabled";
843*4882a593Smuzhiyun	};
844*4882a593Smuzhiyun
845*4882a593Smuzhiyun	sdio: dwmmc@10218000 {
846*4882a593Smuzhiyun		compatible = "rockchip,rk312x-dw-mshc", "rockchip,rk3288-dw-mshc";
847*4882a593Smuzhiyun		reg = <0x10218000 0x4000>;
848*4882a593Smuzhiyun		interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
849*4882a593Smuzhiyun		#address-cells = <1>;
850*4882a593Smuzhiyun		#size-cells = <0>;
851*4882a593Smuzhiyun		pinctrl-names = "default";
852*4882a593Smuzhiyun		pinctrl-0 = <&sdio_pwren &sdio_cmd &sdio_clk &sdio_bus4>;
853*4882a593Smuzhiyun		clock-freq-min-max = <400000 50000000>;
854*4882a593Smuzhiyun		clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>;
855*4882a593Smuzhiyun		clock-names = "biu", "ciu";
856*4882a593Smuzhiyun		dmas = <&pdma 11>;
857*4882a593Smuzhiyun		dma-names = "rx-tx";
858*4882a593Smuzhiyun		num-slots = <1>;
859*4882a593Smuzhiyun		fifo-depth = <0x100>;
860*4882a593Smuzhiyun		bus-width = <4>;
861*4882a593Smuzhiyun		status = "disabled";
862*4882a593Smuzhiyun	};
863*4882a593Smuzhiyun
864*4882a593Smuzhiyun	emmc: dwmmc@1021c000 {
865*4882a593Smuzhiyun		compatible = "rockchip,rk312x-dw-mshc", "rockchip,rk3288-dw-mshc";
866*4882a593Smuzhiyun		reg = <0x1021c000 0x4000>;
867*4882a593Smuzhiyun		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
868*4882a593Smuzhiyun		#address-cells = <1>;
869*4882a593Smuzhiyun		#size-cells = <0>;
870*4882a593Smuzhiyun		clock-freq-min-max = <400000 50000000>;
871*4882a593Smuzhiyun		clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>;
872*4882a593Smuzhiyun		clock-names = "biu", "ciu";
873*4882a593Smuzhiyun		dmas = <&pdma 12>;
874*4882a593Smuzhiyun		dma-names = "rx-tx";
875*4882a593Smuzhiyun		num-slots = <1>;
876*4882a593Smuzhiyun		fifo-depth = <0x100>;
877*4882a593Smuzhiyun		bus-width = <8>;
878*4882a593Smuzhiyun		status = "disabled";
879*4882a593Smuzhiyun	};
880*4882a593Smuzhiyun
881*4882a593Smuzhiyun	nandc: nandc@10500000 {
882*4882a593Smuzhiyun		compatible = "rockchip,rk-nandc";
883*4882a593Smuzhiyun		reg = <0x10500000 0x4000>;
884*4882a593Smuzhiyun		interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
885*4882a593Smuzhiyun		nandc_id = <0>;
886*4882a593Smuzhiyun		clocks = <&cru SCLK_NANDC>, <&cru HCLK_NANDC>;
887*4882a593Smuzhiyun		clock-names = "clk_nandc", "hclk_nandc";
888*4882a593Smuzhiyun		status = "disabled";
889*4882a593Smuzhiyun	};
890*4882a593Smuzhiyun
891*4882a593Smuzhiyun	cru: clock-controller@20000000 {
892*4882a593Smuzhiyun		compatible = "rockchip,rk3128-cru";
893*4882a593Smuzhiyun		reg = <0x20000000 0x1000>;
894*4882a593Smuzhiyun		rockchip,grf = <&grf>;
895*4882a593Smuzhiyun		#clock-cells = <1>;
896*4882a593Smuzhiyun		#reset-cells = <1>;
897*4882a593Smuzhiyun		assigned-clocks = <&cru PLL_GPLL>,
898*4882a593Smuzhiyun				  <&cru ACLK_CPU>, <&cru HCLK_CPU>,
899*4882a593Smuzhiyun				  <&cru PCLK_CPU>, <&cru ACLK_PERI>,
900*4882a593Smuzhiyun				  <&cru HCLK_PERI>, <&cru PCLK_PERI>;
901*4882a593Smuzhiyun		assigned-clock-rates = <594000000>,
902*4882a593Smuzhiyun				       <300000000>, <150000000>,
903*4882a593Smuzhiyun				       <75000000>, <300000000>,
904*4882a593Smuzhiyun				       <150000000>, <75000000>;
905*4882a593Smuzhiyun	};
906*4882a593Smuzhiyun
907*4882a593Smuzhiyun	grf: syscon@20008000 {
908*4882a593Smuzhiyun		compatible = "rockchip,rk3128-grf", "syscon", "simple-mfd";
909*4882a593Smuzhiyun		reg = <0x20008000 0x1000>;
910*4882a593Smuzhiyun		#address-cells = <1>;
911*4882a593Smuzhiyun		#size-cells = <1>;
912*4882a593Smuzhiyun
913*4882a593Smuzhiyun		lvds: lvds {
914*4882a593Smuzhiyun			compatible = "rockchip,rk3126-lvds";
915*4882a593Smuzhiyun			phys = <&video_phy>;
916*4882a593Smuzhiyun			phy-names = "phy";
917*4882a593Smuzhiyun			status = "disabled";
918*4882a593Smuzhiyun
919*4882a593Smuzhiyun			ports {
920*4882a593Smuzhiyun				#address-cells = <1>;
921*4882a593Smuzhiyun				#size-cells = <0>;
922*4882a593Smuzhiyun
923*4882a593Smuzhiyun				port@0 {
924*4882a593Smuzhiyun					reg = <0>;
925*4882a593Smuzhiyun
926*4882a593Smuzhiyun					lvds_in_vop: endpoint {
927*4882a593Smuzhiyun						remote-endpoint = <&vop_out_lvds>;
928*4882a593Smuzhiyun					};
929*4882a593Smuzhiyun				};
930*4882a593Smuzhiyun			};
931*4882a593Smuzhiyun		};
932*4882a593Smuzhiyun
933*4882a593Smuzhiyun		rgb: rgb {
934*4882a593Smuzhiyun			compatible = "rockchip,rk3128-rgb";
935*4882a593Smuzhiyun			phys = <&video_phy>;
936*4882a593Smuzhiyun			phy-names = "phy";
937*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
938*4882a593Smuzhiyun			pinctrl-0 = <&lcdc_rgb_pins>;
939*4882a593Smuzhiyun			pinctrl-1 = <&lcdc_sleep_pins>;
940*4882a593Smuzhiyun			status = "disabled";
941*4882a593Smuzhiyun
942*4882a593Smuzhiyun			ports {
943*4882a593Smuzhiyun				#address-cells = <1>;
944*4882a593Smuzhiyun				#size-cells = <0>;
945*4882a593Smuzhiyun
946*4882a593Smuzhiyun				port@0 {
947*4882a593Smuzhiyun					reg = <0>;
948*4882a593Smuzhiyun
949*4882a593Smuzhiyun					rgb_in_vop: endpoint {
950*4882a593Smuzhiyun						remote-endpoint = <&vop_out_rgb>;
951*4882a593Smuzhiyun					};
952*4882a593Smuzhiyun				};
953*4882a593Smuzhiyun			};
954*4882a593Smuzhiyun		};
955*4882a593Smuzhiyun
956*4882a593Smuzhiyun		u2phy: usb2-phy@17c {
957*4882a593Smuzhiyun			compatible = "rockchip,rk3128-usb2phy";
958*4882a593Smuzhiyun			reg = <0x017c 0x0c>;
959*4882a593Smuzhiyun			clocks = <&cru SCLK_OTGPHY0>;
960*4882a593Smuzhiyun			clock-names = "phyclk";
961*4882a593Smuzhiyun			#clock-cells = <0>;
962*4882a593Smuzhiyun			clock-output-names = "usb480m_phy";
963*4882a593Smuzhiyun			assigned-clocks = <&cru SCLK_USB480M>;
964*4882a593Smuzhiyun			assigned-clock-parents = <&u2phy>;
965*4882a593Smuzhiyun			status = "disabled";
966*4882a593Smuzhiyun
967*4882a593Smuzhiyun			u2phy_otg: otg-port {
968*4882a593Smuzhiyun				#phy-cells = <0>;
969*4882a593Smuzhiyun				interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
970*4882a593Smuzhiyun					     <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
971*4882a593Smuzhiyun					     <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
972*4882a593Smuzhiyun				interrupt-names = "otg-bvalid", "otg-id",
973*4882a593Smuzhiyun						  "linestate";
974*4882a593Smuzhiyun				status = "disabled";
975*4882a593Smuzhiyun			};
976*4882a593Smuzhiyun
977*4882a593Smuzhiyun			u2phy_host: host-port {
978*4882a593Smuzhiyun				#phy-cells = <0>;
979*4882a593Smuzhiyun				interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
980*4882a593Smuzhiyun				interrupt-names = "linestate";
981*4882a593Smuzhiyun				status = "disabled";
982*4882a593Smuzhiyun			};
983*4882a593Smuzhiyun		};
984*4882a593Smuzhiyun	};
985*4882a593Smuzhiyun
986*4882a593Smuzhiyun	codec: codec@20030000 {
987*4882a593Smuzhiyun		compatible = "rockchip,rk3128-codec";
988*4882a593Smuzhiyun		reg = <0x20030000 0x4000>;
989*4882a593Smuzhiyun		interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
990*4882a593Smuzhiyun		boot_depop = <1>;
991*4882a593Smuzhiyun		pa_enable_time = <1000>;
992*4882a593Smuzhiyun		rockchip,grf = <&grf>;
993*4882a593Smuzhiyun		clocks = <&cru PCLK_ACODEC>, <&cru SCLK_I2S1>;
994*4882a593Smuzhiyun		clock-names = "g_pclk_acodec", "i2s_clk";
995*4882a593Smuzhiyun		status = "disabled";
996*4882a593Smuzhiyun	};
997*4882a593Smuzhiyun
998*4882a593Smuzhiyun	video_phy: video-phy@20038000 {
999*4882a593Smuzhiyun		compatible = "rockchip,rk3128-dsi-dphy", "rockchip,rk3128-video-phy";
1000*4882a593Smuzhiyun		reg = <0x20038000 0x4000>, <0x10110000 0x4000>;
1001*4882a593Smuzhiyun		reg-names = "phy", "host";
1002*4882a593Smuzhiyun		clocks = <&cru SCLK_MIPI_24M>, <&cru PCLK_MIPIPHY>,
1003*4882a593Smuzhiyun			 <&cru PCLK_MIPI>;
1004*4882a593Smuzhiyun		clock-names = "ref", "pclk", "pclk_host";
1005*4882a593Smuzhiyun		#clock-cells = <0>;
1006*4882a593Smuzhiyun		resets = <&cru SRST_MIPIPHY_P>;
1007*4882a593Smuzhiyun		reset-names = "apb";
1008*4882a593Smuzhiyun		power-domains = <&power RK3128_PD_VIO>;
1009*4882a593Smuzhiyun		#phy-cells = <0>;
1010*4882a593Smuzhiyun		status = "disabled";
1011*4882a593Smuzhiyun	};
1012*4882a593Smuzhiyun
1013*4882a593Smuzhiyun	timer@20044000 {
1014*4882a593Smuzhiyun		compatible = "rockchip,rk3128-timer", "rockchip,rk3288-timer";
1015*4882a593Smuzhiyun		reg = <0x20044000 0x20>;
1016*4882a593Smuzhiyun		interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
1017*4882a593Smuzhiyun		clocks = <&xin24m>, <&cru PCLK_TIMER>;
1018*4882a593Smuzhiyun		clock-names = "timer", "pclk";
1019*4882a593Smuzhiyun	};
1020*4882a593Smuzhiyun
1021*4882a593Smuzhiyun	watchdog@2004c000 {
1022*4882a593Smuzhiyun		compatible = "snps,dw-wdt";
1023*4882a593Smuzhiyun		reg = <0x2004c000 0x100>;
1024*4882a593Smuzhiyun		clocks = <&cru PCLK_WDT>;
1025*4882a593Smuzhiyun		interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
1026*4882a593Smuzhiyun		status = "disabled";
1027*4882a593Smuzhiyun	};
1028*4882a593Smuzhiyun
1029*4882a593Smuzhiyun	pwm0: pwm@20050000 {
1030*4882a593Smuzhiyun		compatible = "rockchip,rk3288-pwm";
1031*4882a593Smuzhiyun		reg = <0x20050000 0x10>;
1032*4882a593Smuzhiyun		#pwm-cells = <3>;
1033*4882a593Smuzhiyun		pinctrl-names = "active";
1034*4882a593Smuzhiyun		pinctrl-0 = <&pwm0_pin>;
1035*4882a593Smuzhiyun		clocks = <&cru PCLK_PWM>;
1036*4882a593Smuzhiyun		clock-names = "pwm";
1037*4882a593Smuzhiyun		status = "disabled";
1038*4882a593Smuzhiyun	};
1039*4882a593Smuzhiyun
1040*4882a593Smuzhiyun	pwm1: pwm@20050010 {
1041*4882a593Smuzhiyun		compatible = "rockchip,rk3288-pwm";
1042*4882a593Smuzhiyun		reg = <0x20050010 0x10>;
1043*4882a593Smuzhiyun		#pwm-cells = <3>;
1044*4882a593Smuzhiyun		pinctrl-names = "active";
1045*4882a593Smuzhiyun		pinctrl-0 = <&pwm1_pin>;
1046*4882a593Smuzhiyun		clocks = <&cru PCLK_PWM>;
1047*4882a593Smuzhiyun		clock-names = "pwm";
1048*4882a593Smuzhiyun		status = "disabled";
1049*4882a593Smuzhiyun	};
1050*4882a593Smuzhiyun
1051*4882a593Smuzhiyun	pwm2: pwm@20050020 {
1052*4882a593Smuzhiyun		compatible = "rockchip,rk3288-pwm";
1053*4882a593Smuzhiyun		reg = <0x20050020 0x10>;
1054*4882a593Smuzhiyun		#pwm-cells = <3>;
1055*4882a593Smuzhiyun		pinctrl-names = "active";
1056*4882a593Smuzhiyun		pinctrl-0 = <&pwm2_pin>;
1057*4882a593Smuzhiyun		clocks = <&cru PCLK_PWM>;
1058*4882a593Smuzhiyun		clock-names = "pwm";
1059*4882a593Smuzhiyun		status = "disabled";
1060*4882a593Smuzhiyun	};
1061*4882a593Smuzhiyun
1062*4882a593Smuzhiyun	pwm3: pwm@20050030 {
1063*4882a593Smuzhiyun		compatible = "rockchip,rk3288-pwm";
1064*4882a593Smuzhiyun		reg = <0x20050030 0x10>;
1065*4882a593Smuzhiyun		#pwm-cells = <3>;
1066*4882a593Smuzhiyun		pinctrl-names = "active";
1067*4882a593Smuzhiyun		pinctrl-0 = <&pwm3_pin>;
1068*4882a593Smuzhiyun		clocks = <&cru PCLK_PWM>;
1069*4882a593Smuzhiyun		clock-names = "pwm";
1070*4882a593Smuzhiyun		status = "disabled";
1071*4882a593Smuzhiyun	};
1072*4882a593Smuzhiyun
1073*4882a593Smuzhiyun	i2c1: i2c@20056000 {
1074*4882a593Smuzhiyun		compatible = "rockchip,rk3288-i2c";
1075*4882a593Smuzhiyun		reg = <0x20056000 0x1000>;
1076*4882a593Smuzhiyun		interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
1077*4882a593Smuzhiyun		#address-cells = <1>;
1078*4882a593Smuzhiyun		#size-cells = <0>;
1079*4882a593Smuzhiyun		clock-names = "i2c";
1080*4882a593Smuzhiyun		clocks = <&cru PCLK_I2C1>;
1081*4882a593Smuzhiyun		pinctrl-names = "default";
1082*4882a593Smuzhiyun		pinctrl-0 = <&i2c1_xfer>;
1083*4882a593Smuzhiyun		status = "disabled";
1084*4882a593Smuzhiyun	};
1085*4882a593Smuzhiyun
1086*4882a593Smuzhiyun	i2c2: i2c@2005a000 {
1087*4882a593Smuzhiyun		compatible = "rockchip,rk3288-i2c";
1088*4882a593Smuzhiyun		reg = <0x2005a000 0x1000>;
1089*4882a593Smuzhiyun		interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
1090*4882a593Smuzhiyun		#address-cells = <1>;
1091*4882a593Smuzhiyun		#size-cells = <0>;
1092*4882a593Smuzhiyun		clock-names = "i2c";
1093*4882a593Smuzhiyun		clocks = <&cru PCLK_I2C2>;
1094*4882a593Smuzhiyun		pinctrl-names = "default";
1095*4882a593Smuzhiyun		pinctrl-0 = <&i2c2_xfer>;
1096*4882a593Smuzhiyun		status = "disabled";
1097*4882a593Smuzhiyun	};
1098*4882a593Smuzhiyun
1099*4882a593Smuzhiyun	i2c3: i2c@2005e000 {
1100*4882a593Smuzhiyun		compatible = "rockchip,rk3288-i2c";
1101*4882a593Smuzhiyun		reg = <0x2005e000 0x1000>;
1102*4882a593Smuzhiyun		interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
1103*4882a593Smuzhiyun		#address-cells = <1>;
1104*4882a593Smuzhiyun		#size-cells = <0>;
1105*4882a593Smuzhiyun		clock-names = "i2c";
1106*4882a593Smuzhiyun		clocks = <&cru PCLK_I2C3>;
1107*4882a593Smuzhiyun		pinctrl-names = "default";
1108*4882a593Smuzhiyun		pinctrl-0 = <&i2c3_xfer>;
1109*4882a593Smuzhiyun		status = "disabled";
1110*4882a593Smuzhiyun	};
1111*4882a593Smuzhiyun
1112*4882a593Smuzhiyun	uart0: serial@20060000 {
1113*4882a593Smuzhiyun		compatible = "rockchip,rk3128-uart", "snps,dw-apb-uart";
1114*4882a593Smuzhiyun		reg = <0x20060000 0x100>;
1115*4882a593Smuzhiyun		interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
1116*4882a593Smuzhiyun		clock-frequency = <24000000>;
1117*4882a593Smuzhiyun		clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
1118*4882a593Smuzhiyun		clock-names = "baudclk", "apb_pclk";
1119*4882a593Smuzhiyun		reg-shift = <2>;
1120*4882a593Smuzhiyun		reg-io-width = <4>;
1121*4882a593Smuzhiyun		pinctrl-names = "default";
1122*4882a593Smuzhiyun		pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
1123*4882a593Smuzhiyun		status = "disabled";
1124*4882a593Smuzhiyun	};
1125*4882a593Smuzhiyun
1126*4882a593Smuzhiyun	uart1: serial@20064000 {
1127*4882a593Smuzhiyun		compatible = "rockchip,rk3128-uart", "snps,dw-apb-uart";
1128*4882a593Smuzhiyun		reg = <0x20064000 0x100>;
1129*4882a593Smuzhiyun		interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
1130*4882a593Smuzhiyun		clock-frequency = <24000000>;
1131*4882a593Smuzhiyun		clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
1132*4882a593Smuzhiyun		clock-names = "baudclk", "apb_pclk";
1133*4882a593Smuzhiyun		reg-shift = <2>;
1134*4882a593Smuzhiyun		reg-io-width = <4>;
1135*4882a593Smuzhiyun		pinctrl-names = "default";
1136*4882a593Smuzhiyun		pinctrl-0 = <&uart1_xfer &uart1_cts &uart1_rts>;
1137*4882a593Smuzhiyun		status = "disabled";
1138*4882a593Smuzhiyun	};
1139*4882a593Smuzhiyun
1140*4882a593Smuzhiyun	uart2: serial@20068000 {
1141*4882a593Smuzhiyun		compatible = "rockchip,rk3128-uart", "snps,dw-apb-uart";
1142*4882a593Smuzhiyun		reg = <0x20068000 0x100>;
1143*4882a593Smuzhiyun		interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
1144*4882a593Smuzhiyun		clock-frequency = <24000000>;
1145*4882a593Smuzhiyun		clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
1146*4882a593Smuzhiyun		clock-names = "baudclk", "apb_pclk";
1147*4882a593Smuzhiyun		reg-shift = <2>;
1148*4882a593Smuzhiyun		reg-io-width = <4>;
1149*4882a593Smuzhiyun		pinctrl-names = "default";
1150*4882a593Smuzhiyun		pinctrl-0 = <&uart2_xfer>;
1151*4882a593Smuzhiyun		status = "disabled";
1152*4882a593Smuzhiyun	};
1153*4882a593Smuzhiyun
1154*4882a593Smuzhiyun	saradc: saradc@2006c000 {
1155*4882a593Smuzhiyun		compatible = "rockchip,saradc";
1156*4882a593Smuzhiyun		reg = <0x2006c000 0x100>;
1157*4882a593Smuzhiyun		interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
1158*4882a593Smuzhiyun		#io-channel-cells = <1>;
1159*4882a593Smuzhiyun		clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
1160*4882a593Smuzhiyun		clock-names = "saradc", "apb_pclk";
1161*4882a593Smuzhiyun		resets = <&cru SRST_SARADC>;
1162*4882a593Smuzhiyun		reset-names = "saradc-apb";
1163*4882a593Smuzhiyun		status = "disabled";
1164*4882a593Smuzhiyun	};
1165*4882a593Smuzhiyun
1166*4882a593Smuzhiyun	i2c0: i2c@20072000 {
1167*4882a593Smuzhiyun		compatible = "rockchip,rk3288-i2c";
1168*4882a593Smuzhiyun		reg = <0x20072000 0x1000>;
1169*4882a593Smuzhiyun		interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
1170*4882a593Smuzhiyun		#address-cells = <1>;
1171*4882a593Smuzhiyun		#size-cells = <0>;
1172*4882a593Smuzhiyun		clock-names = "i2c";
1173*4882a593Smuzhiyun		clocks = <&cru PCLK_I2C0>;
1174*4882a593Smuzhiyun		pinctrl-names = "default";
1175*4882a593Smuzhiyun		pinctrl-0 = <&i2c0_xfer>;
1176*4882a593Smuzhiyun		status = "disabled";
1177*4882a593Smuzhiyun	};
1178*4882a593Smuzhiyun
1179*4882a593Smuzhiyun	spi0: spi@20074000 {
1180*4882a593Smuzhiyun		compatible = "rockchip,rk3288-spi";
1181*4882a593Smuzhiyun		reg = <0x20074000 0x1000>;
1182*4882a593Smuzhiyun		interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
1183*4882a593Smuzhiyun		pinctrl-names = "default";
1184*4882a593Smuzhiyun		pinctrl-0 = <&spi0m0_tx &spi0m0_rx &spi0m0_clk &spi0m0_cs0 &spi0m0_cs1>;
1185*4882a593Smuzhiyun		clock-names = "spiclk", "apb_pclk";
1186*4882a593Smuzhiyun		dmas = <&pdma 8>, <&pdma 9>;
1187*4882a593Smuzhiyun		dma-names = "tx", "rx";
1188*4882a593Smuzhiyun		#address-cells = <1>;
1189*4882a593Smuzhiyun		#size-cells = <0>;
1190*4882a593Smuzhiyun		status = "disabled";
1191*4882a593Smuzhiyun	};
1192*4882a593Smuzhiyun
1193*4882a593Smuzhiyun	gmac: eth@2008c000 {
1194*4882a593Smuzhiyun		compatible = "rockchip,rk3128-gmac";
1195*4882a593Smuzhiyun		reg = <0x2008c000 0x4000>;
1196*4882a593Smuzhiyun		interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
1197*4882a593Smuzhiyun			     <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
1198*4882a593Smuzhiyun		interrupt-names = "macirq", "eth_wake_irq";
1199*4882a593Smuzhiyun		rockchip,grf = <&grf>;
1200*4882a593Smuzhiyun		clocks = <&cru SCLK_MAC>,
1201*4882a593Smuzhiyun			 <&cru SCLK_MAC_RX>, <&cru SCLK_MAC_TX>,
1202*4882a593Smuzhiyun			 <&cru SCLK_MAC_REF>, <&cru SCLK_MAC_REFOUT>,
1203*4882a593Smuzhiyun			 <&cru ACLK_GMAC>, <&cru PCLK_GMAC>;
1204*4882a593Smuzhiyun		clock-names = "stmmaceth",
1205*4882a593Smuzhiyun			      "mac_clk_rx", "mac_clk_tx",
1206*4882a593Smuzhiyun			      "clk_mac_ref", "clk_mac_refout",
1207*4882a593Smuzhiyun			      "aclk_mac", "pclk_mac";
1208*4882a593Smuzhiyun		resets = <&cru SRST_GMAC>;
1209*4882a593Smuzhiyun		reset-names = "stmmaceth";
1210*4882a593Smuzhiyun		status = "disabled";
1211*4882a593Smuzhiyun	};
1212*4882a593Smuzhiyun
1213*4882a593Smuzhiyun	efuse: efuse@20090000 {
1214*4882a593Smuzhiyun		compatible = "rockchip,rk3128-efuse";
1215*4882a593Smuzhiyun		reg = <0x20090000 0x20>;
1216*4882a593Smuzhiyun		#address-cells = <1>;
1217*4882a593Smuzhiyun		#size-cells = <1>;
1218*4882a593Smuzhiyun		clocks = <&cru PCLK_EFUSE>;
1219*4882a593Smuzhiyun		clock-names = "pclk_efuse";
1220*4882a593Smuzhiyun
1221*4882a593Smuzhiyun		efuse_id: id@7 {
1222*4882a593Smuzhiyun			reg = <0x7 0x10>;
1223*4882a593Smuzhiyun		};
1224*4882a593Smuzhiyun		cpu_leakage: cpu_leakage@17 {
1225*4882a593Smuzhiyun			reg = <0x17 0x1>;
1226*4882a593Smuzhiyun		};
1227*4882a593Smuzhiyun	};
1228*4882a593Smuzhiyun
1229*4882a593Smuzhiyun	rockchip_system_monitor: rockchip-system-monitor {
1230*4882a593Smuzhiyun		compatible = "rockchip,system-monitor";
1231*4882a593Smuzhiyun	};
1232*4882a593Smuzhiyun
1233*4882a593Smuzhiyun	pinctrl: pinctrl {
1234*4882a593Smuzhiyun		compatible = "rockchip,rk3128-pinctrl";
1235*4882a593Smuzhiyun		rockchip,grf = <&grf>;
1236*4882a593Smuzhiyun		#address-cells = <1>;
1237*4882a593Smuzhiyun		#size-cells = <1>;
1238*4882a593Smuzhiyun		ranges;
1239*4882a593Smuzhiyun
1240*4882a593Smuzhiyun		gpio0: gpio0@2007c000 {
1241*4882a593Smuzhiyun			compatible = "rockchip,gpio-bank";
1242*4882a593Smuzhiyun			reg = <0x2007c000 0x100>;
1243*4882a593Smuzhiyun			interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
1244*4882a593Smuzhiyun			clocks = <&cru PCLK_GPIO0>;
1245*4882a593Smuzhiyun
1246*4882a593Smuzhiyun			gpio-controller;
1247*4882a593Smuzhiyun			#gpio-cells = <2>;
1248*4882a593Smuzhiyun
1249*4882a593Smuzhiyun			interrupt-controller;
1250*4882a593Smuzhiyun			#interrupt-cells = <2>;
1251*4882a593Smuzhiyun		};
1252*4882a593Smuzhiyun
1253*4882a593Smuzhiyun		gpio1: gpio1@20080000 {
1254*4882a593Smuzhiyun			compatible = "rockchip,gpio-bank";
1255*4882a593Smuzhiyun			reg = <0x20080000 0x100>;
1256*4882a593Smuzhiyun			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
1257*4882a593Smuzhiyun			clocks = <&cru PCLK_GPIO1>;
1258*4882a593Smuzhiyun
1259*4882a593Smuzhiyun			gpio-controller;
1260*4882a593Smuzhiyun			#gpio-cells = <2>;
1261*4882a593Smuzhiyun
1262*4882a593Smuzhiyun			interrupt-controller;
1263*4882a593Smuzhiyun			#interrupt-cells = <2>;
1264*4882a593Smuzhiyun		};
1265*4882a593Smuzhiyun
1266*4882a593Smuzhiyun		gpio2: gpio2@20084000 {
1267*4882a593Smuzhiyun			compatible = "rockchip,gpio-bank";
1268*4882a593Smuzhiyun			reg = <0x20084000 0x100>;
1269*4882a593Smuzhiyun			interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
1270*4882a593Smuzhiyun			clocks = <&cru PCLK_GPIO2>;
1271*4882a593Smuzhiyun
1272*4882a593Smuzhiyun			gpio-controller;
1273*4882a593Smuzhiyun			#gpio-cells = <2>;
1274*4882a593Smuzhiyun
1275*4882a593Smuzhiyun			interrupt-controller;
1276*4882a593Smuzhiyun			#interrupt-cells = <2>;
1277*4882a593Smuzhiyun		};
1278*4882a593Smuzhiyun
1279*4882a593Smuzhiyun		gpio3: gpio3@20088000 {
1280*4882a593Smuzhiyun			compatible = "rockchip,gpio-bank";
1281*4882a593Smuzhiyun			reg = <0x20088000 0x100>;
1282*4882a593Smuzhiyun			interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
1283*4882a593Smuzhiyun			clocks = <&cru PCLK_GPIO3>;
1284*4882a593Smuzhiyun
1285*4882a593Smuzhiyun			gpio-controller;
1286*4882a593Smuzhiyun			#gpio-cells = <2>;
1287*4882a593Smuzhiyun
1288*4882a593Smuzhiyun			interrupt-controller;
1289*4882a593Smuzhiyun			#interrupt-cells = <2>;
1290*4882a593Smuzhiyun		};
1291*4882a593Smuzhiyun
1292*4882a593Smuzhiyun		pcfg_pull_default: pcfg_pull_default {
1293*4882a593Smuzhiyun			bias-pull-pin-default;
1294*4882a593Smuzhiyun		};
1295*4882a593Smuzhiyun
1296*4882a593Smuzhiyun		pcfg_output_high: pcfg-output-high {
1297*4882a593Smuzhiyun			output-high;
1298*4882a593Smuzhiyun		};
1299*4882a593Smuzhiyun
1300*4882a593Smuzhiyun		pcfg_pull_none: pcfg-pull-none {
1301*4882a593Smuzhiyun			bias-disable;
1302*4882a593Smuzhiyun		};
1303*4882a593Smuzhiyun
1304*4882a593Smuzhiyun		emmc {
1305*4882a593Smuzhiyun			emmc_clk: emmc-clk {
1306*4882a593Smuzhiyun				rockchip,pins = <2 RK_PA7 2 &pcfg_pull_none>;
1307*4882a593Smuzhiyun			};
1308*4882a593Smuzhiyun
1309*4882a593Smuzhiyun			emmc_cmd: emmc-cmd {
1310*4882a593Smuzhiyun				rockchip,pins = <1 RK_PC6 2 &pcfg_pull_default>;
1311*4882a593Smuzhiyun			};
1312*4882a593Smuzhiyun
1313*4882a593Smuzhiyun			emmc_cmd1: emmc-cmd1 {
1314*4882a593Smuzhiyun				rockchip,pins = <2 RK_PA4 2 &pcfg_pull_default>;
1315*4882a593Smuzhiyun			};
1316*4882a593Smuzhiyun
1317*4882a593Smuzhiyun			emmc_pwr: emmc-pwr {
1318*4882a593Smuzhiyun				rockchip,pins = <2 RK_PA5 2 &pcfg_pull_default>;
1319*4882a593Smuzhiyun			};
1320*4882a593Smuzhiyun
1321*4882a593Smuzhiyun			emmc_bus1: emmc-bus1 {
1322*4882a593Smuzhiyun				rockchip,pins = <1 RK_PD0 2 &pcfg_pull_default>;
1323*4882a593Smuzhiyun			};
1324*4882a593Smuzhiyun
1325*4882a593Smuzhiyun			emmc_bus4: emmc-bus4 {
1326*4882a593Smuzhiyun				rockchip,pins = <1 RK_PD0 2 &pcfg_pull_default>,
1327*4882a593Smuzhiyun						<1 RK_PD1 2 &pcfg_pull_default>,
1328*4882a593Smuzhiyun						<1 RK_PD2 2 &pcfg_pull_default>,
1329*4882a593Smuzhiyun						<1 RK_PD3 2 &pcfg_pull_default>;
1330*4882a593Smuzhiyun			};
1331*4882a593Smuzhiyun
1332*4882a593Smuzhiyun			emmc_bus8: emmc-bus8 {
1333*4882a593Smuzhiyun				rockchip,pins = <1 RK_PD0 2 &pcfg_pull_default>,
1334*4882a593Smuzhiyun						<1 RK_PD1 2 &pcfg_pull_default>,
1335*4882a593Smuzhiyun						<1 RK_PD2 2 &pcfg_pull_default>,
1336*4882a593Smuzhiyun						<1 RK_PD3 2 &pcfg_pull_default>,
1337*4882a593Smuzhiyun						<1 RK_PD4 2 &pcfg_pull_default>,
1338*4882a593Smuzhiyun						<1 RK_PD5 2 &pcfg_pull_default>,
1339*4882a593Smuzhiyun						<1 RK_PD6 2 &pcfg_pull_default>,
1340*4882a593Smuzhiyun						<1 RK_PD7 2 &pcfg_pull_default>;
1341*4882a593Smuzhiyun			};
1342*4882a593Smuzhiyun		};
1343*4882a593Smuzhiyun
1344*4882a593Smuzhiyun		i2c0 {
1345*4882a593Smuzhiyun			i2c0_xfer: i2c0-xfer {
1346*4882a593Smuzhiyun				rockchip,pins = <0 RK_PA0 1 &pcfg_pull_none>,
1347*4882a593Smuzhiyun						<0 RK_PA1 1 &pcfg_pull_none>;
1348*4882a593Smuzhiyun			};
1349*4882a593Smuzhiyun		};
1350*4882a593Smuzhiyun
1351*4882a593Smuzhiyun		i2c1 {
1352*4882a593Smuzhiyun			i2c1_xfer: i2c1-xfer {
1353*4882a593Smuzhiyun				rockchip,pins = <0 RK_PA2 1 &pcfg_pull_none>,
1354*4882a593Smuzhiyun						<0 RK_PA3 1 &pcfg_pull_none>;
1355*4882a593Smuzhiyun			};
1356*4882a593Smuzhiyun		};
1357*4882a593Smuzhiyun
1358*4882a593Smuzhiyun		i2c2 {
1359*4882a593Smuzhiyun			i2c2_xfer: i2c2-xfer {
1360*4882a593Smuzhiyun				rockchip,pins = <2 RK_PC4 3 &pcfg_pull_none>,
1361*4882a593Smuzhiyun						<2 RK_PC5 3 &pcfg_pull_none>;
1362*4882a593Smuzhiyun			};
1363*4882a593Smuzhiyun		};
1364*4882a593Smuzhiyun
1365*4882a593Smuzhiyun		i2c3 {
1366*4882a593Smuzhiyun			i2c3_xfer: i2c3-xfer {
1367*4882a593Smuzhiyun				rockchip,pins = <0 RK_PA6 1 &pcfg_pull_none>,
1368*4882a593Smuzhiyun						<0 RK_PA7 1 &pcfg_pull_none>;
1369*4882a593Smuzhiyun			};
1370*4882a593Smuzhiyun		};
1371*4882a593Smuzhiyun
1372*4882a593Smuzhiyun		lcdc {
1373*4882a593Smuzhiyun			lcdc_rgb_pins: lcdc-rgb-pins {
1374*4882a593Smuzhiyun				rockchip,pins =
1375*4882a593Smuzhiyun					<2 RK_PB0 1 &pcfg_pull_none>,	/* LCDC_DCLK */
1376*4882a593Smuzhiyun					<2 RK_PB1 1 &pcfg_pull_none>,	/* LCDC_HSYNC */
1377*4882a593Smuzhiyun					<2 RK_PB2 1 &pcfg_pull_none>,	/* LCDC_VSYNC */
1378*4882a593Smuzhiyun					<2 RK_PB3 1 &pcfg_pull_none>,	/* LCDC_DEN */
1379*4882a593Smuzhiyun					<2 RK_PB4 1 &pcfg_pull_none>,	/* LCDC_DATA10 */
1380*4882a593Smuzhiyun					<2 RK_PB5 1 &pcfg_pull_none>,	/* LCDC_DATA11 */
1381*4882a593Smuzhiyun					<2 RK_PB6 1 &pcfg_pull_none>,	/* LCDC_DATA12 */
1382*4882a593Smuzhiyun					<2 RK_PB7 1 &pcfg_pull_none>,	/* LCDC_DATA13 */
1383*4882a593Smuzhiyun					<2 RK_PC0 1 &pcfg_pull_none>,	/* LCDC_DATA14 */
1384*4882a593Smuzhiyun					<2 RK_PC1 1 &pcfg_pull_none>,	/* LCDC_DATA15 */
1385*4882a593Smuzhiyun					<2 RK_PC2 1 &pcfg_pull_none>,	/* LCDC_DATA16 */
1386*4882a593Smuzhiyun					<2 RK_PC3 1 &pcfg_pull_none>,	/* LCDC_DATA17 */
1387*4882a593Smuzhiyun					<2 RK_PC4 1 &pcfg_pull_none>,	/* LCDC_DATA18 */
1388*4882a593Smuzhiyun					<2 RK_PC5 1 &pcfg_pull_none>,	/* LCDC_DATA19 */
1389*4882a593Smuzhiyun					<2 RK_PC6 1 &pcfg_pull_none>,	/* LCDC_DATA20 */
1390*4882a593Smuzhiyun					<2 RK_PC7 1 &pcfg_pull_none>,	/* LCDC_DATA21 */
1391*4882a593Smuzhiyun					<2 RK_PD0 1 &pcfg_pull_none>,	/* LCDC_DATA22 */
1392*4882a593Smuzhiyun					<2 RK_PD1 1 &pcfg_pull_none>;	/* LCDC_DATA23 */
1393*4882a593Smuzhiyun			};
1394*4882a593Smuzhiyun
1395*4882a593Smuzhiyun			lcdc_sleep_pins: lcdc-sleep-pins {
1396*4882a593Smuzhiyun				rockchip,pins =
1397*4882a593Smuzhiyun					<2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DCLK */
1398*4882a593Smuzhiyun					<2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_HSYNC */
1399*4882a593Smuzhiyun					<2 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_VSYNC */
1400*4882a593Smuzhiyun					<2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DEN */
1401*4882a593Smuzhiyun					<2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DATA10 */
1402*4882a593Smuzhiyun					<2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DATA11 */
1403*4882a593Smuzhiyun					<2 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DATA12 */
1404*4882a593Smuzhiyun					<2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DATA13 */
1405*4882a593Smuzhiyun					<2 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DATA14 */
1406*4882a593Smuzhiyun					<2 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DATA15 */
1407*4882a593Smuzhiyun					<2 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DATA16 */
1408*4882a593Smuzhiyun					<2 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DATA17 */
1409*4882a593Smuzhiyun					<2 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DATA18 */
1410*4882a593Smuzhiyun					<2 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DATA19 */
1411*4882a593Smuzhiyun					<2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DATA20 */
1412*4882a593Smuzhiyun					<2 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DATA21 */
1413*4882a593Smuzhiyun					<2 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>,	/* LCDC_DATA22 */
1414*4882a593Smuzhiyun					<2 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;	/* LCDC_DATA23 */
1415*4882a593Smuzhiyun			};
1416*4882a593Smuzhiyun		};
1417*4882a593Smuzhiyun
1418*4882a593Smuzhiyun		uart0 {
1419*4882a593Smuzhiyun			uart0_xfer: uart0-xfer {
1420*4882a593Smuzhiyun				rockchip,pins = <2 RK_PD2 2 &pcfg_pull_default>,
1421*4882a593Smuzhiyun						<2 RK_PD3 2 &pcfg_pull_none>;
1422*4882a593Smuzhiyun			};
1423*4882a593Smuzhiyun
1424*4882a593Smuzhiyun			uart0_cts: uart0-cts {
1425*4882a593Smuzhiyun				rockchip,pins = <2 RK_PD5 2 &pcfg_pull_none>;
1426*4882a593Smuzhiyun			};
1427*4882a593Smuzhiyun
1428*4882a593Smuzhiyun			uart0_rts: uart0-rts {
1429*4882a593Smuzhiyun				rockchip,pins = <0 RK_PC1 2 &pcfg_pull_none>;
1430*4882a593Smuzhiyun			};
1431*4882a593Smuzhiyun		};
1432*4882a593Smuzhiyun
1433*4882a593Smuzhiyun		uart1 {
1434*4882a593Smuzhiyun			uart1_xfer: uart1-xfer {
1435*4882a593Smuzhiyun				rockchip,pins = <1 RK_PB1 2 &pcfg_pull_default>,
1436*4882a593Smuzhiyun						<1 RK_PB2 2 &pcfg_pull_default>;
1437*4882a593Smuzhiyun			};
1438*4882a593Smuzhiyun
1439*4882a593Smuzhiyun			uart1_cts: uart1-cts {
1440*4882a593Smuzhiyun				rockchip,pins = <1 RK_PB0 2 &pcfg_pull_none>;
1441*4882a593Smuzhiyun			};
1442*4882a593Smuzhiyun
1443*4882a593Smuzhiyun			uart1_rts: uart1-rts {
1444*4882a593Smuzhiyun				rockchip,pins = <1 RK_PB3 2 &pcfg_pull_none>;
1445*4882a593Smuzhiyun			};
1446*4882a593Smuzhiyun		};
1447*4882a593Smuzhiyun
1448*4882a593Smuzhiyun		uart2 {
1449*4882a593Smuzhiyun			uart2_xfer: uart2-xfer {
1450*4882a593Smuzhiyun				rockchip,pins = <1 RK_PC2 2 &pcfg_pull_default>,
1451*4882a593Smuzhiyun						<1 RK_PC3 2 &pcfg_pull_none>;
1452*4882a593Smuzhiyun			};
1453*4882a593Smuzhiyun
1454*4882a593Smuzhiyun			uart2_cts: uart2-cts {
1455*4882a593Smuzhiyun				rockchip,pins = <0 RK_PD1 1 &pcfg_pull_none>;
1456*4882a593Smuzhiyun			};
1457*4882a593Smuzhiyun
1458*4882a593Smuzhiyun			uart2_rts: uart2-rts {
1459*4882a593Smuzhiyun				rockchip,pins = <0 RK_PD0 1 &pcfg_pull_none>;
1460*4882a593Smuzhiyun			};
1461*4882a593Smuzhiyun		};
1462*4882a593Smuzhiyun
1463*4882a593Smuzhiyun		sdmmc {
1464*4882a593Smuzhiyun			sdmmc_clk: sdmmc-clk {
1465*4882a593Smuzhiyun				rockchip,pins = <1 RK_PC0 1 &pcfg_pull_none>;
1466*4882a593Smuzhiyun			};
1467*4882a593Smuzhiyun
1468*4882a593Smuzhiyun			sdmmc_det: sdmmc-det {
1469*4882a593Smuzhiyun				rockchip,pins = <1 RK_PC1 1 &pcfg_pull_none>;
1470*4882a593Smuzhiyun			};
1471*4882a593Smuzhiyun
1472*4882a593Smuzhiyun			sdmmc_cmd: sdmmc-cmd {
1473*4882a593Smuzhiyun				rockchip,pins = <1 RK_PB7 1 &pcfg_pull_default>;
1474*4882a593Smuzhiyun			};
1475*4882a593Smuzhiyun
1476*4882a593Smuzhiyun			sdmmc_wp: sdmmc-wp {
1477*4882a593Smuzhiyun				rockchip,pins = <1 RK_PA7 1 &pcfg_pull_default>;
1478*4882a593Smuzhiyun			};
1479*4882a593Smuzhiyun
1480*4882a593Smuzhiyun			sdmmc_pwren: sdmmc-pwren {
1481*4882a593Smuzhiyun				rockchip,pins = <1 RK_PB6 1 &pcfg_pull_default>;
1482*4882a593Smuzhiyun			};
1483*4882a593Smuzhiyun
1484*4882a593Smuzhiyun			sdmmc_bus4: sdmmc-bus4 {
1485*4882a593Smuzhiyun				rockchip,pins = <1 RK_PC2 1 &pcfg_pull_default>,
1486*4882a593Smuzhiyun						<1 RK_PC3 1 &pcfg_pull_default>,
1487*4882a593Smuzhiyun						<1 RK_PC4 1 &pcfg_pull_default>,
1488*4882a593Smuzhiyun						<1 RK_PC5 1 &pcfg_pull_default>;
1489*4882a593Smuzhiyun			};
1490*4882a593Smuzhiyun		};
1491*4882a593Smuzhiyun
1492*4882a593Smuzhiyun		sdio {
1493*4882a593Smuzhiyun			sdio_clk: sdio-clk {
1494*4882a593Smuzhiyun				rockchip,pins = <1 RK_PA0 2 &pcfg_pull_none>;
1495*4882a593Smuzhiyun			};
1496*4882a593Smuzhiyun
1497*4882a593Smuzhiyun			sdio_cmd: sdio-cmd {
1498*4882a593Smuzhiyun				rockchip,pins = <0 RK_PA3 2 &pcfg_pull_default>;
1499*4882a593Smuzhiyun			};
1500*4882a593Smuzhiyun
1501*4882a593Smuzhiyun			sdio_pwren: sdio-pwren {
1502*4882a593Smuzhiyun				rockchip,pins = <0 RK_PD6 1 &pcfg_pull_default>;
1503*4882a593Smuzhiyun			};
1504*4882a593Smuzhiyun
1505*4882a593Smuzhiyun			sdio_bus4: sdio-bus4 {
1506*4882a593Smuzhiyun				rockchip,pins = <1 RK_PA1 2 &pcfg_pull_default>,
1507*4882a593Smuzhiyun						<1 RK_PA2 2 &pcfg_pull_default>,
1508*4882a593Smuzhiyun						<1 RK_PA4 2 &pcfg_pull_default>,
1509*4882a593Smuzhiyun						<1 RK_PA5 2 &pcfg_pull_default>;
1510*4882a593Smuzhiyun			};
1511*4882a593Smuzhiyun		};
1512*4882a593Smuzhiyun
1513*4882a593Smuzhiyun		hdmi {
1514*4882a593Smuzhiyun			hdmii2c_xfer: hdmii2c-xfer {
1515*4882a593Smuzhiyun				rockchip,pins = <0 RK_PA6 2 &pcfg_pull_none>,
1516*4882a593Smuzhiyun						<0 RK_PA7 2 &pcfg_pull_none>;
1517*4882a593Smuzhiyun			};
1518*4882a593Smuzhiyun
1519*4882a593Smuzhiyun			hdmi_hpd: hdmi-hpd {
1520*4882a593Smuzhiyun				rockchip,pins = <0 RK_PB7 1 &pcfg_pull_none>;
1521*4882a593Smuzhiyun			};
1522*4882a593Smuzhiyun
1523*4882a593Smuzhiyun			hdmi_cec: hdmi-cec {
1524*4882a593Smuzhiyun				rockchip,pins = <0 RK_PC4 1 &pcfg_pull_none>;
1525*4882a593Smuzhiyun			};
1526*4882a593Smuzhiyun		};
1527*4882a593Smuzhiyun
1528*4882a593Smuzhiyun		i2s {
1529*4882a593Smuzhiyun			i2s_bus: i2s-bus {
1530*4882a593Smuzhiyun				rockchip,pins = <0 RK_PB0 1 &pcfg_pull_none>,
1531*4882a593Smuzhiyun						<0 RK_PB1 1 &pcfg_pull_none>,
1532*4882a593Smuzhiyun						<0 RK_PB3 1 &pcfg_pull_none>,
1533*4882a593Smuzhiyun						<0 RK_PB4 1 &pcfg_pull_none>,
1534*4882a593Smuzhiyun						<0 RK_PB5 1 &pcfg_pull_none>,
1535*4882a593Smuzhiyun						<0 RK_PB6 1 &pcfg_pull_none>;
1536*4882a593Smuzhiyun			};
1537*4882a593Smuzhiyun
1538*4882a593Smuzhiyun			i2s1_bus: i2s1-bus {
1539*4882a593Smuzhiyun				rockchip,pins = <1 RK_PA0 1 &pcfg_pull_none>,
1540*4882a593Smuzhiyun						<1 RK_PA1 1 &pcfg_pull_none>,
1541*4882a593Smuzhiyun						<1 RK_PA2 1 &pcfg_pull_none>,
1542*4882a593Smuzhiyun						<1 RK_PA3 1 &pcfg_pull_none>,
1543*4882a593Smuzhiyun						<1 RK_PA4 1 &pcfg_pull_none>,
1544*4882a593Smuzhiyun						<1 RK_PA5 1 &pcfg_pull_none>;
1545*4882a593Smuzhiyun			};
1546*4882a593Smuzhiyun		};
1547*4882a593Smuzhiyun
1548*4882a593Smuzhiyun		pwm0 {
1549*4882a593Smuzhiyun			pwm0_pin: pwm0-pin {
1550*4882a593Smuzhiyun				rockchip,pins = <0 RK_PD2 1 &pcfg_pull_none>;
1551*4882a593Smuzhiyun			};
1552*4882a593Smuzhiyun		};
1553*4882a593Smuzhiyun
1554*4882a593Smuzhiyun		pwm1 {
1555*4882a593Smuzhiyun			pwm1_pin: pwm1-pin {
1556*4882a593Smuzhiyun				rockchip,pins = <0 RK_PD3 1 &pcfg_pull_none>;
1557*4882a593Smuzhiyun			};
1558*4882a593Smuzhiyun		};
1559*4882a593Smuzhiyun
1560*4882a593Smuzhiyun		pwm2 {
1561*4882a593Smuzhiyun			pwm2_pin: pwm2-pin {
1562*4882a593Smuzhiyun				rockchip,pins = <0 RK_PD4 1 &pcfg_pull_none>;
1563*4882a593Smuzhiyun			};
1564*4882a593Smuzhiyun		};
1565*4882a593Smuzhiyun
1566*4882a593Smuzhiyun		pwm3 {
1567*4882a593Smuzhiyun			pwm3_pin: pwm3-pin {
1568*4882a593Smuzhiyun				rockchip,pins = <3 RK_PD2 1 &pcfg_pull_none>;
1569*4882a593Smuzhiyun			};
1570*4882a593Smuzhiyun		};
1571*4882a593Smuzhiyun
1572*4882a593Smuzhiyun		gmac {
1573*4882a593Smuzhiyun			rgmii_pins: rgmii-pins {
1574*4882a593Smuzhiyun				rockchip,pins = <2 RK_PB0 3 &pcfg_pull_default>,
1575*4882a593Smuzhiyun						<2 RK_PB1 3 &pcfg_pull_default>,
1576*4882a593Smuzhiyun						<2 RK_PB3 3 &pcfg_pull_default>,
1577*4882a593Smuzhiyun						<2 RK_PB4 3 &pcfg_pull_default>,
1578*4882a593Smuzhiyun						<2 RK_PB5 3 &pcfg_pull_default>,
1579*4882a593Smuzhiyun						<2 RK_PB6 3 &pcfg_pull_default>,
1580*4882a593Smuzhiyun						<2 RK_PC0 3 &pcfg_pull_default>,
1581*4882a593Smuzhiyun						<2 RK_PC1 3 &pcfg_pull_default>,
1582*4882a593Smuzhiyun						<2 RK_PC2 3 &pcfg_pull_default>,
1583*4882a593Smuzhiyun						<2 RK_PC3 3 &pcfg_pull_default>,
1584*4882a593Smuzhiyun						<2 RK_PD1 3 &pcfg_pull_default>,
1585*4882a593Smuzhiyun						<2 RK_PC4 4 &pcfg_pull_default>,
1586*4882a593Smuzhiyun						<2 RK_PC5 4 &pcfg_pull_default>,
1587*4882a593Smuzhiyun						<2 RK_PC6 4 &pcfg_pull_default>,
1588*4882a593Smuzhiyun						<2 RK_PC7 4 &pcfg_pull_default>;
1589*4882a593Smuzhiyun			};
1590*4882a593Smuzhiyun
1591*4882a593Smuzhiyun			rmii_pins: rmii-pins {
1592*4882a593Smuzhiyun				rockchip,pins = <2 RK_PB0 3 &pcfg_pull_default>,
1593*4882a593Smuzhiyun						<2 RK_PB4 3 &pcfg_pull_default>,
1594*4882a593Smuzhiyun						<2 RK_PB5 3 &pcfg_pull_default>,
1595*4882a593Smuzhiyun						<2 RK_PB6 3 &pcfg_pull_default>,
1596*4882a593Smuzhiyun						<2 RK_PB7 3 &pcfg_pull_default>,
1597*4882a593Smuzhiyun						<2 RK_PC0 3 &pcfg_pull_default>,
1598*4882a593Smuzhiyun						<2 RK_PC1 3 &pcfg_pull_default>,
1599*4882a593Smuzhiyun						<2 RK_PC2 3 &pcfg_pull_default>,
1600*4882a593Smuzhiyun						<2 RK_PC3 3 &pcfg_pull_default>,
1601*4882a593Smuzhiyun						<2 RK_PD1 3 &pcfg_pull_default>;
1602*4882a593Smuzhiyun			};
1603*4882a593Smuzhiyun		};
1604*4882a593Smuzhiyun
1605*4882a593Smuzhiyun		spdif {
1606*4882a593Smuzhiyun			spdif_tx: spdif-tx {
1607*4882a593Smuzhiyun				rockchip,pins = <3 RK_PD3 1 &pcfg_pull_none>;
1608*4882a593Smuzhiyun			};
1609*4882a593Smuzhiyun		};
1610*4882a593Smuzhiyun
1611*4882a593Smuzhiyun		spi0 {
1612*4882a593Smuzhiyun			spi0m0_clk: spi0m0-clk {
1613*4882a593Smuzhiyun				rockchip,pins = <1 RK_PB0 1 &pcfg_pull_default>;
1614*4882a593Smuzhiyun			};
1615*4882a593Smuzhiyun
1616*4882a593Smuzhiyun			spi0m0_cs0: spi0m0-cs0 {
1617*4882a593Smuzhiyun				rockchip,pins = <1 RK_PB3 1 &pcfg_pull_default>;
1618*4882a593Smuzhiyun			};
1619*4882a593Smuzhiyun
1620*4882a593Smuzhiyun			spi0m0_tx: spi0m0-tx {
1621*4882a593Smuzhiyun				rockchip,pins = <1 RK_PB1 1 &pcfg_pull_default>;
1622*4882a593Smuzhiyun			};
1623*4882a593Smuzhiyun
1624*4882a593Smuzhiyun			spi0m0_rx: spi0m0-rx {
1625*4882a593Smuzhiyun				rockchip,pins = <1 RK_PB2 1 &pcfg_pull_default>;
1626*4882a593Smuzhiyun			};
1627*4882a593Smuzhiyun
1628*4882a593Smuzhiyun			spi0m0_cs1: spi0m0-cs1 {
1629*4882a593Smuzhiyun				rockchip,pins = <1 RK_PB4 1 &pcfg_pull_default>;
1630*4882a593Smuzhiyun			};
1631*4882a593Smuzhiyun
1632*4882a593Smuzhiyun			spi0m1_clk: spi0m1-clk {
1633*4882a593Smuzhiyun				rockchip,pins = <2 RK_PA0 2 &pcfg_pull_default>;
1634*4882a593Smuzhiyun			};
1635*4882a593Smuzhiyun
1636*4882a593Smuzhiyun			spi0m1_cs0: spi0m1-cs0 {
1637*4882a593Smuzhiyun				rockchip,pins = <1 RK_PD6 3 &pcfg_pull_default>;
1638*4882a593Smuzhiyun			};
1639*4882a593Smuzhiyun
1640*4882a593Smuzhiyun			spi0m1_tx: spi0m1-tx {
1641*4882a593Smuzhiyun				rockchip,pins = <1 RK_PD5 3 &pcfg_pull_default>;
1642*4882a593Smuzhiyun			};
1643*4882a593Smuzhiyun
1644*4882a593Smuzhiyun			spi0m1_rx: spi0m1-rx {
1645*4882a593Smuzhiyun				rockchip,pins = <1 RK_PD4 3 &pcfg_pull_default>;
1646*4882a593Smuzhiyun			};
1647*4882a593Smuzhiyun
1648*4882a593Smuzhiyun			spi0m1_cs1: spi0m1-cs1 {
1649*4882a593Smuzhiyun				rockchip,pins = <1 RK_PD7 3 &pcfg_pull_default>;
1650*4882a593Smuzhiyun			};
1651*4882a593Smuzhiyun
1652*4882a593Smuzhiyun			spi0m2_clk: spi0m2-clk {
1653*4882a593Smuzhiyun				rockchip,pins = <0 RK_PB1 2 &pcfg_pull_default>;
1654*4882a593Smuzhiyun			};
1655*4882a593Smuzhiyun
1656*4882a593Smuzhiyun			spi0m2_cs0: spi0m2-cs0 {
1657*4882a593Smuzhiyun				rockchip,pins = <0 RK_PB6 2 &pcfg_pull_default>;
1658*4882a593Smuzhiyun			};
1659*4882a593Smuzhiyun
1660*4882a593Smuzhiyun			spi0m2_tx: spi0m2-tx {
1661*4882a593Smuzhiyun				rockchip,pins = <0 RK_PB3 2 &pcfg_pull_default>;
1662*4882a593Smuzhiyun			};
1663*4882a593Smuzhiyun
1664*4882a593Smuzhiyun			spi0m2_rx: spi0m2-rx {
1665*4882a593Smuzhiyun				rockchip,pins = <0 RK_PB5 2 &pcfg_pull_default>;
1666*4882a593Smuzhiyun			};
1667*4882a593Smuzhiyun		};
1668*4882a593Smuzhiyun	};
1669*4882a593Smuzhiyun};
1670