arm64: dts: rockchip: add support for HAIKOU-LVDS-9904379 adapter for PX30 Ringneck

The HAIKOU-LVDS-9904379 adapter is an adapter for PX30 Ringneck with the
Haikou carrierboard. It is to be inserted in the fake PCIe slot labelled
Video Connector.

This adapter expects an Admatec 9904379 1024x600 LVDS display with
backlight and touchscreen. An EEPROM is also found on the adapter.

This adds support for this adapter on PX30 Ringneck when inserted in
Haikou carrierboard.

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
Link: https://lore.kernel.org/r/20250221-ringneck-dtbos-v2-3-310c0b9a3909@cherry.de
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
This commit is contained in:
Quentin Schulz 2025-02-21 15:04:35 +01:00 committed by Heiko Stuebner
parent 6ee0b9ad39
commit 1444eb8fed
2 changed files with 135 additions and 0 deletions

View File

@ -5,6 +5,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-engicam-px30-core-ctouch2-of10.dtb
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) += rk3308-bpi-p2-pro.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-evb.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb
@ -191,6 +192,10 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-rock-5c.dtb
# result of the application of <overlay-1>.dtbo and other listed overlays on top
# of <base>.dtb.
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) += rk3568-wolfvision-pf5-vz-2-uhd.dtb
rk3568-wolfvision-pf5-vz-2-uhd-dtbs := rk3568-wolfvision-pf5.dtb \
rk3568-wolfvision-pf5-display-vz.dtbo \

View File

@ -0,0 +1,130 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2025 Cherry Embedded Solutions GmbH
*
* HAIKOU-LVDS-9904379 adapter for PX30 Ringneck and Haikou carrierboard.
*
* This adapter needs to be plugged in the fake PCIe connector called Video
* Connector on Haikou carrierboard.
*/
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/pinctrl/rockchip.h>
&{/} {
backlight_lvds: backlight-lvds {
compatible = "pwm-backlight";
brightness-levels = <0 255>;
default-brightness-level = <255>;
num-interpolated-steps = <255>;
power-supply = <&vcc3v3_baseboard>;
pwms = <&pwm0 0 25000 0>;
};
panel {
compatible = "admatec,9904379", "panel-lvds";
backlight = <&backlight_lvds>;
data-mapping = "vesa-24";
height-mm = <126>;
power-supply = <&vcc3v3_baseboard>;
width-mm = <224>;
panel-timing {
clock-frequency = <49500000>;
hactive = <1024>;
hback-porch = <90>;
hfront-porch = <90>;
hsync-len = <90>;
vactive = <600>;
vback-porch = <10>;
vfront-porch = <10>;
vsync-len = <10>;
};
port {
panel_in_lvds: endpoint {
remote-endpoint = <&lvds_out_panel>;
};
};
};
};
&display_subsystem {
status = "okay";
};
&dsi_dphy {
status = "okay";
};
&i2c1 {
#address-cells = <1>;
#size-cells = <0>;
/* EEPROM and GT928 are limited to 400KHz */
clock-frequency = <400000>;
touchscreen@14 {
compatible = "goodix,gt928";
reg = <0x14>;
interrupt-parent = <&gpio0>;
interrupts = <RK_PA0 IRQ_TYPE_LEVEL_LOW>;
irq-gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&touch_int &touch_rst>;
pinctrl-names = "default";
touchscreen-inverted-x;
touchscreen-inverted-y;
AVDD28-supply = <&vcc3v3_baseboard>;
VDDIO-supply = <&vcc3v3_baseboard>;
};
eeprom@54 {
reg = <0x54>;
compatible = "st,24c04", "atmel,24c04";
pagesize = <16>;
size = <512>;
vcc-supply = <&vcc3v3_baseboard>;
};
};
&lvds {
status = "okay";
};
&lvds_out {
lvds_out_panel: endpoint {
remote-endpoint = <&panel_in_lvds>;
};
};
&pinctrl {
touch {
touch_int: touch-int {
rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
};
touch_rst: touch-rst {
rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};
&vopb {
status = "okay";
};
&vopb_mmu {
status = "okay";
};
&vopl {
status = "okay";
};
&vopl_mmu {
status = "okay";
};