* [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
* 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
* [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
* 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
* [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
* 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 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 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
* [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 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: (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).