Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ properties:
- anbernic,rg353v-panel-v2
# GameForce Chi 3.5" 640x480 TFT LCD panel
- gameforce,chi-panel
# Huadi HD395003C30-V2 3.95" 720x720 TFT LCD panel
- huadi,hd395003c30-v2
# Powkiddy RGB10MAX3 5.0" 720x1280 TFT LCD panel
- powkiddy,rgb10max3-panel
# Powkiddy RGB30 3.0" 720x720 TFT LCD panel
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ properties:
- anbernic,rg28xx-panel
- densitron,dmt028vghmcmi-1a
- elida,kd50t048a
- huadi,hd40007c30-v5
- techstar,ts8550b
- winstar,wf40eswaa6mnn0
- const: sitronix,st7701
Expand Down Expand Up @@ -86,6 +87,7 @@ allOf:
- anbernic,rg28xx-panel
- densitron,dmt028vghmcmi-1a
- elida,kd50t048a
- huadi,hd40007c30-v5
- techstar,ts8550b
then:
required:
Expand Down
2 changes: 2 additions & 0 deletions Documentation/devicetree/bindings/vendor-prefixes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -719,6 +719,8 @@ patternProperties:
description: HannStar Display Co.
"^htc,.*":
description: HTC Corporation
"^huadi,.*":
description: Shenzhen Huadi Chuangxian Technology Co., Ltd.
"^huawei,.*":
description: Huawei Technologies Co., Ltd.
"^hugsun,.*":
Expand Down
2 changes: 2 additions & 0 deletions arch/arm/boot/dts/overlays/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,8 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
vc4-kms-dsi-edatec-panel-070c.dtbo \
vc4-kms-dsi-edatec-panel-101c.dtbo \
vc4-kms-dsi-generic.dtbo \
vc4-kms-dsi-huadi-480x480.dtbo \
vc4-kms-dsi-huadi-720x720.dtbo \
vc4-kms-dsi-ili79600-10-1inch.dtbo \
vc4-kms-dsi-ili9881-5inch.dtbo \
vc4-kms-dsi-ili9881-7inch.dtbo \
Expand Down
36 changes: 36 additions & 0 deletions arch/arm/boot/dts/overlays/README
Original file line number Diff line number Diff line change
Expand Up @@ -6144,6 +6144,42 @@ Params: clock-frequency Display clock frequency (Hz)
Only supported on Pi5 and CM


Name: vc4-kms-dsi-huadi-480x480
Info: Huadi HD40007C30-V5 two-lane DSI panel on Raspberry Pi 5, using
the externally powered Adafruit 30-pin DSI adapter Rev B.
Requires vc4-kms-v3d. Connect to CAM/DISP1 by default.
Touch defaults to I2C polling with APX803 power-on reset; no extra
GPIO wiring is required. Optional TP_INT wiring enables interrupts.
For host-controlled reset, wire both TP_RESET and TP_INT and set
touch_reset and touch_interrupt. Reset uses open-drain operation.
Load: dtoverlay=vc4-kms-dsi-huadi-480x480,<param>=<val>
Params: dsi0 Use CAM/DISP0 instead
notouch Disable the touch controller
touch_reset Optional touch reset GPIO (unset by default)
touch_interrupt Optional touch interrupt GPIO (unset by default)
touch_inverted_x Invert the touch X axis
touch_inverted_y Invert the touch Y axis
touch_swapped_xy Swap the touch X and Y axes


Name: vc4-kms-dsi-huadi-720x720
Info: Huadi HD395003C30-V2 two-lane DSI panel on Raspberry Pi 5, using
the externally powered Adafruit 30-pin DSI adapter Rev B.
Requires vc4-kms-v3d. Connect to CAM/DISP1 by default.
Touch defaults to I2C polling with APX803 power-on reset; no extra
GPIO wiring is required. Optional TP_INT wiring enables interrupts.
For host-controlled reset, wire both TP_RESET and TP_INT and set
touch_reset and touch_interrupt. Reset uses open-drain operation.
Load: dtoverlay=vc4-kms-dsi-huadi-720x720,<param>=<val>
Params: dsi0 Use CAM/DISP0 instead
notouch Disable the touch controller
touch_reset Optional touch reset GPIO (unset by default)
touch_interrupt Optional touch interrupt GPIO (unset by default)
touch_inverted_x Invert the touch X axis
touch_inverted_y Invert the touch Y axis
touch_swapped_xy Swap the touch X and Y axes


Name: vc4-kms-dsi-ili79600-10-1inch
Info: Enable the Raspberry Pi 10" ILI79600 based touchscreen panel.
Requires vc4-kms-v3d to be loaded.
Expand Down
111 changes: 111 additions & 0 deletions arch/arm/boot/dts/overlays/vc4-kms-dsi-huadi-480x480-overlay.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
// SPDX-License-Identifier: GPL-2.0-only
/dts-v1/;
/plugin/;

