xref: /freebsd/sys/contrib/device-tree/src/arm64/rockchip/px30-ringneck-haikou-video-demo.dtso (revision 833e5d42ab135b0238e61c5b3c19b8619677cbfa)
1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2025 Cherry Embedded Solutions GmbH
4 *
5 * DEVKIT ADDON CAM-TS-A01
6 * https://embedded.cherry.de/product/development-kit/
7 *
8 * DT-overlay for the camera / DSI demo appliance for Haikou boards.
9 * In the flavour for use with a Ringneck system-on-module.
10 */
11
12/dts-v1/;
13/plugin/;
14
15#include <dt-bindings/clock/px30-cru.h>
16#include <dt-bindings/gpio/gpio.h>
17#include <dt-bindings/interrupt-controller/irq.h>
18#include <dt-bindings/leds/common.h>
19#include <dt-bindings/pinctrl/rockchip.h>
20
21&{/} {
22	backlight: backlight {
23		compatible = "pwm-backlight";
24		power-supply = <&dc_12v>;
25		pwms = <&pwm0 0 25000 0>;
26	};
27
28	cam_afvdd_2v8: regulator-cam-afvdd-2v8 {
29		compatible = "regulator-fixed";
30		gpio = <&pca9670 2 GPIO_ACTIVE_LOW>;
31		regulator-max-microvolt = <2800000>;
32		regulator-min-microvolt = <2800000>;
33		regulator-name = "cam-afvdd-2v8";
34		vin-supply = <&vcc2v8_video>;
35	};
36
37	cam_avdd_2v8: regulator-cam-avdd-2v8 {
38		compatible = "regulator-fixed";
39		gpio = <&pca9670 4 GPIO_ACTIVE_LOW>;
40		regulator-max-microvolt = <2800000>;
41		regulator-min-microvolt = <2800000>;
42		regulator-name = "cam-avdd-2v8";
43		vin-supply = <&vcc2v8_video>;
44	};
45
46	cam_dovdd_1v8: regulator-cam-dovdd-1v8 {
47		compatible = "regulator-fixed";
48	        gpio = <&pca9670 3 GPIO_ACTIVE_LOW>;
49	        regulator-max-microvolt = <1800000>;
50	        regulator-min-microvolt = <1800000>;
51	        regulator-name = "cam-dovdd-1v8";
52	        vin-supply = <&vcc1v8_video>;
53	};
54
55	cam_dvdd_1v2: regulator-cam-dvdd-1v2 {
56		compatible = "regulator-fixed";
57		enable-active-high;
58		gpio = <&pca9670 5 GPIO_ACTIVE_HIGH>;
59		regulator-max-microvolt = <1200000>;
60		regulator-min-microvolt = <1200000>;
61		regulator-name = "cam-dvdd-1v2";
62		vin-supply = <&vcc3v3_baseboard>;
63	};
64
65	vcc1v8_video: regulator-vcc1v8-video {
66		compatible = "regulator-fixed";
67		regulator-always-on;
68		regulator-boot-on;
69		regulator-max-microvolt = <1800000>;
70		regulator-min-microvolt = <1800000>;
71		regulator-name = "vcc1v8-video";
72		vin-supply = <&vcc3v3_baseboard>;
73	};
74
75	vcc2v8_video: regulator-vcc2v8-video {
76		compatible = "regulator-fixed";
77		regulator-always-on;
78		regulator-boot-on;
79		regulator-max-microvolt = <2800000>;
80		regulator-min-microvolt = <2800000>;
81		regulator-name = "vcc2v8-video";
82		vin-supply = <&vcc3v3_baseboard>;
83	};
84
85	video-adapter-leds {
86		compatible = "gpio-leds";
87
88		video-adapter-led {
89			color = <LED_COLOR_ID_BLUE>;
90			gpios = <&pca9670 7 GPIO_ACTIVE_HIGH>;
91			label = "video-adapter-led";
92			linux,default-trigger = "none";
93		};
94	};
95};
96
97&cif_clkout_m0 {
98	rockchip,pins =
99		<2 RK_PB3 1 &pcfg_pull_none_12ma>;
100};
101
102&csi_dphy {
103	status = "okay";
104};
105
106&display_subsystem {
107	status = "okay";
108};
109
110&dsi {
111	#address-cells = <1>;
112	#size-cells = <0>;
113	status = "okay";
114
115	panel@0 {
116		compatible = "leadtek,ltk050h3148w";
117		reg = <0>;
118		backlight = <&backlight>;
119		iovcc-supply = <&vcc1v8_video>;
120		reset-gpios = <&pca9670 0 GPIO_ACTIVE_LOW>;
121		vci-supply = <&vcc2v8_video>;
122
123		port {
124			mipi_in_panel: endpoint {
125				remote-endpoint = <&mipi_out_panel>;
126			};
127		};
128	};
129};
130
131&dsi_dphy {
132	status = "okay";
133};
134
135&dsi_out {
136	mipi_out_panel: endpoint {
137		remote-endpoint = <&mipi_in_panel>;
138	};
139};
140
141&i2c1 {
142	#address-cells = <1>;
143	#size-cells = <0>;
144	/* OV5675, GT911, DW9714 are limited to 400KHz */
145	clock-frequency = <400000>;
146
147	focus: focus@c {
148		compatible = "dongwoon,dw9714";
149		reg = <0xc>;
150		vcc-supply = <&cam_afvdd_2v8>;
151	};
152
153	touchscreen@14 {
154		compatible = "goodix,gt911";
155		reg = <0x14>;
156		interrupt-parent = <&gpio0>;
157		interrupts = <RK_PA0 IRQ_TYPE_LEVEL_LOW>;
158		irq-gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
159		pinctrl-0 = <&touch_int>;
160		pinctrl-names = "default";
161		reset-gpios = <&pca9670 1 GPIO_ACTIVE_HIGH>;
162		AVDD28-supply = <&vcc2v8_video>;
163		VDDIO-supply = <&vcc3v3_baseboard>;
164	};
165
166	pca9670: gpio@27 {
167		compatible = "nxp,pca9670";
168		reg = <0x27>;
169		gpio-controller;
170		#gpio-cells = <2>;
171		pinctrl-0 = <&pca9670_resetn>;
172		pinctrl-names = "default";
173		reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>;
174	};
175
176	camera@36 {
177		compatible = "ovti,ov5675";
178		reg = <0x36>;
179		clocks = <&cru SCLK_CIF_OUT>;
180		assigned-clocks = <&cru SCLK_CIF_OUT>;
181		/* Only parent to get exactly 19.2MHz */
182		assigned-clock-parents = <&cru USB480M>;
183		assigned-clock-rates = <19200000>;
184		avdd-supply = <&cam_avdd_2v8>;
185		dvdd-supply = <&cam_dvdd_1v2>;
186		dovdd-supply = <&cam_dovdd_1v8>;
187		lens-focus = <&focus>;
188		orientation = <0>;
189		pinctrl-names = "default";
190		pinctrl-0 = <&cif_clkout_m0>;
191		reset-gpios = <&pca9670 6 GPIO_ACTIVE_LOW>;
192		rotation = <180>;
193
194		port {
195			cam_out: endpoint {
196				data-lanes = <1 2>;
197				link-frequencies = /bits/ 64 <450000000>;
198				remote-endpoint = <&mipi_in_cam>;
199			};
200		};
201	};
202};
203
204&isp {
205	status = "okay";
206};
207
208&isp_in {
209	mipi_in_cam: endpoint {
210		data-lanes = <1 2>;
211		remote-endpoint = <&cam_out>;
212	};
213};
214
215&pinctrl {
216	pca9670 {
217		pca9670_resetn: pca9670-resetn {
218			rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
219		};
220	};
221
222	touch {
223		touch_int: touch-int {
224			rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
225		};
226	};
227};
228
229&vopb {
230	status = "okay";
231};
232
233&vopb_mmu {
234	status = "okay";
235};
236
237&vopl {
238	status = "okay";
239};
240
241&vopl_mmu {
242	status = "okay";
243};
244