* [PATCH 0/4] Add DSI Panel for Gameforce Ace
@ 2025-06-03 19:39 Chris Morgan
2025-06-03 19:39 ` [PATCH 1/4] dt-bindings: vendor-prefixes: Add prefix for Huiling Chris Morgan
` (5 more replies)
0 siblings, 6 replies; 17+ messages in thread
From: Chris Morgan @ 2025-06-03 19:39 UTC (permalink / raw)
To: dri-devel
Cc: linux-rockchip, devicetree, sebastian.reichel, heiko, conor+dt,
krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst, simona,
airlied, quic_jesszhan, neil.armstrong, javierm, megi,
Chris Morgan
From: Chris Morgan <macromorgan@hotmail.com>
Add support for the DSI panel as found on the Gameforce Ace handheld
gaming console based on the RK3588s.
Chris Morgan (4):
dt-bindings: vendor-prefixes: Add prefix for Huiling
dt-bindings: display: himax-hx8394: Add Huiling hl055fhav028c
drm/panel: himax-hx8394: Add Support for Huiling hl055fhav028c
arm64: dts: rockchip: Add DSI panel support for gameforce-ace
.../bindings/display/panel/himax,hx8394.yaml | 17 ++-
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
.../dts/rockchip/rk3588s-gameforce-ace.dts | 66 ++++++++
drivers/gpu/drm/panel/panel-himax-hx8394.c | 142 ++++++++++++++++++
4 files changed, 221 insertions(+), 6 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/4] dt-bindings: vendor-prefixes: Add prefix for Huiling
2025-06-03 19:39 [PATCH 0/4] Add DSI Panel for Gameforce Ace Chris Morgan
@ 2025-06-03 19:39 ` Chris Morgan
2025-06-04 11:29 ` Krzysztof Kozlowski
2025-06-03 19:39 ` [PATCH 2/4] dt-bindings: display: himax-hx8394: Add Huiling hl055fhav028c Chris Morgan
` (4 subsequent siblings)
5 siblings, 1 reply; 17+ messages in thread
From: Chris Morgan @ 2025-06-03 19:39 UTC (permalink / raw)
To: dri-devel
Cc: linux-rockchip, devicetree, sebastian.reichel, heiko, conor+dt,
krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst, simona,
airlied, quic_jesszhan, neil.armstrong, javierm, megi,
Chris Morgan
From: Chris Morgan <macromorgan@hotmail.com>
Shenzhen Huiling Information Technology Co. Ltd. specializes in the
research and manufacturing of display and touch screens for industrial
usage. https://en.szhuiling.com/
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
---
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index c01adbaacbbb..d5fef99a3490 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -672,6 +672,8 @@ patternProperties:
description: Huawei Technologies Co., Ltd.
"^hugsun,.*":
description: Shenzhen Hugsun Technology Co. Ltd.
+ "^huiling,.*":
+ description: Shenzhen Huiling Information Technology Co., Ltd.
"^hwacom,.*":
description: HwaCom Systems Inc.
"^hxt,.*":
--
2.43.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 2/4] dt-bindings: display: himax-hx8394: Add Huiling hl055fhav028c
2025-06-03 19:39 [PATCH 0/4] Add DSI Panel for Gameforce Ace Chris Morgan
2025-06-03 19:39 ` [PATCH 1/4] dt-bindings: vendor-prefixes: Add prefix for Huiling Chris Morgan
@ 2025-06-03 19:39 ` Chris Morgan
2025-06-04 11:30 ` Krzysztof Kozlowski
2025-06-04 11:35 ` Javier Martinez Canillas
2025-06-03 19:39 ` [PATCH 3/4] drm/panel: himax-hx8394: Add Support for " Chris Morgan
` (3 subsequent siblings)
5 siblings, 2 replies; 17+ messages in thread
From: Chris Morgan @ 2025-06-03 19:39 UTC (permalink / raw)
To: dri-devel
Cc: linux-rockchip, devicetree, sebastian.reichel, heiko, conor+dt,
krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst, simona,
airlied, quic_jesszhan, neil.armstrong, javierm, megi,
Chris Morgan
From: Chris Morgan <macromorgan@hotmail.com>
Add compatible string for the Huiling hl055fhav028c. This panel is
based on the Himax HX8399C display controller which is extremely
similar to the existing HX8394. Add a new constant for
himax,hx8399c for this new display controller as well.
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
---
.../bindings/display/panel/himax,hx8394.yaml | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml
index 75ccabff308b..5725a587e35c 100644
--- a/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml
+++ b/Documentation/devicetree/bindings/display/panel/himax,hx8394.yaml
@@ -17,12 +17,17 @@ description:
properties:
compatible:
- items:
- - enum:
- - hannstar,hsd060bhw4
- - microchip,ac40t08a-mipi-panel
- - powkiddy,x55-panel
- - const: himax,hx8394
+ oneOf:
+ - items:
+ - enum:
+ - hannstar,hsd060bhw4
+ - microchip,ac40t08a-mipi-panel
+ - powkiddy,x55-panel
+ - const: himax,hx8394
+ - items:
+ - enum:
+ - huiling,hl055fhav028c
+ - const: himax,hx8399c
reg:
maxItems: 1
--
2.43.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 3/4] drm/panel: himax-hx8394: Add Support for Huiling hl055fhav028c
2025-06-03 19:39 [PATCH 0/4] Add DSI Panel for Gameforce Ace Chris Morgan
2025-06-03 19:39 ` [PATCH 1/4] dt-bindings: vendor-prefixes: Add prefix for Huiling Chris Morgan
2025-06-03 19:39 ` [PATCH 2/4] dt-bindings: display: himax-hx8394: Add Huiling hl055fhav028c Chris Morgan
@ 2025-06-03 19:39 ` Chris Morgan
2025-06-04 1:00 ` Jessica Zhang
` (2 more replies)
2025-06-03 19:39 ` [PATCH 4/4] arm64: dts: rockchip: Add DSI panel support for gameforce-ace Chris Morgan
` (2 subsequent siblings)
5 siblings, 3 replies; 17+ messages in thread
From: Chris Morgan @ 2025-06-03 19:39 UTC (permalink / raw)
To: dri-devel
Cc: linux-rockchip, devicetree, sebastian.reichel, heiko, conor+dt,
krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst, simona,
airlied, quic_jesszhan, neil.armstrong, javierm, megi,
Chris Morgan
From: Chris Morgan <macromorgan@hotmail.com>
Add support for the Huiling hl055fhav028c panel as used on the
Gameforce Ace handheld gaming console. This panel uses a Himax HX8399C
display controller and requires a sparsely documented vendor provided
init sequence. The display resolution is 1080x1920 and is 70mm by 127mm
as stated in the manufacturer's documentation.
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
---
drivers/gpu/drm/panel/panel-himax-hx8394.c | 142 +++++++++++++++++++++
1 file changed, 142 insertions(+)
diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c
index ff994bf0e3cc..16e450b156b7 100644
--- a/drivers/gpu/drm/panel/panel-himax-hx8394.c
+++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c
@@ -477,6 +477,147 @@ static const struct hx8394_panel_desc mchp_ac40t08a_desc = {
.init_sequence = mchp_ac40t08a_init_sequence,
};
+/*
+ * HL055FHAV028C is based on Himax HX8399, so datasheet pages are
+ * slightly different than HX8394 based panels.
+ */
+static void hl055fhav028c_init_sequence(struct mipi_dsi_multi_context *dsi_ctx)
+{
+ /* 6.3.6 SETEXTC: Set extension command (B9h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETEXTC,
+ 0xff, 0x83, 0x99);
+
+ /* 6.3.17 SETOFFSET: Set offset voltage (D2h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETOFFSET,
+ 0x77);
+
+ /* 6.3.1 SETPOWER: Set power (B1h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETPOWER,
+ 0x02, 0x04, 0x74, 0x94, 0x01, 0x32,
+ 0x33, 0x11, 0x11, 0xab, 0x4d, 0x56,
+ 0x73, 0x02, 0x02);
+
+ /* 6.3.2 SETDISP: Set display related register (B2h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETDISP,
+ 0x00, 0x80, 0x80, 0xae, 0x05, 0x07,
+ 0x5a, 0x11, 0x00, 0x00, 0x10, 0x1e,
+ 0x70, 0x03, 0xd4);
+
+ /* 6.3.3 SETCYC: Set display waveform cycles (B4h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETCYC,
+ 0x00, 0xff, 0x02, 0xc0, 0x02, 0xc0,
+ 0x00, 0x00, 0x08, 0x00, 0x04, 0x06,
+ 0x00, 0x32, 0x04, 0x0a, 0x08, 0x21,
+ 0x03, 0x01, 0x00, 0x0f, 0xb8, 0x8b,
+ 0x02, 0xc0, 0x02, 0xc0, 0x00, 0x00,
+ 0x08, 0x00, 0x04, 0x06, 0x00, 0x32,
+ 0x04, 0x0a, 0x08, 0x01, 0x00, 0x0f,
+ 0xb8, 0x01);
+
+ /* 6.3.18 SETGIP0: Set GIP Option0 (D3h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETGIP0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x10, 0x04, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x05, 0x05, 0x07, 0x00, 0x00,
+ 0x00, 0x05, 0x40);
+
+ /* 6.3.19 Set GIP Option1 (D5h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETGIP1,
+ 0x18, 0x18, 0x19, 0x19, 0x18, 0x18,
+ 0x21, 0x20, 0x01, 0x00, 0x07, 0x06,
+ 0x05, 0x04, 0x03, 0x02, 0x18, 0x18,
+ 0x18, 0x18, 0x18, 0x18, 0x2f, 0x2f,
+ 0x30, 0x30, 0x31, 0x31, 0x18, 0x18,
+ 0x18, 0x18);
+
+ /* 6.3.20 Set GIP Option2 (D6h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETGIP2,
+ 0x18, 0x18, 0x19, 0x19, 0x40, 0x40,
+ 0x20, 0x21, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07, 0x00, 0x01, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x2f, 0x2f,
+ 0x30, 0x30, 0x31, 0x31, 0x40, 0x40,
+ 0x40, 0x40);
+
+ /* 6.3.21 Set GIP Option3 (D8h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_UNKNOWN4,
+ 0xa2, 0xaa, 0x02, 0xa0, 0xa2, 0xa8,
+ 0x02, 0xa0, 0xb0, 0x00, 0x00, 0x00,
+ 0xb0, 0x00, 0x00, 0x00);
+
+ /* 6.3.9 Set register bank (BDh) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETREGBANK,
+ 0x01);
+
+ /* 6.3.21 Set GIP Option3 (D8h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_UNKNOWN4,
+ 0xb0, 0x00, 0x00, 0x00, 0xb0, 0x00,
+ 0x00, 0x00, 0xe2, 0xaa, 0x03, 0xf0,
+ 0xe2, 0xaa, 0x03, 0xf0);
+
+ /* 6.3.9 Set register bank (BDh) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETREGBANK,
+ 0x02);
+
+ /* 6.3.21 Set GIP Option3 (D8h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_UNKNOWN4,
+ 0xe2, 0xaa, 0x03, 0xf0, 0xe2, 0xaa,
+ 0x03, 0xf0);
+
+ /* 6.3.9 Set register bank (BDh) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETREGBANK,
+ 0x00);
+
+ /* 6.3.4 SETVCOM: Set VCOM voltage (B6h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETVCOM,
+ 0x7a, 0x7a);
+
+ /* 6.3.26 SETGAMMA: Set gamma curve related setting (E0h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETGAMMA,
+ 0x00, 0x18, 0x27, 0x24, 0x5a, 0x68,
+ 0x79, 0x78, 0x81, 0x8a, 0x92, 0x99,
+ 0x9e, 0xa7, 0xaf, 0xb4, 0xb9, 0xc3,
+ 0xc7, 0xd1, 0xc6, 0xd4, 0xd5, 0x6c,
+ 0x67, 0x71, 0x77, 0x00, 0x00, 0x18,
+ 0x27, 0x24, 0x5a, 0x68, 0x79, 0x78,
+ 0x81, 0x8a, 0x92, 0x99, 0x9e, 0xa7,
+ 0xaf, 0xb4, 0xb9, 0xc3, 0xc7, 0xd1,
+ 0xc6, 0xd4, 0xd5, 0x6c, 0x67, 0x77);
+
+ /* Unknown command, not listed in the HX8399-C datasheet (C6h) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_UNKNOWN2,
+ 0xff, 0xf9);
+
+ /* 6.3.16 SETPANEL (CCh) */
+ mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETPANEL,
+ 0x08);
+}
+
+static const struct drm_display_mode hl055fhav028c_mode = {
+ .hdisplay = 1080,
+ .hsync_start = 1080 + 32,
+ .hsync_end = 1080 + 32 + 8,
+ .htotal = 1080 + 32 + 8 + 32,
+ .vdisplay = 1920,
+ .vsync_start = 1920 + 16,
+ .vsync_end = 1920 + 16 + 2,
+ .vtotal = 1920 + 16 + 2 + 14,
+ .clock = 134920,
+ .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
+ .width_mm = 70,
+ .height_mm = 127,
+};
+
+static const struct hx8394_panel_desc hl055fhav028c_desc = {
+ .mode = &hl055fhav028c_mode,
+ .lanes = 4,
+ .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST,
+ .format = MIPI_DSI_FMT_RGB888,
+ .init_sequence = hl055fhav028c_init_sequence,
+};
+
static int hx8394_enable(struct drm_panel *panel)
{
struct hx8394 *ctx = panel_to_hx8394(panel);
@@ -683,6 +824,7 @@ static void hx8394_remove(struct mipi_dsi_device *dsi)
static const struct of_device_id hx8394_of_match[] = {
{ .compatible = "hannstar,hsd060bhw4", .data = &hsd060bhw4_desc },
+ { .compatible = "huiling,hl055fhav028c", .data = &hl055fhav028c_desc },
{ .compatible = "powkiddy,x55-panel", .data = &powkiddy_x55_desc },
{ .compatible = "microchip,ac40t08a-mipi-panel", .data = &mchp_ac40t08a_desc },
{ /* sentinel */ }
--
2.43.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 4/4] arm64: dts: rockchip: Add DSI panel support for gameforce-ace
2025-06-03 19:39 [PATCH 0/4] Add DSI Panel for Gameforce Ace Chris Morgan
` (2 preceding siblings ...)
2025-06-03 19:39 ` [PATCH 3/4] drm/panel: himax-hx8394: Add Support for " Chris Morgan
@ 2025-06-03 19:39 ` Chris Morgan
2025-06-04 11:37 ` Javier Martinez Canillas
2025-06-05 6:55 ` (subset) [PATCH 0/4] Add DSI Panel for Gameforce Ace Neil Armstrong
2025-06-09 10:23 ` Heiko Stuebner
5 siblings, 1 reply; 17+ messages in thread
From: Chris Morgan @ 2025-06-03 19:39 UTC (permalink / raw)
To: dri-devel
Cc: linux-rockchip, devicetree, sebastian.reichel, heiko, conor+dt,
krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst, simona,
airlied, quic_jesszhan, neil.armstrong, javierm, megi,
Chris Morgan
From: Chris Morgan <macromorgan@hotmail.com>
Enable the DSI controller, DSI DCPHY, and Huiling hl055fhav028c
1080x1920 panel for the Gameforce Ace.
Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
---
.../dts/rockchip/rk3588s-gameforce-ace.dts | 66 +++++++++++++++++++
1 file changed, 66 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-gameforce-ace.dts b/arch/arm64/boot/dts/rockchip/rk3588s-gameforce-ace.dts
index 873a2bd6a6de..bb7c1b732cc2 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588s-gameforce-ace.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588s-gameforce-ace.dts
@@ -7,6 +7,7 @@
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
#include <dt-bindings/thermal/thermal.h>
#include <dt-bindings/usb/pd.h>
#include "rk3588s.dtsi"
@@ -456,6 +457,42 @@ &cpu_b3 {
cpu-supply = <&vdd_cpu_big1_s0>;
};
+&dsi0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ panel@0 {
+ compatible = "huiling,hl055fhav028c", "himax,hx8399c";
+ reg = <0>;
+ backlight = <&backlight>;
+ iovcc-supply = <&vcc3v3_lcd0_n>;
+ pinctrl-0 = <&lcd_rst>;
+ pinctrl-names = "default";
+ reset-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_LOW>;
+ rotation = <90>;
+ vcc-supply = <&vcc3v3_lcd0_n>;
+
+ 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>;
+ };
+};
+
&gpu {
mali-supply = <&vdd_gpu_s0>;
status = "okay";
@@ -633,6 +670,10 @@ &i2s0_sdi0
status = "okay";
};
+&mipidcphy0 {
+ status = "okay";
+};
+
&package_thermal {
polling-delay = <1000>;
@@ -769,6 +810,13 @@ lcd_bl_en: lcd-bl-en {
};
};
+ lcd_rst {
+ lcd_rst: lcd-rst {
+ rockchip,pins =
+ <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
pcie-pins {
pcie_rst: pcie-rst {
rockchip,pins =
@@ -1239,3 +1287,21 @@ bluetooth {
shutdown-gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>;
};
};
+
+&vop {
+ status = "okay";
+};
+
+&vop_mmu {
+ 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>;
+ };
+};
--
2.43.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 3/4] drm/panel: himax-hx8394: Add Support for Huiling hl055fhav028c
2025-06-03 19:39 ` [PATCH 3/4] drm/panel: himax-hx8394: Add Support for " Chris Morgan
@ 2025-06-04 1:00 ` Jessica Zhang
2025-06-04 11:36 ` Javier Martinez Canillas
2025-06-05 11:54 ` Diederik de Haas
2 siblings, 0 replies; 17+ messages in thread
From: Jessica Zhang @ 2025-06-04 1:00 UTC (permalink / raw)
To: Chris Morgan, dri-devel
Cc: linux-rockchip, devicetree, sebastian.reichel, heiko, conor+dt,
krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst, simona,
airlied, quic_jesszhan, neil.armstrong, javierm, megi,
Chris Morgan
On 6/3/2025 12:39 PM, Chris Morgan wrote:
> From: Chris Morgan <macromorgan@hotmail.com>
>
> Add support for the Huiling hl055fhav028c panel as used on the
> Gameforce Ace handheld gaming console. This panel uses a Himax HX8399C
> display controller and requires a sparsely documented vendor provided
> init sequence. The display resolution is 1080x1920 and is 70mm by 127mm
> as stated in the manufacturer's documentation.
>
> Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
Reviewed-by: Jessica Zhang <quic_jesszhan@quicinc.com>
> ---
> drivers/gpu/drm/panel/panel-himax-hx8394.c | 142 +++++++++++++++++++++
> 1 file changed, 142 insertions(+)
>
> diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c
> index ff994bf0e3cc..16e450b156b7 100644
> --- a/drivers/gpu/drm/panel/panel-himax-hx8394.c
> +++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c
> @@ -477,6 +477,147 @@ static const struct hx8394_panel_desc mchp_ac40t08a_desc = {
> .init_sequence = mchp_ac40t08a_init_sequence,
> };
>
> +/*
> + * HL055FHAV028C is based on Himax HX8399, so datasheet pages are
> + * slightly different than HX8394 based panels.
> + */
> +static void hl055fhav028c_init_sequence(struct mipi_dsi_multi_context *dsi_ctx)
> +{
> + /* 6.3.6 SETEXTC: Set extension command (B9h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETEXTC,
> + 0xff, 0x83, 0x99);
> +
> + /* 6.3.17 SETOFFSET: Set offset voltage (D2h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETOFFSET,
> + 0x77);
> +
> + /* 6.3.1 SETPOWER: Set power (B1h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETPOWER,
> + 0x02, 0x04, 0x74, 0x94, 0x01, 0x32,
> + 0x33, 0x11, 0x11, 0xab, 0x4d, 0x56,
> + 0x73, 0x02, 0x02);
> +
> + /* 6.3.2 SETDISP: Set display related register (B2h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETDISP,
> + 0x00, 0x80, 0x80, 0xae, 0x05, 0x07,
> + 0x5a, 0x11, 0x00, 0x00, 0x10, 0x1e,
> + 0x70, 0x03, 0xd4);
> +
> + /* 6.3.3 SETCYC: Set display waveform cycles (B4h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETCYC,
> + 0x00, 0xff, 0x02, 0xc0, 0x02, 0xc0,
> + 0x00, 0x00, 0x08, 0x00, 0x04, 0x06,
> + 0x00, 0x32, 0x04, 0x0a, 0x08, 0x21,
> + 0x03, 0x01, 0x00, 0x0f, 0xb8, 0x8b,
> + 0x02, 0xc0, 0x02, 0xc0, 0x00, 0x00,
> + 0x08, 0x00, 0x04, 0x06, 0x00, 0x32,
> + 0x04, 0x0a, 0x08, 0x01, 0x00, 0x0f,
> + 0xb8, 0x01);
> +
> + /* 6.3.18 SETGIP0: Set GIP Option0 (D3h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETGIP0,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x06, 0x00, 0x00, 0x10, 0x04, 0x00,
> + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
> + 0x00, 0x05, 0x05, 0x07, 0x00, 0x00,
> + 0x00, 0x05, 0x40);
> +
> + /* 6.3.19 Set GIP Option1 (D5h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETGIP1,
> + 0x18, 0x18, 0x19, 0x19, 0x18, 0x18,
> + 0x21, 0x20, 0x01, 0x00, 0x07, 0x06,
> + 0x05, 0x04, 0x03, 0x02, 0x18, 0x18,
> + 0x18, 0x18, 0x18, 0x18, 0x2f, 0x2f,
> + 0x30, 0x30, 0x31, 0x31, 0x18, 0x18,
> + 0x18, 0x18);
> +
> + /* 6.3.20 Set GIP Option2 (D6h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETGIP2,
> + 0x18, 0x18, 0x19, 0x19, 0x40, 0x40,
> + 0x20, 0x21, 0x02, 0x03, 0x04, 0x05,
> + 0x06, 0x07, 0x00, 0x01, 0x40, 0x40,
> + 0x40, 0x40, 0x40, 0x40, 0x2f, 0x2f,
> + 0x30, 0x30, 0x31, 0x31, 0x40, 0x40,
> + 0x40, 0x40);
> +
> + /* 6.3.21 Set GIP Option3 (D8h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_UNKNOWN4,
> + 0xa2, 0xaa, 0x02, 0xa0, 0xa2, 0xa8,
> + 0x02, 0xa0, 0xb0, 0x00, 0x00, 0x00,
> + 0xb0, 0x00, 0x00, 0x00);
> +
> + /* 6.3.9 Set register bank (BDh) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETREGBANK,
> + 0x01);
> +
> + /* 6.3.21 Set GIP Option3 (D8h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_UNKNOWN4,
> + 0xb0, 0x00, 0x00, 0x00, 0xb0, 0x00,
> + 0x00, 0x00, 0xe2, 0xaa, 0x03, 0xf0,
> + 0xe2, 0xaa, 0x03, 0xf0);
> +
> + /* 6.3.9 Set register bank (BDh) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETREGBANK,
> + 0x02);
> +
> + /* 6.3.21 Set GIP Option3 (D8h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_UNKNOWN4,
> + 0xe2, 0xaa, 0x03, 0xf0, 0xe2, 0xaa,
> + 0x03, 0xf0);
> +
> + /* 6.3.9 Set register bank (BDh) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETREGBANK,
> + 0x00);
> +
> + /* 6.3.4 SETVCOM: Set VCOM voltage (B6h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETVCOM,
> + 0x7a, 0x7a);
> +
> + /* 6.3.26 SETGAMMA: Set gamma curve related setting (E0h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETGAMMA,
> + 0x00, 0x18, 0x27, 0x24, 0x5a, 0x68,
> + 0x79, 0x78, 0x81, 0x8a, 0x92, 0x99,
> + 0x9e, 0xa7, 0xaf, 0xb4, 0xb9, 0xc3,
> + 0xc7, 0xd1, 0xc6, 0xd4, 0xd5, 0x6c,
> + 0x67, 0x71, 0x77, 0x00, 0x00, 0x18,
> + 0x27, 0x24, 0x5a, 0x68, 0x79, 0x78,
> + 0x81, 0x8a, 0x92, 0x99, 0x9e, 0xa7,
> + 0xaf, 0xb4, 0xb9, 0xc3, 0xc7, 0xd1,
> + 0xc6, 0xd4, 0xd5, 0x6c, 0x67, 0x77);
> +
> + /* Unknown command, not listed in the HX8399-C datasheet (C6h) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_UNKNOWN2,
> + 0xff, 0xf9);
> +
> + /* 6.3.16 SETPANEL (CCh) */
> + mipi_dsi_dcs_write_seq_multi(dsi_ctx, HX8394_CMD_SETPANEL,
> + 0x08);
> +}
> +
> +static const struct drm_display_mode hl055fhav028c_mode = {
> + .hdisplay = 1080,
> + .hsync_start = 1080 + 32,
> + .hsync_end = 1080 + 32 + 8,
> + .htotal = 1080 + 32 + 8 + 32,
> + .vdisplay = 1920,
> + .vsync_start = 1920 + 16,
> + .vsync_end = 1920 + 16 + 2,
> + .vtotal = 1920 + 16 + 2 + 14,
> + .clock = 134920,
> + .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
> + .width_mm = 70,
> + .height_mm = 127,
> +};
> +
> +static const struct hx8394_panel_desc hl055fhav028c_desc = {
> + .mode = &hl055fhav028c_mode,
> + .lanes = 4,
> + .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST,
> + .format = MIPI_DSI_FMT_RGB888,
> + .init_sequence = hl055fhav028c_init_sequence,
> +};
> +
> static int hx8394_enable(struct drm_panel *panel)
> {
> struct hx8394 *ctx = panel_to_hx8394(panel);
> @@ -683,6 +824,7 @@ static void hx8394_remove(struct mipi_dsi_device *dsi)
>
> static const struct of_device_id hx8394_of_match[] = {
> { .compatible = "hannstar,hsd060bhw4", .data = &hsd060bhw4_desc },
> + { .compatible = "huiling,hl055fhav028c", .data = &hl055fhav028c_desc },
> { .compatible = "powkiddy,x55-panel", .data = &powkiddy_x55_desc },
> { .compatible = "microchip,ac40t08a-mipi-panel", .data = &mchp_ac40t08a_desc },
> { /* sentinel */ }
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/4] dt-bindings: vendor-prefixes: Add prefix for Huiling
2025-06-03 19:39 ` [PATCH 1/4] dt-bindings: vendor-prefixes: Add prefix for Huiling Chris Morgan
@ 2025-06-04 11:29 ` Krzysztof Kozlowski
0 siblings, 0 replies; 17+ messages in thread
From: Krzysztof Kozlowski @ 2025-06-04 11:29 UTC (permalink / raw)
To: Chris Morgan
Cc: dri-devel, linux-rockchip, devicetree, sebastian.reichel, heiko,
conor+dt, krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst,
simona, airlied, quic_jesszhan, neil.armstrong, javierm, megi,
Chris Morgan
On Tue, Jun 03, 2025 at 02:39:27PM GMT, Chris Morgan wrote:
> From: Chris Morgan <macromorgan@hotmail.com>
>
> Shenzhen Huiling Information Technology Co. Ltd. specializes in the
> research and manufacturing of display and touch screens for industrial
> usage. https://en.szhuiling.com/
>
> Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> ---
> Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
> 1 file changed, 2 insertions(+)
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/4] dt-bindings: display: himax-hx8394: Add Huiling hl055fhav028c
2025-06-03 19:39 ` [PATCH 2/4] dt-bindings: display: himax-hx8394: Add Huiling hl055fhav028c Chris Morgan
@ 2025-06-04 11:30 ` Krzysztof Kozlowski
2025-06-04 11:35 ` Javier Martinez Canillas
1 sibling, 0 replies; 17+ messages in thread
From: Krzysztof Kozlowski @ 2025-06-04 11:30 UTC (permalink / raw)
To: Chris Morgan
Cc: dri-devel, linux-rockchip, devicetree, sebastian.reichel, heiko,
conor+dt, krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst,
simona, airlied, quic_jesszhan, neil.armstrong, javierm, megi,
Chris Morgan
On Tue, Jun 03, 2025 at 02:39:28PM GMT, Chris Morgan wrote:
> From: Chris Morgan <macromorgan@hotmail.com>
>
> Add compatible string for the Huiling hl055fhav028c. This panel is
> based on the Himax HX8399C display controller which is extremely
> similar to the existing HX8394. Add a new constant for
> himax,hx8399c for this new display controller as well.
>
> Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> ---
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/4] dt-bindings: display: himax-hx8394: Add Huiling hl055fhav028c
2025-06-03 19:39 ` [PATCH 2/4] dt-bindings: display: himax-hx8394: Add Huiling hl055fhav028c Chris Morgan
2025-06-04 11:30 ` Krzysztof Kozlowski
@ 2025-06-04 11:35 ` Javier Martinez Canillas
1 sibling, 0 replies; 17+ messages in thread
From: Javier Martinez Canillas @ 2025-06-04 11:35 UTC (permalink / raw)
To: Chris Morgan, dri-devel
Cc: linux-rockchip, devicetree, sebastian.reichel, heiko, conor+dt,
krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst, simona,
airlied, quic_jesszhan, neil.armstrong, megi, Chris Morgan
Chris Morgan <macroalpha82@gmail.com> writes:
> From: Chris Morgan <macromorgan@hotmail.com>
>
> Add compatible string for the Huiling hl055fhav028c. This panel is
> based on the Himax HX8399C display controller which is extremely
> similar to the existing HX8394. Add a new constant for
> himax,hx8399c for this new display controller as well.
>
> Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> ---
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 3/4] drm/panel: himax-hx8394: Add Support for Huiling hl055fhav028c
2025-06-03 19:39 ` [PATCH 3/4] drm/panel: himax-hx8394: Add Support for " Chris Morgan
2025-06-04 1:00 ` Jessica Zhang
@ 2025-06-04 11:36 ` Javier Martinez Canillas
2025-06-05 11:54 ` Diederik de Haas
2 siblings, 0 replies; 17+ messages in thread
From: Javier Martinez Canillas @ 2025-06-04 11:36 UTC (permalink / raw)
To: Chris Morgan, dri-devel
Cc: linux-rockchip, devicetree, sebastian.reichel, heiko, conor+dt,
krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst, simona,
airlied, quic_jesszhan, neil.armstrong, megi, Chris Morgan
Chris Morgan <macroalpha82@gmail.com> writes:
> From: Chris Morgan <macromorgan@hotmail.com>
>
> Add support for the Huiling hl055fhav028c panel as used on the
> Gameforce Ace handheld gaming console. This panel uses a Himax HX8399C
> display controller and requires a sparsely documented vendor provided
> init sequence. The display resolution is 1080x1920 and is 70mm by 127mm
> as stated in the manufacturer's documentation.
>
> Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> ---
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 4/4] arm64: dts: rockchip: Add DSI panel support for gameforce-ace
2025-06-03 19:39 ` [PATCH 4/4] arm64: dts: rockchip: Add DSI panel support for gameforce-ace Chris Morgan
@ 2025-06-04 11:37 ` Javier Martinez Canillas
0 siblings, 0 replies; 17+ messages in thread
From: Javier Martinez Canillas @ 2025-06-04 11:37 UTC (permalink / raw)
To: Chris Morgan, dri-devel
Cc: linux-rockchip, devicetree, sebastian.reichel, heiko, conor+dt,
krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst, simona,
airlied, quic_jesszhan, neil.armstrong, megi, Chris Morgan
Chris Morgan <macroalpha82@gmail.com> writes:
> From: Chris Morgan <macromorgan@hotmail.com>
>
> Enable the DSI controller, DSI DCPHY, and Huiling hl055fhav028c
> 1080x1920 panel for the Gameforce Ace.
>
> Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> ---
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
--
Best regards,
Javier Martinez Canillas
Core Platforms
Red Hat
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: (subset) [PATCH 0/4] Add DSI Panel for Gameforce Ace
2025-06-03 19:39 [PATCH 0/4] Add DSI Panel for Gameforce Ace Chris Morgan
` (3 preceding siblings ...)
2025-06-03 19:39 ` [PATCH 4/4] arm64: dts: rockchip: Add DSI panel support for gameforce-ace Chris Morgan
@ 2025-06-05 6:55 ` Neil Armstrong
2025-06-09 10:23 ` Heiko Stuebner
5 siblings, 0 replies; 17+ messages in thread
From: Neil Armstrong @ 2025-06-05 6:55 UTC (permalink / raw)
To: dri-devel, Chris Morgan
Cc: linux-rockchip, devicetree, sebastian.reichel, heiko, conor+dt,
krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst, simona,
airlied, quic_jesszhan, javierm, megi, Chris Morgan
Hi,
On Tue, 03 Jun 2025 14:39:26 -0500, Chris Morgan wrote:
> From: Chris Morgan <macromorgan@hotmail.com>
>
> Add support for the DSI panel as found on the Gameforce Ace handheld
> gaming console based on the RK3588s.
>
> Chris Morgan (4):
> dt-bindings: vendor-prefixes: Add prefix for Huiling
> dt-bindings: display: himax-hx8394: Add Huiling hl055fhav028c
> drm/panel: himax-hx8394: Add Support for Huiling hl055fhav028c
> arm64: dts: rockchip: Add DSI panel support for gameforce-ace
>
> [...]
Thanks, Applied to https://gitlab.freedesktop.org/drm/misc/kernel.git (drm-misc-next)
[1/4] dt-bindings: vendor-prefixes: Add prefix for Huiling
https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/4d20c1b073e6b501ec82db2d409f27a8eccb2b5e
[2/4] dt-bindings: display: himax-hx8394: Add Huiling hl055fhav028c
https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/ab9be0b75af59876727b8a88dfc28d6b59a70446
[3/4] drm/panel: himax-hx8394: Add Support for Huiling hl055fhav028c
https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/b837937c0237ea4f17493bc17f8ccd4a5e29b2c5
--
Neil
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 3/4] drm/panel: himax-hx8394: Add Support for Huiling hl055fhav028c
2025-06-03 19:39 ` [PATCH 3/4] drm/panel: himax-hx8394: Add Support for " Chris Morgan
2025-06-04 1:00 ` Jessica Zhang
2025-06-04 11:36 ` Javier Martinez Canillas
@ 2025-06-05 11:54 ` Diederik de Haas
2025-06-05 12:46 ` Heiko Stübner
2025-06-05 13:29 ` Chris Morgan
2 siblings, 2 replies; 17+ messages in thread
From: Diederik de Haas @ 2025-06-05 11:54 UTC (permalink / raw)
To: Chris Morgan, dri-devel
Cc: linux-rockchip, devicetree, sebastian.reichel, heiko, conor+dt,
krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst, simona,
airlied, quic_jesszhan, neil.armstrong, javierm, megi,
Chris Morgan
[-- Attachment #1: Type: text/plain, Size: 2415 bytes --]
On Tue Jun 3, 2025 at 9:39 PM CEST, Chris Morgan wrote:
> From: Chris Morgan <macromorgan@hotmail.com>
>
> Add support for the Huiling hl055fhav028c panel as used on the
> Gameforce Ace handheld gaming console. This panel uses a Himax HX8399C
> display controller and requires a sparsely documented vendor provided
> init sequence. The display resolution is 1080x1920 and is 70mm by 127mm
> as stated in the manufacturer's documentation.
>
> Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> ---
> drivers/gpu/drm/panel/panel-himax-hx8394.c | 142 +++++++++++++++++++++
> 1 file changed, 142 insertions(+)
>
> diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c
> index ff994bf0e3cc..16e450b156b7 100644
> --- a/drivers/gpu/drm/panel/panel-himax-hx8394.c
> +++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c
> @@ -477,6 +477,147 @@ static const struct hx8394_panel_desc mchp_ac40t08a_desc = {
> .init_sequence = mchp_ac40t08a_init_sequence,
> };
> <snip>
> +
> +static const struct drm_display_mode hl055fhav028c_mode = {
> + .hdisplay = 1080,
> + .hsync_start = 1080 + 32,
> + .hsync_end = 1080 + 32 + 8,
> + .htotal = 1080 + 32 + 8 + 32,
> + .vdisplay = 1920,
> + .vsync_start = 1920 + 16,
> + .vsync_end = 1920 + 16 + 2,
> + .vtotal = 1920 + 16 + 2 + 14,
Shouldn't this be 's/14/16/' ?
Cheers,
Diederik
> + .clock = 134920,
> + .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
> + .width_mm = 70,
> + .height_mm = 127,
> +};
> +
> +static const struct hx8394_panel_desc hl055fhav028c_desc = {
> + .mode = &hl055fhav028c_mode,
> + .lanes = 4,
> + .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST,
> + .format = MIPI_DSI_FMT_RGB888,
> + .init_sequence = hl055fhav028c_init_sequence,
> +};
> +
> static int hx8394_enable(struct drm_panel *panel)
> {
> struct hx8394 *ctx = panel_to_hx8394(panel);
> @@ -683,6 +824,7 @@ static void hx8394_remove(struct mipi_dsi_device *dsi)
>
> static const struct of_device_id hx8394_of_match[] = {
> { .compatible = "hannstar,hsd060bhw4", .data = &hsd060bhw4_desc },
> + { .compatible = "huiling,hl055fhav028c", .data = &hl055fhav028c_desc },
> { .compatible = "powkiddy,x55-panel", .data = &powkiddy_x55_desc },
> { .compatible = "microchip,ac40t08a-mipi-panel", .data = &mchp_ac40t08a_desc },
> { /* sentinel */ }
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 3/4] drm/panel: himax-hx8394: Add Support for Huiling hl055fhav028c
2025-06-05 11:54 ` Diederik de Haas
@ 2025-06-05 12:46 ` Heiko Stübner
2025-06-05 12:55 ` Diederik de Haas
2025-06-05 13:29 ` Chris Morgan
1 sibling, 1 reply; 17+ messages in thread
From: Heiko Stübner @ 2025-06-05 12:46 UTC (permalink / raw)
To: Chris Morgan, dri-devel, Diederik de Haas
Cc: linux-rockchip, devicetree, sebastian.reichel, conor+dt, krzk+dt,
robh, tzimmermann, mripard, maarten.lankhorst, simona, airlied,
quic_jesszhan, neil.armstrong, javierm, megi, Chris Morgan
Am Donnerstag, 5. Juni 2025, 13:54:50 Mitteleuropäische Sommerzeit schrieb Diederik de Haas:
> On Tue Jun 3, 2025 at 9:39 PM CEST, Chris Morgan wrote:
> > From: Chris Morgan <macromorgan@hotmail.com>
> >
> > Add support for the Huiling hl055fhav028c panel as used on the
> > Gameforce Ace handheld gaming console. This panel uses a Himax HX8399C
> > display controller and requires a sparsely documented vendor provided
> > init sequence. The display resolution is 1080x1920 and is 70mm by 127mm
> > as stated in the manufacturer's documentation.
> >
> > Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> > ---
> > drivers/gpu/drm/panel/panel-himax-hx8394.c | 142 +++++++++++++++++++++
> > 1 file changed, 142 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c
> > index ff994bf0e3cc..16e450b156b7 100644
> > --- a/drivers/gpu/drm/panel/panel-himax-hx8394.c
> > +++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c
> > @@ -477,6 +477,147 @@ static const struct hx8394_panel_desc mchp_ac40t08a_desc = {
> > .init_sequence = mchp_ac40t08a_init_sequence,
> > };
> > <snip>
> > +
> > +static const struct drm_display_mode hl055fhav028c_mode = {
> > + .hdisplay = 1080,
> > + .hsync_start = 1080 + 32,
> > + .hsync_end = 1080 + 32 + 8,
> > + .htotal = 1080 + 32 + 8 + 32,
> > + .vdisplay = 1920,
> > + .vsync_start = 1920 + 16,
> > + .vsync_end = 1920 + 16 + 2,
> > + .vtotal = 1920 + 16 + 2 + 14,
>
> Shouldn't this be 's/14/16/' ?
Could you give a reason for why you think so please, so that we
don't dance around the perceived problem too long :-) .
The front-porch / back-porch values are not generally identical
that is more a random event.
Grabbing a random panel like the panel-leadtek-ltk050h3146w.c
you'll see the values not matching.
So those timing values are specific to the panel and in the common
case not identical.
Heiko
>
> Cheers,
> Diederik
>
> > + .clock = 134920,
> > + .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
> > + .width_mm = 70,
> > + .height_mm = 127,
> > +};
> > +
> > +static const struct hx8394_panel_desc hl055fhav028c_desc = {
> > + .mode = &hl055fhav028c_mode,
> > + .lanes = 4,
> > + .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST,
> > + .format = MIPI_DSI_FMT_RGB888,
> > + .init_sequence = hl055fhav028c_init_sequence,
> > +};
> > +
> > static int hx8394_enable(struct drm_panel *panel)
> > {
> > struct hx8394 *ctx = panel_to_hx8394(panel);
> > @@ -683,6 +824,7 @@ static void hx8394_remove(struct mipi_dsi_device *dsi)
> >
> > static const struct of_device_id hx8394_of_match[] = {
> > { .compatible = "hannstar,hsd060bhw4", .data = &hsd060bhw4_desc },
> > + { .compatible = "huiling,hl055fhav028c", .data = &hl055fhav028c_desc },
> > { .compatible = "powkiddy,x55-panel", .data = &powkiddy_x55_desc },
> > { .compatible = "microchip,ac40t08a-mipi-panel", .data = &mchp_ac40t08a_desc },
> > { /* sentinel */ }
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 3/4] drm/panel: himax-hx8394: Add Support for Huiling hl055fhav028c
2025-06-05 12:46 ` Heiko Stübner
@ 2025-06-05 12:55 ` Diederik de Haas
0 siblings, 0 replies; 17+ messages in thread
From: Diederik de Haas @ 2025-06-05 12:55 UTC (permalink / raw)
To: Heiko Stübner, Chris Morgan, dri-devel
Cc: linux-rockchip, devicetree, sebastian.reichel, conor+dt, krzk+dt,
robh, tzimmermann, mripard, maarten.lankhorst, simona, airlied,
quic_jesszhan, neil.armstrong, javierm, megi, Chris Morgan
[-- Attachment #1: Type: text/plain, Size: 3517 bytes --]
On Thu Jun 5, 2025 at 2:46 PM CEST, Heiko Stübner wrote:
> Am Donnerstag, 5. Juni 2025, 13:54:50 Mitteleuropäische Sommerzeit schrieb Diederik de Haas:
>> On Tue Jun 3, 2025 at 9:39 PM CEST, Chris Morgan wrote:
>> > From: Chris Morgan <macromorgan@hotmail.com>
>> >
>> > Add support for the Huiling hl055fhav028c panel as used on the
>> > Gameforce Ace handheld gaming console. This panel uses a Himax HX8399C
>> > display controller and requires a sparsely documented vendor provided
>> > init sequence. The display resolution is 1080x1920 and is 70mm by 127mm
>> > as stated in the manufacturer's documentation.
>> >
>> > Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
>> > ---
>> > drivers/gpu/drm/panel/panel-himax-hx8394.c | 142 +++++++++++++++++++++
>> > 1 file changed, 142 insertions(+)
>> >
>> > diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c
>> > index ff994bf0e3cc..16e450b156b7 100644
>> > --- a/drivers/gpu/drm/panel/panel-himax-hx8394.c
>> > +++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c
>> > @@ -477,6 +477,147 @@ static const struct hx8394_panel_desc mchp_ac40t08a_desc = {
>> > .init_sequence = mchp_ac40t08a_init_sequence,
>> > };
>> > <snip>
>> > +
>> > +static const struct drm_display_mode hl055fhav028c_mode = {
>> > + .hdisplay = 1080,
>> > + .hsync_start = 1080 + 32,
>> > + .hsync_end = 1080 + 32 + 8,
>> > + .htotal = 1080 + 32 + 8 + 32,
>> > + .vdisplay = 1920,
>> > + .vsync_start = 1920 + 16,
>> > + .vsync_end = 1920 + 16 + 2,
>> > + .vtotal = 1920 + 16 + 2 + 14,
>>
>> Shouldn't this be 's/14/16/' ?
>
> Could you give a reason for why you think so please, so that we
> don't dance around the perceived problem too long :-) .
Yeah, sorry.
.htotal appears like the value from .hsync_end + .hsync_start (minus the
1080) and with that same logic, I would expect .vtotal to be .vsync_end
+ vsync_start (minus the 1920). So the '14' could've been a typo.
Hope that clarifies my thought process.
Cheers,
Diederik
> The front-porch / back-porch values are not generally identical
> that is more a random event.
>
> Grabbing a random panel like the panel-leadtek-ltk050h3146w.c
> you'll see the values not matching.
>
> So those timing values are specific to the panel and in the common
> case not identical.
>
>
> Heiko
>
>>
>> Cheers,
>> Diederik
>>
>> > + .clock = 134920,
>> > + .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
>> > + .width_mm = 70,
>> > + .height_mm = 127,
>> > +};
>> > +
>> > +static const struct hx8394_panel_desc hl055fhav028c_desc = {
>> > + .mode = &hl055fhav028c_mode,
>> > + .lanes = 4,
>> > + .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST,
>> > + .format = MIPI_DSI_FMT_RGB888,
>> > + .init_sequence = hl055fhav028c_init_sequence,
>> > +};
>> > +
>> > static int hx8394_enable(struct drm_panel *panel)
>> > {
>> > struct hx8394 *ctx = panel_to_hx8394(panel);
>> > @@ -683,6 +824,7 @@ static void hx8394_remove(struct mipi_dsi_device *dsi)
>> >
>> > static const struct of_device_id hx8394_of_match[] = {
>> > { .compatible = "hannstar,hsd060bhw4", .data = &hsd060bhw4_desc },
>> > + { .compatible = "huiling,hl055fhav028c", .data = &hl055fhav028c_desc },
>> > { .compatible = "powkiddy,x55-panel", .data = &powkiddy_x55_desc },
>> > { .compatible = "microchip,ac40t08a-mipi-panel", .data = &mchp_ac40t08a_desc },
>> > { /* sentinel */ }
>>
>>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 3/4] drm/panel: himax-hx8394: Add Support for Huiling hl055fhav028c
2025-06-05 11:54 ` Diederik de Haas
2025-06-05 12:46 ` Heiko Stübner
@ 2025-06-05 13:29 ` Chris Morgan
1 sibling, 0 replies; 17+ messages in thread
From: Chris Morgan @ 2025-06-05 13:29 UTC (permalink / raw)
To: Diederik de Haas
Cc: Chris Morgan, dri-devel, linux-rockchip, devicetree,
sebastian.reichel, heiko, conor+dt, krzk+dt, robh, tzimmermann,
mripard, maarten.lankhorst, simona, airlied, quic_jesszhan,
neil.armstrong, javierm, megi
On Thu, Jun 05, 2025 at 01:54:50PM +0200, Diederik de Haas wrote:
> On Tue Jun 3, 2025 at 9:39 PM CEST, Chris Morgan wrote:
> > From: Chris Morgan <macromorgan@hotmail.com>
> >
> > Add support for the Huiling hl055fhav028c panel as used on the
> > Gameforce Ace handheld gaming console. This panel uses a Himax HX8399C
> > display controller and requires a sparsely documented vendor provided
> > init sequence. The display resolution is 1080x1920 and is 70mm by 127mm
> > as stated in the manufacturer's documentation.
> >
> > Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
> > ---
> > drivers/gpu/drm/panel/panel-himax-hx8394.c | 142 +++++++++++++++++++++
> > 1 file changed, 142 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/panel/panel-himax-hx8394.c b/drivers/gpu/drm/panel/panel-himax-hx8394.c
> > index ff994bf0e3cc..16e450b156b7 100644
> > --- a/drivers/gpu/drm/panel/panel-himax-hx8394.c
> > +++ b/drivers/gpu/drm/panel/panel-himax-hx8394.c
> > @@ -477,6 +477,147 @@ static const struct hx8394_panel_desc mchp_ac40t08a_desc = {
> > .init_sequence = mchp_ac40t08a_init_sequence,
> > };
> > <snip>
> > +
> > +static const struct drm_display_mode hl055fhav028c_mode = {
> > + .hdisplay = 1080,
> > + .hsync_start = 1080 + 32,
> > + .hsync_end = 1080 + 32 + 8,
> > + .htotal = 1080 + 32 + 8 + 32,
> > + .vdisplay = 1920,
> > + .vsync_start = 1920 + 16,
> > + .vsync_end = 1920 + 16 + 2,
> > + .vtotal = 1920 + 16 + 2 + 14,
>
> Shouldn't this be 's/14/16/' ?
>
> Cheers,
> Diederik
>
With the exception of the pixel clock, these are the values from the
manufacturer. I did increase the pixel clock from 124MHz to 135MHz so
the panel would run at ~60hz. After extensive testing I can confirm
a 135MHz pixel clock works well for this panel which is why I am
using that value.
Thank you,
Chris
> > + .clock = 134920,
> > + .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
> > + .width_mm = 70,
> > + .height_mm = 127,
> > +};
> > +
> > +static const struct hx8394_panel_desc hl055fhav028c_desc = {
> > + .mode = &hl055fhav028c_mode,
> > + .lanes = 4,
> > + .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST,
> > + .format = MIPI_DSI_FMT_RGB888,
> > + .init_sequence = hl055fhav028c_init_sequence,
> > +};
> > +
> > static int hx8394_enable(struct drm_panel *panel)
> > {
> > struct hx8394 *ctx = panel_to_hx8394(panel);
> > @@ -683,6 +824,7 @@ static void hx8394_remove(struct mipi_dsi_device *dsi)
> >
> > static const struct of_device_id hx8394_of_match[] = {
> > { .compatible = "hannstar,hsd060bhw4", .data = &hsd060bhw4_desc },
> > + { .compatible = "huiling,hl055fhav028c", .data = &hl055fhav028c_desc },
> > { .compatible = "powkiddy,x55-panel", .data = &powkiddy_x55_desc },
> > { .compatible = "microchip,ac40t08a-mipi-panel", .data = &mchp_ac40t08a_desc },
> > { /* sentinel */ }
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: (subset) [PATCH 0/4] Add DSI Panel for Gameforce Ace
2025-06-03 19:39 [PATCH 0/4] Add DSI Panel for Gameforce Ace Chris Morgan
` (4 preceding siblings ...)
2025-06-05 6:55 ` (subset) [PATCH 0/4] Add DSI Panel for Gameforce Ace Neil Armstrong
@ 2025-06-09 10:23 ` Heiko Stuebner
5 siblings, 0 replies; 17+ messages in thread
From: Heiko Stuebner @ 2025-06-09 10:23 UTC (permalink / raw)
To: dri-devel, Chris Morgan
Cc: Heiko Stuebner, linux-rockchip, devicetree, sebastian.reichel,
conor+dt, krzk+dt, robh, tzimmermann, mripard, maarten.lankhorst,
simona, airlied, quic_jesszhan, neil.armstrong, javierm, megi,
Chris Morgan
On Tue, 03 Jun 2025 14:39:26 -0500, Chris Morgan wrote:
> Add support for the DSI panel as found on the Gameforce Ace handheld
> gaming console based on the RK3588s.
>
> Chris Morgan (4):
> dt-bindings: vendor-prefixes: Add prefix for Huiling
> dt-bindings: display: himax-hx8394: Add Huiling hl055fhav028c
> drm/panel: himax-hx8394: Add Support for Huiling hl055fhav028c
> arm64: dts: rockchip: Add DSI panel support for gameforce-ace
>
> [...]
Applied, thanks!
[4/4] arm64: dts: rockchip: Add DSI panel support for gameforce-ace
commit: 6b28769116971a4427ea09ed2cb1cf1afa79ab82
Best regards,
--
Heiko Stuebner <heiko@sntech.de>
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2025-06-09 10:23 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-03 19:39 [PATCH 0/4] Add DSI Panel for Gameforce Ace Chris Morgan
2025-06-03 19:39 ` [PATCH 1/4] dt-bindings: vendor-prefixes: Add prefix for Huiling Chris Morgan
2025-06-04 11:29 ` Krzysztof Kozlowski
2025-06-03 19:39 ` [PATCH 2/4] dt-bindings: display: himax-hx8394: Add Huiling hl055fhav028c Chris Morgan
2025-06-04 11:30 ` Krzysztof Kozlowski
2025-06-04 11:35 ` Javier Martinez Canillas
2025-06-03 19:39 ` [PATCH 3/4] drm/panel: himax-hx8394: Add Support for " Chris Morgan
2025-06-04 1:00 ` Jessica Zhang
2025-06-04 11:36 ` Javier Martinez Canillas
2025-06-05 11:54 ` Diederik de Haas
2025-06-05 12:46 ` Heiko Stübner
2025-06-05 12:55 ` Diederik de Haas
2025-06-05 13:29 ` Chris Morgan
2025-06-03 19:39 ` [PATCH 4/4] arm64: dts: rockchip: Add DSI panel support for gameforce-ace Chris Morgan
2025-06-04 11:37 ` Javier Martinez Canillas
2025-06-05 6:55 ` (subset) [PATCH 0/4] Add DSI Panel for Gameforce Ace Neil Armstrong
2025-06-09 10:23 ` Heiko Stuebner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).