xref: /OK3568_Linux_fs/kernel/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Copyright (c) 2020 Rockchip Electronics Co., Ltd.
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun */
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun/dts-v1/;
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h>
10*4882a593Smuzhiyun#include <dt-bindings/display/media-bus-format.h>
11*4882a593Smuzhiyun#include <dt-bindings/pinctrl/rockchip.h>
12*4882a593Smuzhiyun#include "rk3566.dtsi"
13*4882a593Smuzhiyun#include "rk3566-evb.dtsi"
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun/ {
16*4882a593Smuzhiyun	model = "Rockchip RK3566 EVB2 LP4X V10 Board";
17*4882a593Smuzhiyun	compatible = "rockchip,rk3566-evb2-lp4x-v10", "rockchip,rk3566";
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun	vcc_camera: vcc-camera-regulator {
20*4882a593Smuzhiyun		compatible = "regulator-fixed";
21*4882a593Smuzhiyun		gpio = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>;
22*4882a593Smuzhiyun		pinctrl-names = "default";
23*4882a593Smuzhiyun		pinctrl-0 = <&camera_pwr>;
24*4882a593Smuzhiyun		regulator-name = "vcc_camera";
25*4882a593Smuzhiyun		enable-active-high;
26*4882a593Smuzhiyun		regulator-always-on;
27*4882a593Smuzhiyun		regulator-boot-on;
28*4882a593Smuzhiyun	};
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun	vcc3v3_pcie: gpio-regulator {
31*4882a593Smuzhiyun		compatible = "regulator-fixed";
32*4882a593Smuzhiyun		regulator-name = "vcc3v3_pcie";
33*4882a593Smuzhiyun		regulator-min-microvolt = <3300000>;
34*4882a593Smuzhiyun		regulator-max-microvolt = <3300000>;
35*4882a593Smuzhiyun		enable-active-high;
36*4882a593Smuzhiyun		gpio = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>;
37*4882a593Smuzhiyun		startup-delay-us = <5000>;
38*4882a593Smuzhiyun		vin-supply = <&dc_12v>;
39*4882a593Smuzhiyun	};
40*4882a593Smuzhiyun};
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun&bt_sound {
43*4882a593Smuzhiyun	status = "disabled";
44*4882a593Smuzhiyun	simple-audio-card,cpu {
45*4882a593Smuzhiyun		sound-dai = <&i2s2_2ch>;
46*4882a593Smuzhiyun	};
47*4882a593Smuzhiyun};
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun&combphy1_usq {
50*4882a593Smuzhiyun	status = "okay";
51*4882a593Smuzhiyun};
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun&combphy2_psq {
54*4882a593Smuzhiyun	status = "okay";
55*4882a593Smuzhiyun};
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun&csi2_dphy_hw {
58*4882a593Smuzhiyun	status = "okay";
59*4882a593Smuzhiyun};
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun&csi2_dphy0 {
62*4882a593Smuzhiyun	status = "okay";
63*4882a593Smuzhiyun	/*
64*4882a593Smuzhiyun	 * dphy0 only used for full mode,
65*4882a593Smuzhiyun	 * full mode and split mode are mutually exclusive
66*4882a593Smuzhiyun	 */
67*4882a593Smuzhiyun	ports {
68*4882a593Smuzhiyun		#address-cells = <1>;
69*4882a593Smuzhiyun		#size-cells = <0>;
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun		port@0 {
72*4882a593Smuzhiyun			reg = <0>;
73*4882a593Smuzhiyun			#address-cells = <1>;
74*4882a593Smuzhiyun			#size-cells = <0>;
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun			dphy0_in: endpoint@1 {
77*4882a593Smuzhiyun				reg = <1>;
78*4882a593Smuzhiyun				remote-endpoint = <&gc8034_out>;
79*4882a593Smuzhiyun				data-lanes = <1 2 3 4>;
80*4882a593Smuzhiyun			};
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun			mipi_in_ucam1: endpoint@2 {
83*4882a593Smuzhiyun				reg = <2>;
84*4882a593Smuzhiyun				remote-endpoint = <&ov5695_out>;
85*4882a593Smuzhiyun				data-lanes = <1 2>;
86*4882a593Smuzhiyun			};
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun			mipi_in_ucam2: endpoint@3 {
89*4882a593Smuzhiyun				reg = <3>;
90*4882a593Smuzhiyun				remote-endpoint = <&gc5025_out>;
91*4882a593Smuzhiyun				data-lanes = <1 2>;
92*4882a593Smuzhiyun			};
93*4882a593Smuzhiyun		};
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun		port@1 {
96*4882a593Smuzhiyun			reg = <1>;
97*4882a593Smuzhiyun			#address-cells = <1>;
98*4882a593Smuzhiyun			#size-cells = <0>;
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun			dphy0_out: endpoint@1 {
101*4882a593Smuzhiyun				reg = <1>;
102*4882a593Smuzhiyun				remote-endpoint = <&isp0_in_dphy0>;
103*4882a593Smuzhiyun			};
104*4882a593Smuzhiyun		};
105*4882a593Smuzhiyun	};
106*4882a593Smuzhiyun};
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun&csi2_dphy1 {
109*4882a593Smuzhiyun	status = "disabled";
110*4882a593Smuzhiyun
111*4882a593Smuzhiyun	/*
112*4882a593Smuzhiyun	 * dphy1 only used for split mode,
113*4882a593Smuzhiyun	 * can be used  concurrently  with dphy2
114*4882a593Smuzhiyun	 * full mode and split mode are mutually exclusive
115*4882a593Smuzhiyun	 */
116*4882a593Smuzhiyun	ports {
117*4882a593Smuzhiyun		#address-cells = <1>;
118*4882a593Smuzhiyun		#size-cells = <0>;
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun		port@0 {
121*4882a593Smuzhiyun			reg = <0>;
122*4882a593Smuzhiyun			#address-cells = <1>;
123*4882a593Smuzhiyun			#size-cells = <0>;
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun			dphy1_in: endpoint@1 {
126*4882a593Smuzhiyun				reg = <1>;
127*4882a593Smuzhiyun				//remote-endpoint = <&ov5695_out>;
128*4882a593Smuzhiyun				data-lanes = <1 2>;
129*4882a593Smuzhiyun			};
130*4882a593Smuzhiyun		};
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun		port@1 {
133*4882a593Smuzhiyun			reg = <1>;
134*4882a593Smuzhiyun			#address-cells = <1>;
135*4882a593Smuzhiyun			#size-cells = <0>;
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun			dphy1_out: endpoint@1 {
138*4882a593Smuzhiyun				reg = <1>;
139*4882a593Smuzhiyun				remote-endpoint = <&isp0_in>;
140*4882a593Smuzhiyun			};
141*4882a593Smuzhiyun		};
142*4882a593Smuzhiyun	};
143*4882a593Smuzhiyun};
144*4882a593Smuzhiyun
145*4882a593Smuzhiyun&csi2_dphy2 {
146*4882a593Smuzhiyun	status = "disabled";
147*4882a593Smuzhiyun
148*4882a593Smuzhiyun	/*
149*4882a593Smuzhiyun	 * dphy2 only used for split mode,
150*4882a593Smuzhiyun	 * can be used  concurrently  with dphy1
151*4882a593Smuzhiyun	 * full mode and split mode are mutually exclusive
152*4882a593Smuzhiyun	 */
153*4882a593Smuzhiyun	ports {
154*4882a593Smuzhiyun		#address-cells = <1>;
155*4882a593Smuzhiyun		#size-cells = <0>;
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun		port@0 {
158*4882a593Smuzhiyun			reg = <0>;
159*4882a593Smuzhiyun			#address-cells = <1>;
160*4882a593Smuzhiyun			#size-cells = <0>;
161*4882a593Smuzhiyun
162*4882a593Smuzhiyun			dphy2_in: endpoint@1 {
163*4882a593Smuzhiyun				reg = <1>;
164*4882a593Smuzhiyun				//remote-endpoint = <&gc5025_out>;
165*4882a593Smuzhiyun				data-lanes = <1 2>;
166*4882a593Smuzhiyun			};
167*4882a593Smuzhiyun		};
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun		port@1 {
170*4882a593Smuzhiyun			reg = <1>;
171*4882a593Smuzhiyun			#address-cells = <1>;
172*4882a593Smuzhiyun			#size-cells = <0>;
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun			dphy2_out: endpoint@1 {
175*4882a593Smuzhiyun				reg = <1>;
176*4882a593Smuzhiyun				remote-endpoint = <&mipi_csi2_input>;
177*4882a593Smuzhiyun			};
178*4882a593Smuzhiyun		};
179*4882a593Smuzhiyun	};
180*4882a593Smuzhiyun};
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun/*
183*4882a593Smuzhiyun * video_phy0 needs to be enabled
184*4882a593Smuzhiyun * when dsi0 is enabled
185*4882a593Smuzhiyun */
186*4882a593Smuzhiyun&dsi0 {
187*4882a593Smuzhiyun	status = "okay";
188*4882a593Smuzhiyun};
189*4882a593Smuzhiyun
190*4882a593Smuzhiyun&dsi0_in_vp0 {
191*4882a593Smuzhiyun	status = "disabled";
192*4882a593Smuzhiyun};
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun&dsi0_in_vp1 {
195*4882a593Smuzhiyun	status = "okay";
196*4882a593Smuzhiyun};
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun&dsi0_panel {
199*4882a593Smuzhiyun	power-supply = <&vcc3v3_lcd0_n>;
200*4882a593Smuzhiyun	reset-gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_LOW>;
201*4882a593Smuzhiyun	pinctrl-names = "default";
202*4882a593Smuzhiyun	pinctrl-0 = <&lcd0_rst_gpio>;
203*4882a593Smuzhiyun};
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun/*
206*4882a593Smuzhiyun * video_phy1 needs to be enabled
207*4882a593Smuzhiyun * when dsi1 is enabled
208*4882a593Smuzhiyun */
209*4882a593Smuzhiyun&dsi1 {
210*4882a593Smuzhiyun	status = "disabled";
211*4882a593Smuzhiyun};
212*4882a593Smuzhiyun
213*4882a593Smuzhiyun&dsi1_in_vp0 {
214*4882a593Smuzhiyun	status = "disabled";
215*4882a593Smuzhiyun};
216*4882a593Smuzhiyun
217*4882a593Smuzhiyun&dsi1_in_vp1 {
218*4882a593Smuzhiyun	status = "disabled";
219*4882a593Smuzhiyun};
220*4882a593Smuzhiyun
221*4882a593Smuzhiyun&dsi1_panel {
222*4882a593Smuzhiyun	power-supply = <&vcc3v3_lcd1_n>;
223*4882a593Smuzhiyun	reset-gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_LOW>;
224*4882a593Smuzhiyun	pinctrl-names = "default";
225*4882a593Smuzhiyun	pinctrl-0 = <&lcd1_rst_gpio>;
226*4882a593Smuzhiyun};
227*4882a593Smuzhiyun
228*4882a593Smuzhiyun&gmac1 {
229*4882a593Smuzhiyun	phy-mode = "rgmii";
230*4882a593Smuzhiyun	clock_in_out = "output";
231*4882a593Smuzhiyun
232*4882a593Smuzhiyun	snps,reset-gpio = <&gpio3 RK_PC2 GPIO_ACTIVE_LOW>;
233*4882a593Smuzhiyun	snps,reset-active-low;
234*4882a593Smuzhiyun	/* Reset time is 20ms, 100ms for rtl8211f */
235*4882a593Smuzhiyun	snps,reset-delays-us = <0 20000 100000>;
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
238*4882a593Smuzhiyun	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru CLK_MAC1_2TOP>;
239*4882a593Smuzhiyun	assigned-clock-rates = <0>, <125000000>;
240*4882a593Smuzhiyun
241*4882a593Smuzhiyun	pinctrl-names = "default";
242*4882a593Smuzhiyun	pinctrl-0 = <&gmac1m1_miim
243*4882a593Smuzhiyun		     &gmac1m1_tx_bus2
244*4882a593Smuzhiyun		     &gmac1m1_rx_bus2
245*4882a593Smuzhiyun		     &gmac1m1_rgmii_clk
246*4882a593Smuzhiyun		     &gmac1m1_rgmii_bus>;
247*4882a593Smuzhiyun
248*4882a593Smuzhiyun	tx_delay = <0x4f>;
249*4882a593Smuzhiyun	rx_delay = <0x25>;
250*4882a593Smuzhiyun
251*4882a593Smuzhiyun	phy-handle = <&rgmii_phy0>;
252*4882a593Smuzhiyun	status = "okay";
253*4882a593Smuzhiyun};
254*4882a593Smuzhiyun
255*4882a593Smuzhiyun&i2c2 {
256*4882a593Smuzhiyun	status = "okay";
257*4882a593Smuzhiyun	pinctrl-0 = <&i2c2m1_xfer>;
258*4882a593Smuzhiyun
259*4882a593Smuzhiyun	/* split mode: lane0/1 */
260*4882a593Smuzhiyun	ov5695: ov5695@36 {
261*4882a593Smuzhiyun		status = "okay";
262*4882a593Smuzhiyun		compatible = "ovti,ov5695";
263*4882a593Smuzhiyun		reg = <0x36>;
264*4882a593Smuzhiyun		clocks = <&cru CLK_CIF_OUT>;
265*4882a593Smuzhiyun		clock-names = "xvclk";
266*4882a593Smuzhiyun		power-domains = <&power RK3568_PD_VI>;
267*4882a593Smuzhiyun		pinctrl-names = "default";
268*4882a593Smuzhiyun		pinctrl-0 = <&cif_clk>;
269*4882a593Smuzhiyun		reset-gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_HIGH>;
270*4882a593Smuzhiyun		pwdn-gpios = <&gpio4 RK_PB2 GPIO_ACTIVE_HIGH>;
271*4882a593Smuzhiyun		/*power-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>;*/
272*4882a593Smuzhiyun		rockchip,camera-module-index = <0>;
273*4882a593Smuzhiyun		rockchip,camera-module-facing = "back";
274*4882a593Smuzhiyun		rockchip,camera-module-name = "TongJu";
275*4882a593Smuzhiyun		rockchip,camera-module-lens-name = "CHT842-MD";
276*4882a593Smuzhiyun		port {
277*4882a593Smuzhiyun			ov5695_out: endpoint {
278*4882a593Smuzhiyun				remote-endpoint = <&mipi_in_ucam1>;
279*4882a593Smuzhiyun				data-lanes = <1 2>;
280*4882a593Smuzhiyun			};
281*4882a593Smuzhiyun		};
282*4882a593Smuzhiyun	};
283*4882a593Smuzhiyun
284*4882a593Smuzhiyun	/* split mode: lane:2/3 */
285*4882a593Smuzhiyun	gc5025: gc5025@37 {
286*4882a593Smuzhiyun		status = "okay";
287*4882a593Smuzhiyun		compatible = "galaxycore,gc5025";
288*4882a593Smuzhiyun		reg = <0x37>;
289*4882a593Smuzhiyun		clocks = <&pmucru CLK_WIFI>;
290*4882a593Smuzhiyun		clock-names = "xvclk";
291*4882a593Smuzhiyun		pinctrl-names = "default";
292*4882a593Smuzhiyun		pinctrl-0 = <&refclk_pins>;
293*4882a593Smuzhiyun		reset-gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>;
294*4882a593Smuzhiyun		pwdn-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>;
295*4882a593Smuzhiyun		power-domains = <&power RK3568_PD_VI>;
296*4882a593Smuzhiyun		/*power-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>;*/
297*4882a593Smuzhiyun		rockchip,camera-module-index = <1>;
298*4882a593Smuzhiyun		rockchip,camera-module-facing = "front";
299*4882a593Smuzhiyun		rockchip,camera-module-name = "TongJu";
300*4882a593Smuzhiyun		rockchip,camera-module-lens-name = "CHT842-MD";
301*4882a593Smuzhiyun		port {
302*4882a593Smuzhiyun			gc5025_out: endpoint {
303*4882a593Smuzhiyun				remote-endpoint = <&mipi_in_ucam2>;
304*4882a593Smuzhiyun				data-lanes = <1 2>;
305*4882a593Smuzhiyun			};
306*4882a593Smuzhiyun		};
307*4882a593Smuzhiyun	};
308*4882a593Smuzhiyun
309*4882a593Smuzhiyun	/* full mode: lane0-3 */
310*4882a593Smuzhiyun	gc8034: gc8034@37 {
311*4882a593Smuzhiyun		compatible = "galaxycore,gc8034";
312*4882a593Smuzhiyun		status = "okay";
313*4882a593Smuzhiyun		reg = <0x37>;
314*4882a593Smuzhiyun		clocks = <&cru CLK_CIF_OUT>;
315*4882a593Smuzhiyun		clock-names = "xvclk";
316*4882a593Smuzhiyun		power-domains = <&power RK3568_PD_VI>;
317*4882a593Smuzhiyun		pinctrl-names = "default";
318*4882a593Smuzhiyun		pinctrl-0 = <&cif_clk>;
319*4882a593Smuzhiyun		reset-gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_LOW>;
320*4882a593Smuzhiyun		pwdn-gpios = <&gpio4 RK_PB2 GPIO_ACTIVE_LOW>;
321*4882a593Smuzhiyun		rockchip,camera-module-index = <0>;
322*4882a593Smuzhiyun		rockchip,camera-module-facing = "back";
323*4882a593Smuzhiyun		rockchip,camera-module-name = "RK-CMK-8M-2-v1";
324*4882a593Smuzhiyun		rockchip,camera-module-lens-name = "CK8401";
325*4882a593Smuzhiyun		port {
326*4882a593Smuzhiyun			gc8034_out: endpoint {
327*4882a593Smuzhiyun				remote-endpoint = <&dphy0_in>;
328*4882a593Smuzhiyun				data-lanes = <1 2 3 4>;
329*4882a593Smuzhiyun			};
330*4882a593Smuzhiyun		};
331*4882a593Smuzhiyun	};
332*4882a593Smuzhiyun};
333*4882a593Smuzhiyun
334*4882a593Smuzhiyun&i2c4 {
335*4882a593Smuzhiyun	/* i2c4 sda conflict with camera pwdn */
336*4882a593Smuzhiyun	status = "disabled";
337*4882a593Smuzhiyun
338*4882a593Smuzhiyun	/*
339*4882a593Smuzhiyun	 * gc2145 needs to be disabled,
340*4882a593Smuzhiyun	 * when gmac1 is enabled;
341*4882a593Smuzhiyun	 * pinctrl conflicts;
342*4882a593Smuzhiyun	 */
343*4882a593Smuzhiyun	gc2145: gc2145@3c {
344*4882a593Smuzhiyun		status = "disabled";
345*4882a593Smuzhiyun		compatible = "galaxycore,gc2145";
346*4882a593Smuzhiyun		reg = <0x3c>;
347*4882a593Smuzhiyun		clocks = <&cru CLK_CIF_OUT>;
348*4882a593Smuzhiyun		clock-names = "xvclk";
349*4882a593Smuzhiyun		power-domains = <&power RK3568_PD_VI>;
350*4882a593Smuzhiyun		pinctrl-names = "default";
351*4882a593Smuzhiyun		/* conflict with gmac1m1_rgmii_pins & cif_clk*/
352*4882a593Smuzhiyun		pinctrl-0 = <&cif_clk &cif_dvp_clk &cif_dvp_bus16>;
353*4882a593Smuzhiyun
354*4882a593Smuzhiyun		/*avdd-supply = <&vcc2v8_dvp>;*/
355*4882a593Smuzhiyun		/*dovdd-supply = <&vcc1v8_dvp>;*/
356*4882a593Smuzhiyun		/*dvdd-supply = <&vcc1v8_dvp>;*/
357*4882a593Smuzhiyun
358*4882a593Smuzhiyun		/*reset-gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>;*/
359*4882a593Smuzhiyun		pwdn-gpios = <&gpio4 RK_PA6 GPIO_ACTIVE_HIGH>;
360*4882a593Smuzhiyun		rockchip,camera-module-index = <0>;
361*4882a593Smuzhiyun		rockchip,camera-module-facing = "back";
362*4882a593Smuzhiyun		rockchip,camera-module-name = "CameraKing";
363*4882a593Smuzhiyun		rockchip,camera-module-lens-name = "Largan";
364*4882a593Smuzhiyun		port {
365*4882a593Smuzhiyun			gc2145_out: endpoint {
366*4882a593Smuzhiyun				remote-endpoint = <&dvp_in_bcam>;
367*4882a593Smuzhiyun			};
368*4882a593Smuzhiyun		};
369*4882a593Smuzhiyun	};
370*4882a593Smuzhiyun};
371*4882a593Smuzhiyun
372*4882a593Smuzhiyun&i2s2_2ch {
373*4882a593Smuzhiyun	pinctrl-0 = <&i2s2m0_sclktx &i2s2m0_lrcktx &i2s2m0_sdi &i2s2m0_sdo>;
374*4882a593Smuzhiyun	rockchip,bclk-fs = <32>;
375*4882a593Smuzhiyun	status = "disabled";
376*4882a593Smuzhiyun};
377*4882a593Smuzhiyun
378*4882a593Smuzhiyun&mdio1 {
379*4882a593Smuzhiyun	rgmii_phy0: phy@0 {
380*4882a593Smuzhiyun		compatible = "ethernet-phy-ieee802.3-c22";
381*4882a593Smuzhiyun		reg = <0x0>;
382*4882a593Smuzhiyun	};
383*4882a593Smuzhiyun};
384*4882a593Smuzhiyun
385*4882a593Smuzhiyun
386*4882a593Smuzhiyun
387*4882a593Smuzhiyun/*
388*4882a593Smuzhiyun * power-supply should switche to vcc3v3_lcd1_n
389*4882a593Smuzhiyun * when mipi panel is connected to dsi1.
390*4882a593Smuzhiyun */
391*4882a593Smuzhiyun&gt1x {
392*4882a593Smuzhiyun	power-supply = <&vcc3v3_lcd0_n>;
393*4882a593Smuzhiyun};
394*4882a593Smuzhiyun
395*4882a593Smuzhiyun&mipi_csi2 {
396*4882a593Smuzhiyun	status = "okay";
397*4882a593Smuzhiyun
398*4882a593Smuzhiyun	ports {
399*4882a593Smuzhiyun		#address-cells = <1>;
400*4882a593Smuzhiyun		#size-cells = <0>;
401*4882a593Smuzhiyun
402*4882a593Smuzhiyun		port@0 {
403*4882a593Smuzhiyun			reg = <0>;
404*4882a593Smuzhiyun			#address-cells = <1>;
405*4882a593Smuzhiyun			#size-cells = <0>;
406*4882a593Smuzhiyun
407*4882a593Smuzhiyun			mipi_csi2_input: endpoint@1 {
408*4882a593Smuzhiyun				reg = <1>;
409*4882a593Smuzhiyun				remote-endpoint = <&dphy2_out>;
410*4882a593Smuzhiyun				data-lanes = <1 2>;
411*4882a593Smuzhiyun			};
412*4882a593Smuzhiyun		};
413*4882a593Smuzhiyun
414*4882a593Smuzhiyun		port@1 {
415*4882a593Smuzhiyun			reg = <1>;
416*4882a593Smuzhiyun			#address-cells = <1>;
417*4882a593Smuzhiyun			#size-cells = <0>;
418*4882a593Smuzhiyun
419*4882a593Smuzhiyun			mipi_csi2_output: endpoint@0 {
420*4882a593Smuzhiyun				reg = <0>;
421*4882a593Smuzhiyun				remote-endpoint = <&cif_mipi_in>;
422*4882a593Smuzhiyun				data-lanes = <1 2>;
423*4882a593Smuzhiyun			};
424*4882a593Smuzhiyun		};
425*4882a593Smuzhiyun	};
426*4882a593Smuzhiyun};
427*4882a593Smuzhiyun
428*4882a593Smuzhiyun&video_phy0 {
429*4882a593Smuzhiyun	status = "okay";
430*4882a593Smuzhiyun};
431*4882a593Smuzhiyun
432*4882a593Smuzhiyun&video_phy1 {
433*4882a593Smuzhiyun	status = "disabled";
434*4882a593Smuzhiyun};
435*4882a593Smuzhiyun
436*4882a593Smuzhiyun&pcie2x1 {
437*4882a593Smuzhiyun	reset-gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>;
438*4882a593Smuzhiyun	vpcie3v3-supply = <&vcc3v3_pcie>;
439*4882a593Smuzhiyun	status = "okay";
440*4882a593Smuzhiyun};
441*4882a593Smuzhiyun
442*4882a593Smuzhiyun&pinctrl {
443*4882a593Smuzhiyun	cam {
444*4882a593Smuzhiyun		camera_pwr: camera-pwr {
445*4882a593Smuzhiyun			rockchip,pins =
446*4882a593Smuzhiyun				/* camera power en */
447*4882a593Smuzhiyun				<0 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
448*4882a593Smuzhiyun		};
449*4882a593Smuzhiyun	};
450*4882a593Smuzhiyun
451*4882a593Smuzhiyun	sdio-pwrseq {
452*4882a593Smuzhiyun		wifi_enable_h: wifi-enable-h {
453*4882a593Smuzhiyun			rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
454*4882a593Smuzhiyun		};
455*4882a593Smuzhiyun	};
456*4882a593Smuzhiyun
457*4882a593Smuzhiyun	wireless-wlan {
458*4882a593Smuzhiyun		wifi_host_wake_irq: wifi-host-wake-irq {
459*4882a593Smuzhiyun			rockchip,pins = <2 RK_PB2 RK_FUNC_GPIO &pcfg_pull_down>;
460*4882a593Smuzhiyun		};
461*4882a593Smuzhiyun	};
462*4882a593Smuzhiyun
463*4882a593Smuzhiyun	wireless-bluetooth {
464*4882a593Smuzhiyun		uart1_gpios: uart1-gpios {
465*4882a593Smuzhiyun			rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
466*4882a593Smuzhiyun		};
467*4882a593Smuzhiyun	};
468*4882a593Smuzhiyun
469*4882a593Smuzhiyun	lcd0 {
470*4882a593Smuzhiyun		lcd0_rst_gpio: lcd0-rst-gpio {
471*4882a593Smuzhiyun			rockchip,pins = <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
472*4882a593Smuzhiyun		};
473*4882a593Smuzhiyun	};
474*4882a593Smuzhiyun
475*4882a593Smuzhiyun	lcd1 {
476*4882a593Smuzhiyun		lcd1_rst_gpio: lcd1-rst-gpio {
477*4882a593Smuzhiyun			rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
478*4882a593Smuzhiyun		};
479*4882a593Smuzhiyun	};
480*4882a593Smuzhiyun};
481*4882a593Smuzhiyun
482*4882a593Smuzhiyun&rkcif {
483*4882a593Smuzhiyun	status = "okay";
484*4882a593Smuzhiyun};
485*4882a593Smuzhiyun
486*4882a593Smuzhiyun&rkcif_dvp {
487*4882a593Smuzhiyun	status = "disabled";
488*4882a593Smuzhiyun
489*4882a593Smuzhiyun	port {
490*4882a593Smuzhiyun		/* Parallel bus endpoint */
491*4882a593Smuzhiyun		dvp_in_bcam: endpoint {
492*4882a593Smuzhiyun			remote-endpoint = <&gc2145_out>;
493*4882a593Smuzhiyun			bus-width = <8>;
494*4882a593Smuzhiyun			vsync-active = <0>;
495*4882a593Smuzhiyun			hsync-active = <1>;
496*4882a593Smuzhiyun		};
497*4882a593Smuzhiyun	};
498*4882a593Smuzhiyun};
499*4882a593Smuzhiyun
500*4882a593Smuzhiyun&rkcif_mipi_lvds {
501*4882a593Smuzhiyun	status = "okay";
502*4882a593Smuzhiyun
503*4882a593Smuzhiyun	port {
504*4882a593Smuzhiyun		cif_mipi_in: endpoint {
505*4882a593Smuzhiyun			remote-endpoint = <&mipi_csi2_output>;
506*4882a593Smuzhiyun			data-lanes = <1 2>;
507*4882a593Smuzhiyun		};
508*4882a593Smuzhiyun	};
509*4882a593Smuzhiyun};
510*4882a593Smuzhiyun
511*4882a593Smuzhiyun&rkcif_mmu {
512*4882a593Smuzhiyun	status = "okay";
513*4882a593Smuzhiyun};
514*4882a593Smuzhiyun
515*4882a593Smuzhiyun&rkisp {
516*4882a593Smuzhiyun	status = "okay";
517*4882a593Smuzhiyun};
518*4882a593Smuzhiyun
519*4882a593Smuzhiyun&rkisp_mmu {
520*4882a593Smuzhiyun	status = "okay";
521*4882a593Smuzhiyun};
522*4882a593Smuzhiyun
523*4882a593Smuzhiyun&rkisp_vir0 {
524*4882a593Smuzhiyun	status = "okay";
525*4882a593Smuzhiyun
526*4882a593Smuzhiyun	port {
527*4882a593Smuzhiyun		#address-cells = <1>;
528*4882a593Smuzhiyun		#size-cells = <0>;
529*4882a593Smuzhiyun
530*4882a593Smuzhiyun		isp0_in: endpoint@0 {
531*4882a593Smuzhiyun			reg = <0>;
532*4882a593Smuzhiyun			remote-endpoint = <&dphy1_out>;
533*4882a593Smuzhiyun		};
534*4882a593Smuzhiyun		isp0_in_dphy0: endpoint@1 {
535*4882a593Smuzhiyun			reg = <1>;
536*4882a593Smuzhiyun			remote-endpoint = <&dphy0_out>;
537*4882a593Smuzhiyun		};
538*4882a593Smuzhiyun	};
539*4882a593Smuzhiyun};
540*4882a593Smuzhiyun
541*4882a593Smuzhiyun&route_dsi0 {
542*4882a593Smuzhiyun	status = "okay";
543*4882a593Smuzhiyun	connect = <&vp1_out_dsi0>;
544*4882a593Smuzhiyun};
545*4882a593Smuzhiyun
546*4882a593Smuzhiyun&sdmmc2 {
547*4882a593Smuzhiyun	status = "disabled";
548*4882a593Smuzhiyun};
549*4882a593Smuzhiyun
550*4882a593Smuzhiyun&sdmmc1 {
551*4882a593Smuzhiyun	max-frequency = <150000000>;
552*4882a593Smuzhiyun	no-sd;
553*4882a593Smuzhiyun	no-mmc;
554*4882a593Smuzhiyun	bus-width = <4>;
555*4882a593Smuzhiyun	disable-wp;
556*4882a593Smuzhiyun	cap-sd-highspeed;
557*4882a593Smuzhiyun	cap-sdio-irq;
558*4882a593Smuzhiyun	keep-power-in-suspend;
559*4882a593Smuzhiyun	mmc-pwrseq = <&sdio_pwrseq>;
560*4882a593Smuzhiyun	non-removable;
561*4882a593Smuzhiyun	pinctrl-names = "default";
562*4882a593Smuzhiyun	pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk>;
563*4882a593Smuzhiyun	sd-uhs-sdr104;
564*4882a593Smuzhiyun	status = "okay";
565*4882a593Smuzhiyun};
566*4882a593Smuzhiyun
567*4882a593Smuzhiyun&sdio_pwrseq {
568*4882a593Smuzhiyun	reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>;
569*4882a593Smuzhiyun};
570*4882a593Smuzhiyun
571*4882a593Smuzhiyun&spdif_8ch {
572*4882a593Smuzhiyun	status = "okay";
573*4882a593Smuzhiyun	pinctrl-names = "default";
574*4882a593Smuzhiyun	pinctrl-0 = <&spdifm1_tx>;
575*4882a593Smuzhiyun};
576*4882a593Smuzhiyun
577*4882a593Smuzhiyun&uart1 {
578*4882a593Smuzhiyun	status = "okay";
579*4882a593Smuzhiyun	pinctrl-names = "default";
580*4882a593Smuzhiyun	pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn>;
581*4882a593Smuzhiyun};
582*4882a593Smuzhiyun
583*4882a593Smuzhiyun&vcc3v3_lcd0_n {
584*4882a593Smuzhiyun	gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
585*4882a593Smuzhiyun	enable-active-high;
586*4882a593Smuzhiyun};
587*4882a593Smuzhiyun
588*4882a593Smuzhiyun&vcc3v3_lcd1_n {
589*4882a593Smuzhiyun	gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;
590*4882a593Smuzhiyun	enable-active-high;
591*4882a593Smuzhiyun};
592*4882a593Smuzhiyun&wireless_wlan {
593*4882a593Smuzhiyun	pinctrl-names = "default";
594*4882a593Smuzhiyun	pinctrl-0 = <&wifi_host_wake_irq>;
595*4882a593Smuzhiyun	WIFI,host_wake_irq = <&gpio2 RK_PB2 GPIO_ACTIVE_HIGH>;
596*4882a593Smuzhiyun	WIFI,poweren_gpio = <&gpio2 RK_PB1 GPIO_ACTIVE_HIGH>;
597*4882a593Smuzhiyun};
598*4882a593Smuzhiyun
599*4882a593Smuzhiyun&work_led {
600*4882a593Smuzhiyun	gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
601*4882a593Smuzhiyun};
602*4882a593Smuzhiyun
603*4882a593Smuzhiyun&wireless_bluetooth {
604*4882a593Smuzhiyun	compatible = "bluetooth-platdata";
605*4882a593Smuzhiyun	clocks = <&rk809 1>;
606*4882a593Smuzhiyun	clock-names = "ext_clock";
607*4882a593Smuzhiyun	//wifi-bt-power-toggle;
608*4882a593Smuzhiyun	uart_rts_gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_LOW>;
609*4882a593Smuzhiyun	pinctrl-names = "default", "rts_gpio";
610*4882a593Smuzhiyun	pinctrl-0 = <&uart1m0_rtsn>;
611*4882a593Smuzhiyun	pinctrl-1 = <&uart1_gpios>;
612*4882a593Smuzhiyun	BT,reset_gpio    = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>;
613*4882a593Smuzhiyun	BT,wake_gpio     = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>;
614*4882a593Smuzhiyun	BT,wake_host_irq = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>;
615*4882a593Smuzhiyun	status = "okay";
616*4882a593Smuzhiyun};
617