mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-28 09:22:08 +00:00

The Haikou Video Demo adapter has a proprietary connector for a camera module which has an OV5675 camera sensor and a companion DW9714 focus lens driver. This adds support for the camera module on PX30 Ringneck module fitted on a Haikou devkit with the Haikou Video Demo adapter. Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de> Link: https://lore.kernel.org/r/20250610-ringneck-haikou-video-demo-cam-v2-3-de1bf87e0732@cherry.de Signed-off-by: Heiko Stuebner <heiko@sntech.de>
244 lines
5.1 KiB
Plaintext
244 lines
5.1 KiB
Plaintext
// 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";
|
|
};
|