dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [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).