/* Huadi HD40007C30-V5 on the Adafruit 30-pin DSI adapter, Raspberry Pi 5. */
/ {
compatible = "brcm,bcm2712";

dsi_frag: fragment@0 {
target = <&dsi1>;
__overlay__ {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
port {
dsi_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
panel: panel@0 {
compatible = "huadi,hd40007c30-v5", "sitronix,st7701";
reg = <0>;
reset-gpios = <&gpio 46 0>;
VCC-supply = <&panel_supply>;
IOVCC-supply = <&panel_supply>;
backlight = <&panel_backlight>;
port {
panel_in: endpoint {
remote-endpoint = <&dsi_out>;
};
};
};
};
};

fragment@1 {
target-path = "/";
__overlay__ {
panel_backlight: backlight-huadi {
compatible = "gpio-backlight";
gpios = <&gpio 48 0>;
};
panel_supply: regulator-huadi {
compatible = "regulator-fixed";
regulator-name = "huadi-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
};
};

/* The adapter uses the camera power GPIO for panel reset. */
reg_frag: fragment@2 {
target = <&cam1_reg>;
__overlay__ {
status = "disabled";
};
};

i2c_frag: fragment@3 {
target = <&i2c_csi_dsi1>;
__overlay__ {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <100000>;
touch: touchscreen@5d {
compatible = "goodix,gt911";
reg = <0x5d>;
AVDD28-supply = <&panel_supply>;
VDDIO-supply = <&panel_supply>;
touchscreen-size-x = <480>;
touchscreen-size-y = <480>;
};
};
};

/* The adapter supervisor resets touch; GPIO wiring is optional. */
fragment@4 {
target = <&touch>;
touch_reset_cfg: __dormant__ {
/* Goodix uses physical levels; open drain for APX803. */
reset-gpios = <&gpio 17 6>;
};
};

fragment@5 {
target = <&touch>;
touch_irq_cfg: __dormant__ {
interrupt-parent = <&gpio>;
interrupts = <27 2>;
irq-gpios = <&gpio 27 0>;
};
};

__overrides__ {
dsi0 = <&dsi_frag>, "target:0=", <&dsi0>,
<&i2c_frag>, "target:0=", <&i2c_csi_dsi0>,
<&reg_frag>, "target:0=", <&cam0_reg>,
<&panel>, "reset-gpios:4=34",
<&panel_backlight>, "gpios:4=35";
notouch = <&touch>, "status=disabled";
touch_reset = <0>, "+4", <&touch_reset_cfg>, "reset-gpios:4";
touch_interrupt = <0>, "+5", <&touch_irq_cfg>, "interrupts:0",
<&touch_irq_cfg>, "irq-gpios:4";
touch_inverted_x = <&touch>, "touchscreen-inverted-x?";
touch_inverted_y = <&touch>, "touchscreen-inverted-y?";
touch_swapped_xy = <&touch>, "touchscreen-swapped-x-y?";
};
};
111 changes: 111 additions & 0 deletions arch/arm/boot/dts/overlays/vc4-kms-dsi-huadi-720x720-overlay.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
// SPDX-License-Identifier: GPL-2.0-only
/dts-v1/;
/plugin/;

/* Huadi HD395003C30-V2 on the Adafruit 30-pin DSI adapter, Raspberry Pi 5. */
/ {
compatible = "brcm,bcm2712";

dsi_frag: fragment@0 {
target = <&dsi1>;
__overlay__ {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
port {
dsi_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
panel: panel@0 {
compatible = "huadi,hd395003c30-v2";
reg = <0>;
reset-gpios = <&gpio 46 1>;
vcc-supply = <&panel_supply>;
iovcc-supply = <&panel_supply>;
backlight = <&panel_backlight>;
port {
panel_in: endpoint {
remote-endpoint = <&dsi_out>;
};
};
};
};
};

fragment@1 {
target-path = "/";
__overlay__ {
panel_backlight: backlight-huadi {
compatible = "gpio-backlight";
gpios = <&gpio 48 0>;
};
panel_supply: regulator-huadi {
compatible = "regulator-fixed";
regulator-name = "huadi-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
};
};

/* The adapter uses the camera power GPIO for panel reset. */
reg_frag: fragment@2 {
target = <&cam1_reg>;
__overlay__ {
status = "disabled";
};
};

i2c_frag: fragment@3 {
target = <&i2c_csi_dsi1>;
__overlay__ {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <100000>;
touch: touchscreen@5d {
compatible = "goodix,gt911";
reg = <0x5d>;
AVDD28-supply = <&panel_supply>;
VDDIO-supply = <&panel_supply>;
touchscreen-size-x = <720>;
touchscreen-size-y = <720>;
};
};
};

/* The adapter supervisor resets touch; GPIO wiring is optional. */
fragment@4 {
target = <&touch>;
touch_reset_cfg: __dormant__ {
/* Goodix uses physical levels; open drain for APX803. */
reset-gpios = <&gpio 17 6>;
};
};

fragment@5 {
target = <&touch>;
touch_irq_cfg: __dormant__ {
interrupt-parent = <&gpio>;
interrupts = <27 2>;
irq-gpios = <&gpio 27 0>;
};
};

__overrides__ {
dsi0 = <&dsi_frag>, "target:0=", <&dsi0>,
<&i2c_frag>, "target:0=", <&i2c_csi_dsi0>,
<&reg_frag>, "target:0=", <&cam0_reg>,
<&panel>, "reset-gpios:4=34",
<&panel_backlight>, "gpios:4=35";
notouch = <&touch>, "status=disabled";
touch_reset = <0>, "+4", <&touch_reset_cfg>, "reset-gpios:4";
touch_interrupt = <0>, "+5", <&touch_irq_cfg>, "interrupts:0",
<&touch_irq_cfg>, "irq-gpios:4";
touch_inverted_x = <&touch>, "touchscreen-inverted-x?";
touch_inverted_y = <&touch>, "touchscreen-inverted-y?";
touch_swapped_xy = <&touch>, "touchscreen-swapped-x-y?";
};
};
Loading
Loading