]> www.infradead.org Git - users/willy/xarray.git/commitdiff
arm64: dts: rockchip: add overlay for tiger-haikou video-demo adapter
authorHeiko Stuebner <heiko.stuebner@cherry.de>
Wed, 26 Feb 2025 14:09:42 +0000 (15:09 +0100)
committerHeiko Stuebner <heiko@sntech.de>
Mon, 28 Apr 2025 12:10:18 +0000 (14:10 +0200)
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 Tiger RK3588 SoM.

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

It's main feature is a Leadtek DSI-display with touchscreen and a camera
(that is not supported yet). 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: Heiko Stuebner <heiko.stuebner@cherry.de>
Reviewed-by: Dragan Simic <dsimic@manjaro.org> # Makefile
Tested-by: Quentin Schulz <quentin.schulz@cherry.de>
Link: https://lore.kernel.org/r/20250226140942.3825223-4-heiko@sntech.de
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
arch/arm64/boot/dts/rockchip/Makefile
arch/arm64/boot/dts/rockchip/rk3588-tiger-haikou-video-demo.dtso [new file with mode: 0644]

index 3e8771ef69ba1c1428117cc2ae29b84e13523e21..61158c75f33256dd8484c2079a855c8897f4328b 100644 (file)
@@ -165,6 +165,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-rock-5b.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-rock-5b-pcie-ep.dtbo
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-rock-5b-pcie-srns.dtbo
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-tiger-haikou.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-tiger-haikou-video-demo.dtbo
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-toybrick-x0.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-turing-rk1.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-coolpi-4b.dtb
@@ -233,3 +234,7 @@ rk3588-rock-5b-pcie-ep-dtbs := rk3588-rock-5b.dtb \
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-rock-5b-pcie-srns.dtb
 rk3588-rock-5b-pcie-srns-dtbs := rk3588-rock-5b.dtb \
        rk3588-rock-5b-pcie-srns.dtbo
+
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-tiger-haikou-haikou-video-demo.dtb
+rk3588-tiger-haikou-haikou-video-demo-dtbs := rk3588-tiger-haikou.dtb \
+       rk3588-tiger-haikou-video-demo.dtbo
diff --git a/arch/arm64/boot/dts/rockchip/rk3588-tiger-haikou-video-demo.dtso b/arch/arm64/boot/dts/rockchip/rk3588-tiger-haikou-video-demo.dtso
new file mode 100644 (file)
index 0000000..b8636fc
--- /dev/null
@@ -0,0 +1,153 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2024 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 Tiger system-on-module.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#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>
+#include <dt-bindings/soc/rockchip,vop2.h>
+
+&{/} {
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               power-supply = <&dc_12v>;
+               pwms = <&pwm0 0 25000 0>;
+       };
+
+       vcc1v8_video: regulator-vcc1v8-video {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc1v8-video";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc3v3_baseboard>;
+       };
+
+       vcc2v8_video: regulator-vcc2v8-video {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc2v8-video";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               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";
+               };
+       };
+};
+
+&dsi0 {
+       #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_panel_in: endpoint {
+                               remote-endpoint = <&dsi0_out_panel>;
+                       };
+               };
+       };
+};
+
+&dsi0_in {
+       dsi0_in_vp3: endpoint {
+               remote-endpoint = <&vp3_out_dsi0>;
+       };
+};
+
+&dsi0_out {
+       dsi0_out_panel: endpoint {
+               remote-endpoint = <&mipi_panel_in>;
+       };
+};
+
+&i2c6 {
+       /* OV5675, GT911, DW9714 are limited to 400KHz */
+       clock-frequency = <400000>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       touchscreen@14 {
+               compatible = "goodix,gt911";
+               reg = <0x14>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <RK_PC3 IRQ_TYPE_LEVEL_LOW>;
+               irq-gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&touch_int>;
+               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-names = "default";
+               pinctrl-0 = <&pca9670_resetn>;
+               reset-gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&mipidcphy0 {
+       status = "okay";
+};
+
+&pinctrl {
+       pca9670 {
+               pca9670_resetn: pca9670-resetn {
+                       rockchip,pins = <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       touch {
+               touch_int: touch-int {
+                       rockchip,pins = <3 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&pwm0 {
+       status = "okay";
+};
+
+&vp3 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       vp3_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 {
+               reg = <ROCKCHIP_VOP2_EP_MIPI0>;
+               remote-endpoint = <&dsi0_in_vp3>;
+       };
+};