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