xref: /OK3568_Linux_fs/kernel/arch/arm64/boot/dts/rockchip/rk3588-vehicle-evb-image-reverse.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Copyright (c) 2022 Rockchip Electronics Co., Ltd.
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun */
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun/{
8*4882a593Smuzhiyun	reserved-memory {
9*4882a593Smuzhiyun		#address-cells = <2>;
10*4882a593Smuzhiyun		#size-cells = <2>;
11*4882a593Smuzhiyun		ranges;
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun		drm_vehicle: drm-vehicle@20000000{
14*4882a593Smuzhiyun			compatible = "shared-dma-pool";
15*4882a593Smuzhiyun			inactive;
16*4882a593Smuzhiyun			reusable;
17*4882a593Smuzhiyun			reg = <0x0 (512 * 0x100000) 0x0 (256 * 0x100000)>;//512M ~ 512M+256M
18*4882a593Smuzhiyun			linux,cma-default;
19*4882a593Smuzhiyun		};
20*4882a593Smuzhiyun	};
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun	gpio_det: gpio-det {
23*4882a593Smuzhiyun		compatible = "gpio-detection";
24*4882a593Smuzhiyun		status = "okay";
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun		pinctrl-names = "default";
27*4882a593Smuzhiyun		pinctrl-0 = <&vehicle_gpios>;
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun		car-reverse {
30*4882a593Smuzhiyun			car-reverse-gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_HIGH>;
31*4882a593Smuzhiyun			linux,debounce-ms = <5>;
32*4882a593Smuzhiyun			label = "car-reverse";
33*4882a593Smuzhiyun			gpio,wakeup;
34*4882a593Smuzhiyun		};
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun	};
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun	vehicle: vehicle {
39*4882a593Smuzhiyun		compatible = "rockchip,vehicle";
40*4882a593Smuzhiyun		status = "okay";
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun		// pinctrl-names = "default";
43*4882a593Smuzhiyun		// pinctrl-0 = <&mipim1_camera1_clk>;
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun		clocks = <&cru ACLK_VICAP>,
46*4882a593Smuzhiyun			<&cru HCLK_VICAP>,
47*4882a593Smuzhiyun			<&cru DCLK_VICAP>;
48*4882a593Smuzhiyun		clock-names = "aclk_cif",
49*4882a593Smuzhiyun			      "hclk_cif",
50*4882a593Smuzhiyun			      "dclk_cif";
51*4882a593Smuzhiyun		resets = <&cru SRST_A_VICAP>,
52*4882a593Smuzhiyun			<&cru SRST_H_VICAP>,
53*4882a593Smuzhiyun			<&cru SRST_D_VICAP>;
54*4882a593Smuzhiyun		reset-names = "rst_cif_a",
55*4882a593Smuzhiyun			      "rst_cif_h",
56*4882a593Smuzhiyun			      "rst_cif_d";
57*4882a593Smuzhiyun		assigned-clocks = <&cru DCLK_VICAP>;
58*4882a593Smuzhiyun		assigned-clock-rates = <600000000>;
59*4882a593Smuzhiyun		power-domains = <&power RK3588_PD_VI>;
60*4882a593Smuzhiyun		cif,drop-frames = <4>; //frames to drop
61*4882a593Smuzhiyun		cif,chip-id = <1>; /*0:rk3568 1:rk3588*/
62*4882a593Smuzhiyun		rockchip,grf = <&sys_grf>;
63*4882a593Smuzhiyun		rockchip,cru = <&cru>;
64*4882a593Smuzhiyun		rockchip,cif = <&rkcif>;
65*4882a593Smuzhiyun		rockchip,gpio-det = <&gpio_det>;
66*4882a593Smuzhiyun		rockchip,cif-sensor = <&cif_sensor>;
67*4882a593Smuzhiyun		rockchip,cif-phy = <&cif_phy>;
68*4882a593Smuzhiyun		ad,fix-format = <0>;//0:auto detect,1:pal;2:ntsc;3:720p50;4:720p30;5:720p25
69*4882a593Smuzhiyun		/*0:no, 1:90; 2:180; 4:270; 0x10:mirror-y; 0x20:mirror-x*/
70*4882a593Smuzhiyun		vehicle,rotate-mirror = <0x00>;
71*4882a593Smuzhiyun		vehicle,crtc_name = "video_port3";
72*4882a593Smuzhiyun		vehicle,plane_name = "Esmart3-win0";
73*4882a593Smuzhiyun	};
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun	cif_phy: cif_phy {
76*4882a593Smuzhiyun		status = "okay";
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun		csi2_dcphy0 {
79*4882a593Smuzhiyun			status = "disabled";
80*4882a593Smuzhiyun			clocks = <&cru CLK_MIPI_CAMARAOUT_M1>,
81*4882a593Smuzhiyun				<&cru PCLK_MIPI_DCPHY0>,
82*4882a593Smuzhiyun				<&cru PCLK_CSI_HOST_0>,
83*4882a593Smuzhiyun				<&cru ICLK_CSIHOST0>;
84*4882a593Smuzhiyun			clock-names = "xvclk",
85*4882a593Smuzhiyun				      "pclk",
86*4882a593Smuzhiyun				      "pclk_csi2host",
87*4882a593Smuzhiyun				      "iclk_csi2host";
88*4882a593Smuzhiyun			resets = <&cru SRST_P_CSI_HOST_0>,
89*4882a593Smuzhiyun				<&cru SRST_CSIHOST0_VICAP>;
90*4882a593Smuzhiyun			reset-names = "srst_csihost_p",
91*4882a593Smuzhiyun				      "srst_csihost_vicap";
92*4882a593Smuzhiyun			csihost-idx = <0>;
93*4882a593Smuzhiyun			rockchip,csi2 = <&mipi0_csi2>;
94*4882a593Smuzhiyun			phys = <&mipi_dcphy0>;
95*4882a593Smuzhiyun			phy-names = "dcphy";
96*4882a593Smuzhiyun		};
97*4882a593Smuzhiyun		csi2_dcphy1 {
98*4882a593Smuzhiyun			status = "disabled";
99*4882a593Smuzhiyun			clocks = <&cru CLK_MIPI_CAMARAOUT_M2>,
100*4882a593Smuzhiyun				<&cru PCLK_MIPI_DCPHY1>,
101*4882a593Smuzhiyun				<&cru PCLK_CSI_HOST_1>,
102*4882a593Smuzhiyun				<&cru ICLK_CSIHOST1>;
103*4882a593Smuzhiyun			clock-names = "xvclk",
104*4882a593Smuzhiyun				      "pclk",
105*4882a593Smuzhiyun				      "pclk_csi2host",
106*4882a593Smuzhiyun				      "iclk_csi2host";
107*4882a593Smuzhiyun			resets = <&cru SRST_P_CSI_HOST_1>,
108*4882a593Smuzhiyun				<&cru SRST_CSIHOST1_VICAP>;
109*4882a593Smuzhiyun			reset-names = "srst_csihost_p",
110*4882a593Smuzhiyun				      "srst_csihost_vicap";
111*4882a593Smuzhiyun			csihost-idx = <1>;
112*4882a593Smuzhiyun			rockchip,csi2 = <&mipi1_csi2>;
113*4882a593Smuzhiyun			phys = <&mipi_dcphy1>;
114*4882a593Smuzhiyun			phy-names = "dcphy";
115*4882a593Smuzhiyun		};
116*4882a593Smuzhiyun		csi2_dphy0 {
117*4882a593Smuzhiyun			status = "okay";
118*4882a593Smuzhiyun			clocks = <&cru CLK_MIPI_CAMARAOUT_M2>,
119*4882a593Smuzhiyun				 <&cru PCLK_CSIPHY0>,
120*4882a593Smuzhiyun				 <&cru PCLK_CSI_HOST_2>;
121*4882a593Smuzhiyun			clock-names = "xvclk",
122*4882a593Smuzhiyun				      "pclk",
123*4882a593Smuzhiyun				      "pclk_csi2host";
124*4882a593Smuzhiyun			resets = <&cru SRST_CSIPHY0>,
125*4882a593Smuzhiyun				 <&cru SRST_P_CSIPHY0>,
126*4882a593Smuzhiyun				 <&cru SRST_P_CSI_HOST_2>,
127*4882a593Smuzhiyun				 <&cru SRST_CSIHOST2_VICAP>;
128*4882a593Smuzhiyun			reset-names = "srst_csiphy",
129*4882a593Smuzhiyun				      "srst_p_csiphy",
130*4882a593Smuzhiyun				      "srst_csihost_p",
131*4882a593Smuzhiyun				      "srst_csihost_vicap";
132*4882a593Smuzhiyun			csihost-idx = <2>;
133*4882a593Smuzhiyun			rockchip,dphy-grf = <&mipidphy0_grf>;
134*4882a593Smuzhiyun			rockchip,csi2-dphy = <&csi2_dphy0_hw>;
135*4882a593Smuzhiyun			rockchip,csi2 = <&mipi2_csi2>;
136*4882a593Smuzhiyun		};
137*4882a593Smuzhiyun		/* only rk3588 */
138*4882a593Smuzhiyun		csi2_dphy3 {
139*4882a593Smuzhiyun			status = "disabled";
140*4882a593Smuzhiyun			clocks = <&cru CLK_MIPI_CAMARAOUT_M4>,
141*4882a593Smuzhiyun				<&cru PCLK_CSIPHY1>,
142*4882a593Smuzhiyun				<&cru PCLK_CSI_HOST_4>;
143*4882a593Smuzhiyun			clock-names = "xvclk",
144*4882a593Smuzhiyun				      "pclk",
145*4882a593Smuzhiyun				      "pclk_csi2host";
146*4882a593Smuzhiyun			resets = <&cru SRST_CSIPHY1>,
147*4882a593Smuzhiyun				 <&cru SRST_P_CSIPHY1>,
148*4882a593Smuzhiyun				 <&cru SRST_P_CSI_HOST_4>,
149*4882a593Smuzhiyun				 <&cru SRST_CSIHOST4_VICAP>;
150*4882a593Smuzhiyun			reset-names = "srst_csiphy",
151*4882a593Smuzhiyun				      "srst_p_csiphy",
152*4882a593Smuzhiyun				      "srst_csihost_p",
153*4882a593Smuzhiyun				      "srst_csihost_vicap";
154*4882a593Smuzhiyun			csihost-idx = <4>;
155*4882a593Smuzhiyun			rockchip,dphy-grf = <&mipidphy1_grf>;
156*4882a593Smuzhiyun			rockchip,csi2-dphy = <&csi2_dphy1_hw>;
157*4882a593Smuzhiyun			rockchip,csi2 = <&mipi4_csi2>;
158*4882a593Smuzhiyun		};
159*4882a593Smuzhiyun		rkcif_dvp {
160*4882a593Smuzhiyun			status = "disabled";
161*4882a593Smuzhiyun			clocks = <&cru CLK_CIFOUT_OUT>;
162*4882a593Smuzhiyun			clock-names = "xvclk";
163*4882a593Smuzhiyun		};
164*4882a593Smuzhiyun	};
165*4882a593Smuzhiyun
166*4882a593Smuzhiyun	cif_sensor: cif_sensor {
167*4882a593Smuzhiyun		compatible = "rockchip,sensor";
168*4882a593Smuzhiyun		status = "okay";
169*4882a593Smuzhiyun
170*4882a593Smuzhiyun		nvp6188 {
171*4882a593Smuzhiyun			is_front = <0>;
172*4882a593Smuzhiyun			status = "okay";
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun			/*dphy0*/
175*4882a593Smuzhiyun			powerdown-gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_HIGH>;
176*4882a593Smuzhiyun			pwdn_active = <1>;
177*4882a593Smuzhiyun			mir = <0>;
178*4882a593Smuzhiyun			flash_attach = <0>;
179*4882a593Smuzhiyun			orientation = <90>;
180*4882a593Smuzhiyun			i2c_add = <0x66>;
181*4882a593Smuzhiyun			i2c_chl = <7>;
182*4882a593Smuzhiyun			cif_chl = <0>;
183*4882a593Smuzhiyun			ad_chl = <0>;
184*4882a593Smuzhiyun			mclk_rate = <24>;
185*4882a593Smuzhiyun			rockchip,camera-module-defrect0 = <1920 1080 0 0 1920 1080>;
186*4882a593Smuzhiyun			rockchip,camera-module-interface0 = "bt601_8";
187*4882a593Smuzhiyun			rockchip,camera-module-defrect1 = <1280 720 0 0 1280 720>;
188*4882a593Smuzhiyun			rockchip,camera-module-interface1 = "bt601_8";
189*4882a593Smuzhiyun		};
190*4882a593Smuzhiyun	};
191*4882a593Smuzhiyun};
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun&display_subsystem {
194*4882a593Smuzhiyun	memory-region = <&drm_logo>, <&drm_vehicle>;
195*4882a593Smuzhiyun	memory-region-names = "drm-logo", "drm-vehicle";
196*4882a593Smuzhiyun};
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun&i2c7 {
199*4882a593Smuzhiyun	status = "okay";
200*4882a593Smuzhiyun};
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun&pinctrl {
203*4882a593Smuzhiyun	vehicle {
204*4882a593Smuzhiyun		vehicle_gpios: vehicle-gpios {
205*4882a593Smuzhiyun			/* gpios */
206*4882a593Smuzhiyun			rockchip,pins =
207*4882a593Smuzhiyun				/* car-reverse */
208*4882a593Smuzhiyun				<1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
209*4882a593Smuzhiyun		};
210*4882a593Smuzhiyun	};
211*4882a593Smuzhiyun};
212