Commit 9f889cf1 authored by Quentin Schulz's avatar Quentin Schulz Committed by Heiko Stuebner
Browse files

arm64: dts: rockchip: add overlay for PX30 Ringneck Haikou Video Demo adapter

This adds support for the video-demo-adapter DEVKIT ADDON CAM-TS-A01
(https://embedded.cherry.de/product/development-kit/

) for the Haikou
devkit with PX30 Ringneck SoM.

The Video Demo adapter is an adapter connected to the fake PCIe slot
labeled "Video Connector" on the Haikou devkit.

Itss main feature is a Leadtek DSI-display with touchscreen and a camera
(that is not supported yet because the expected clock rate by the driver
cannot be exactly reached by the clock driver). To drive these
components a number of additional regulators are grouped on the adapter
as well as a PCA9670 gpio-expander to provide the needed additional
gpio-lines.

Signed-off-by: default avatarQuentin Schulz <quentin.schulz@cherry.de>
Link: https://lore.kernel.org/r/20250221-ringneck-dtbos-v2-4-310c0b9a3909@cherry.de


Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
parent 1444eb8f
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-engicam-px30-core-edimm2.2.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-firefly-jd4-core-mb.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-ringneck-haikou.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-ringneck-haikou-lvds-9904379.dtbo
dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-ringneck-haikou-video-demo.dtbo
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-bpi-p2-pro.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-evb.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb
@@ -196,6 +197,10 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-ringneck-haikou-haikou-lvds-9904379.dtb
px30-ringneck-haikou-haikou-lvds-9904379-dtbs := px30-ringneck-haikou.dtb \
	px30-ringneck-haikou-lvds-9904379.dtbo

dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-ringneck-haikou-haikou-video-demo.dtb
px30-ringneck-haikou-haikou-video-demo-dtbs := px30-ringneck-haikou.dtb \
	px30-ringneck-haikou-video-demo.dtbo

dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-wolfvision-pf5-vz-2-uhd.dtb
rk3568-wolfvision-pf5-vz-2-uhd-dtbs := rk3568-wolfvision-pf5.dtb \
	rk3568-wolfvision-pf5-display-vz.dtbo \
+190 −0
Original line number Diff line number Diff line
// 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";
		};
	};
};

&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>;

	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>;
	};
};

&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";
};