Re: [PATCH v2 3/3] arm64: dts: rockchip: add overlay for tiger-haikou video-demo adapter

Quentin Schulz
2025-02-03T17:00:07Z

Hi Heiko,

On 11/27/24 3:37 PM, Heiko Stuebner wrote:
> From: Heiko Stuebner <heiko.stuebner@cherry.de>
>
> 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>

Tested-by: Quentin Schulz <quentin.schulz@cherry.de>

See comments below.

> ---
> arch/arm64/boot/dts/rockchip/Makefile | 1 +
> .../rk3588-tiger-haikou-video-demo.dtso | 144 ++++++++++++++++++
> 2 files changed, 145 insertions(+)
> create mode 100644 arch/arm64/boot/dts/rockchip/rk3588-tiger-haikou-video-demo.dtso
>
> diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
> index 3f888451a13e..a2404fcdc6fd 100644
> --- a/arch/arm64/boot/dts/rockchip/Makefile
> +++ b/arch/arm64/boot/dts/rockchip/Makefile
> @@ -144,6 +144,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
> 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
> index 000000000000..a7fe18b81170
> --- /dev/null
> +++ b/arch/arm64/boot/dts/rockchip/rk3588-tiger-haikou-video-demo.dtso
> @@ -0,0 +1,144 @@
> +// 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>;
> + };
> +

We have three additional regulators for the cameras, I think it'd make
sense to define those as well even if there's no camera stack on RK3588
for now?

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

Our downstream has a pinctrl for that too.

C.f.
https://git.theobroma-systems.com/tiger-linux.git/tree/arch/arm64/boot/dts/rockchip/rk3588-tiger-haikou-video-demo.dts#n185
and
https://git.theobroma-systems.com/tiger-linux.git/tree/arch/arm64/boot/dts/rockchip/rk3588-tiger-haikou-video-demo.dts#n259.
I think this would be enough to guarantee the PCA9670 is not held in
reset due to leftover debug sessions in the bootloader.

Can you please also rebase on top of
https://lore.kernel.org/linux-rockchip/20250131-pre-ict-jaguar-v4-0-c971e2852e8d@cherry.de/T/#m7481695caf708c13edc662293d01fa372123532f
where we add overlay application tests at build time?

Cheers,
Quentin