| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) |
| /* |
| * Copyright (c) 2025 Cherry Embedded Solutions GmbH |
| * |
| * DEVKIT ADDON CAM-TS-A01 |
| * https://embedded.cherry.de/product/development-kit/ |
| * |
| * DT-overlay for the camera / DSI demo appliance for Haikou boards. |
| * In the flavour for use with a Ringneck system-on-module. |
| */ |
| |
| /dts-v1/; |
| /plugin/; |
| |
| #include <dt-bindings/clock/px30-cru.h> |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/interrupt-controller/irq.h> |
| #include <dt-bindings/leds/common.h> |
| #include <dt-bindings/pinctrl/rockchip.h> |
| |
| &{/} { |
| backlight: backlight { |
| compatible = "pwm-backlight"; |
| power-supply = <&dc_12v>; |
| pwms = <&pwm0 0 25000 0>; |
| }; |
| |
| cam_afvdd_2v8: regulator-cam-afvdd-2v8 { |
| compatible = "regulator-fixed"; |
| gpio = <&pca9670 2 GPIO_ACTIVE_LOW>; |
| regulator-max-microvolt = <2800000>; |
| regulator-min-microvolt = <2800000>; |
| regulator-name = "cam-afvdd-2v8"; |
| vin-supply = <&vcc2v8_video>; |
| }; |
| |
| cam_avdd_2v8: regulator-cam-avdd-2v8 { |
| compatible = "regulator-fixed"; |
| gpio = <&pca9670 4 GPIO_ACTIVE_LOW>; |
| regulator-max-microvolt = <2800000>; |
| regulator-min-microvolt = <2800000>; |
| regulator-name = "cam-avdd-2v8"; |
| vin-supply = <&vcc2v8_video>; |
| }; |
| |
| cam_dovdd_1v8: regulator-cam-dovdd-1v8 { |
| compatible = "regulator-fixed"; |
| gpio = <&pca9670 3 GPIO_ACTIVE_LOW>; |
| regulator-max-microvolt = <1800000>; |
| regulator-min-microvolt = <1800000>; |
| regulator-name = "cam-dovdd-1v8"; |
| vin-supply = <&vcc1v8_video>; |
| }; |
| |
| cam_dvdd_1v2: regulator-cam-dvdd-1v2 { |
| compatible = "regulator-fixed"; |
| enable-active-high; |
| gpio = <&pca9670 5 GPIO_ACTIVE_HIGH>; |
| regulator-max-microvolt = <1200000>; |
| regulator-min-microvolt = <1200000>; |
| regulator-name = "cam-dvdd-1v2"; |
| vin-supply = <&vcc3v3_baseboard>; |
| }; |
| |
| vcc1v8_video: regulator-vcc1v8-video { |
| compatible = "regulator-fixed"; |
| regulator-always-on; |
| regulator-boot-on; |
| regulator-max-microvolt = <1800000>; |
| regulator-min-microvolt = <1800000>; |
| regulator-name = "vcc1v8-video"; |
| vin-supply = <&vcc3v3_baseboard>; |
| }; |
| |
| vcc2v8_video: regulator-vcc2v8-video { |
| compatible = "regulator-fixed"; |
| regulator-always-on; |
| regulator-boot-on; |
| regulator-max-microvolt = <2800000>; |
| regulator-min-microvolt = <2800000>; |
| regulator-name = "vcc2v8-video"; |
| vin-supply = <&vcc3v3_baseboard>; |
| }; |
| |
| video-adapter-leds { |
| compatible = "gpio-leds"; |
| |
| video-adapter-led { |
| color = <LED_COLOR_ID_BLUE>; |
| gpios = <&pca9670 7 GPIO_ACTIVE_HIGH>; |
| label = "video-adapter-led"; |
| linux,default-trigger = "none"; |
| }; |
| }; |
| }; |
| |
| &cif_clkout_m0 { |
| rockchip,pins = |
| <2 RK_PB3 1 &pcfg_pull_none_12ma>; |
| }; |
| |
| &csi_dphy { |
| status = "okay"; |
| }; |
| |
| &display_subsystem { |
| status = "okay"; |
| }; |
| |
| &dsi { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| status = "okay"; |
| |
| panel@0 { |
| compatible = "leadtek,ltk050h3148w"; |
| reg = <0>; |
| backlight = <&backlight>; |
| iovcc-supply = <&vcc1v8_video>; |
| reset-gpios = <&pca9670 0 GPIO_ACTIVE_LOW>; |
| vci-supply = <&vcc2v8_video>; |
| |
| port { |
| mipi_in_panel: endpoint { |
| remote-endpoint = <&mipi_out_panel>; |
| }; |
| }; |
| }; |
| }; |
| |
| &dsi_dphy { |
| status = "okay"; |
| }; |
| |
| &dsi_out { |
| mipi_out_panel: endpoint { |
| remote-endpoint = <&mipi_in_panel>; |
| }; |
| }; |
| |
| &i2c1 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| /* OV5675, GT911, DW9714 are limited to 400KHz */ |
| clock-frequency = <400000>; |
| |
| focus: focus@c { |
| compatible = "dongwoon,dw9714"; |
| reg = <0xc>; |
| vcc-supply = <&cam_afvdd_2v8>; |
| }; |
| |
| touchscreen@14 { |
| compatible = "goodix,gt911"; |
| reg = <0x14>; |
| interrupt-parent = <&gpio0>; |
| interrupts = <RK_PA0 IRQ_TYPE_LEVEL_LOW>; |
| irq-gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>; |
| pinctrl-0 = <&touch_int>; |
| pinctrl-names = "default"; |
| reset-gpios = <&pca9670 1 GPIO_ACTIVE_HIGH>; |
| AVDD28-supply = <&vcc2v8_video>; |
| VDDIO-supply = <&vcc3v3_baseboard>; |
| }; |
| |
| pca9670: gpio@27 { |
| compatible = "nxp,pca9670"; |
| reg = <0x27>; |
| gpio-controller; |
| #gpio-cells = <2>; |
| pinctrl-0 = <&pca9670_resetn>; |
| pinctrl-names = "default"; |
| reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>; |
| }; |
| |
| camera@36 { |
| compatible = "ovti,ov5675"; |
| reg = <0x36>; |
| clocks = <&cru SCLK_CIF_OUT>; |
| assigned-clocks = <&cru SCLK_CIF_OUT>; |
| /* Only parent to get exactly 19.2MHz */ |
| assigned-clock-parents = <&cru USB480M>; |
| assigned-clock-rates = <19200000>; |
| avdd-supply = <&cam_avdd_2v8>; |
| dvdd-supply = <&cam_dvdd_1v2>; |
| dovdd-supply = <&cam_dovdd_1v8>; |
| lens-focus = <&focus>; |
| orientation = <0>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&cif_clkout_m0>; |
| reset-gpios = <&pca9670 6 GPIO_ACTIVE_LOW>; |
| rotation = <180>; |
| |
| port { |
| cam_out: endpoint { |
| data-lanes = <1 2>; |
| link-frequencies = /bits/ 64 <450000000>; |
| remote-endpoint = <&mipi_in_cam>; |
| }; |
| }; |
| }; |
| }; |
| |
| &isp { |
| status = "okay"; |
| }; |
| |
| &isp_in { |
| mipi_in_cam: endpoint { |
| data-lanes = <1 2>; |
| remote-endpoint = <&cam_out>; |
| }; |
| }; |
| |
| &pinctrl { |
| pca9670 { |
| pca9670_resetn: pca9670-resetn { |
| rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>; |
| }; |
| }; |
| |
| touch { |
| touch_int: touch-int { |
| rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; |
| }; |
| }; |
| }; |
| |
| &vopb { |
| status = "okay"; |
| }; |
| |
| &vopb_mmu { |
| status = "okay"; |
| }; |
| |
| &vopl { |
| status = "okay"; |
| }; |
| |
| &vopl_mmu { |
| status = "okay"; |
| }; |