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