* [PATCH 0/4] drm/panel: ilitek-ili9488: add the PocketGo S30 panel
@ 2026-11-03 11:05 Romain TISSERAND
2026-11-03 11:05 ` [PATCH 1/4] dt-bindings: vendor-prefixes: add PocketGo Romain TISSERAND
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Romain TISSERAND @ 2026-11-03 11:05 UTC (permalink / raw)
To: Igor Reznichenko, Neil Armstrong, Jessica Zhang
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
David Airlie, Simona Vetter, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, dri-devel, devicetree, linux-kernel,
sashiko-reviews
The PocketGo S30 is an Allwinner A33 handheld with a 320x480 1-lane
MIPI-DSI panel built around an Ilitek ILI9488. The panel uses the
existing ILI9488 DSI driver with its own init sequence (from the stock
kernel), timings and DSI mode; the sequence is close to the
E35GH-I-MW800CB one.
Patch 1 adds the vendor prefix. Patch 2 makes the binding's port
optional: the Allwinner sun6i DSI host links its panel as a child node
and has no output port, and the driver does not use one. Patch 3 adds
the compatible, patch 4 the panel. The board devicetree will be sent to
the sunxi tree separately.
Testing: each patch built with W=1 for arm (multi_v7_defconfig,
DRM_PANEL_ILITEK_ILI9488=y and =m) and arm64 (defconfig, =m), no
warnings; dt_binding_check clean for ilitek,ili9488.yaml and
vendor-prefixes.yaml. Tested on a PocketGo S30 on 7.3.1 with the final
version of this series (A33 sun6i DSI, one lane): the panel probes and
attaches to the DSI host, and the picture shows the right colors, size
and position.
Tool disclosure: this series was prepared with Claude Opus 5.5
(Anthropic) as a coding assistant, in an interactive session: it
extracted the stock init table and timings, wrote the code, the
bindings and the messages. I reviewed and understand it, and tested it
as described.
Romain TISSERAND (4):
dt-bindings: vendor-prefixes: add PocketGo
dt-bindings: display: panel: ilitek,ili9488: make the port optional
dt-bindings: display: panel: ilitek,ili9488: add the PocketGo S30
panel
drm/panel: ilitek-ili9488: add the PocketGo S30 panel
.../display/panel/ilitek,ili9488.yaml | 2 +-
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
drivers/gpu/drm/panel/panel-ilitek-ili9488.c | 55 +++++++++++++++++++
3 files changed, 58 insertions(+), 1 deletion(-)
base-commit: a1e63ab695ad76850ab9787b9eb6aab695dc2965
--
2.43.0
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 1/4] dt-bindings: vendor-prefixes: add PocketGo 2026-11-03 11:05 [PATCH 0/4] drm/panel: ilitek-ili9488: add the PocketGo S30 panel Romain TISSERAND @ 2026-11-03 11:05 ` Romain TISSERAND 2026-11-03 11:05 ` [PATCH 2/4] dt-bindings: display: panel: ilitek,ili9488: make the port optional Romain TISSERAND ` (2 subsequent siblings) 3 siblings, 0 replies; 5+ messages in thread From: Romain TISSERAND @ 2026-11-03 11:05 UTC (permalink / raw) To: Igor Reznichenko, Neil Armstrong, Jessica Zhang Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley, dri-devel, devicetree, linux-kernel, sashiko-reviews PocketGo is the brand of handheld game consoles such as the PocketGo S30 (Allwinner A33). Signed-off-by: Romain TISSERAND <romain.tisserand@gmail.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 ba2002969373..f538e6a27ec0 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -1339,6 +1339,8 @@ patternProperties: description: PNI Sensor Corporation "^pocketbook,.*": description: PocketBook International SA + "^pocketgo,.*": + description: PocketGo "^polaroid,.*": description: Polaroid Corporation "^polyhex,.*": -- 2.43.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/4] dt-bindings: display: panel: ilitek,ili9488: make the port optional 2026-11-03 11:05 [PATCH 0/4] drm/panel: ilitek-ili9488: add the PocketGo S30 panel Romain TISSERAND 2026-11-03 11:05 ` [PATCH 1/4] dt-bindings: vendor-prefixes: add PocketGo Romain TISSERAND @ 2026-11-03 11:05 ` Romain TISSERAND 2026-11-03 11:05 ` [PATCH 3/4] dt-bindings: display: panel: ilitek,ili9488: add the PocketGo S30 panel Romain TISSERAND 2026-11-03 11:05 ` [PATCH 4/4] drm/panel: ilitek-ili9488: " Romain TISSERAND 3 siblings, 0 replies; 5+ messages in thread From: Romain TISSERAND @ 2026-11-03 11:05 UTC (permalink / raw) To: Igor Reznichenko, Neil Armstrong, Jessica Zhang Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley, dri-devel, devicetree, linux-kernel, sashiko-reviews The panel is a MIPI-DSI peripheral, a child node of its DSI host, and the driver does not use a graph port. A port is only needed when the host links its panel through the graph; other DSI hosts, such as the Allwinner sun6i-a31-mipi-dsi one, link the child node and have no output port to point at. The PinePhone panel is described that way on the same host, without a port. Keep the port allowed (panel-common) but no longer required, as for other DSI panels such as ilitek,ili9881c. Signed-off-by: Romain TISSERAND <romain.tisserand@gmail.com> --- .../devicetree/bindings/display/panel/ilitek,ili9488.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/Documentation/devicetree/bindings/display/panel/ilitek,ili9488.yaml b/Documentation/devicetree/bindings/display/panel/ilitek,ili9488.yaml index ea7449273022..016a573893b7 100644 --- a/Documentation/devicetree/bindings/display/panel/ilitek,ili9488.yaml +++ b/Documentation/devicetree/bindings/display/panel/ilitek,ili9488.yaml @@ -32,7 +32,6 @@ required: - iovcc-supply - reset-gpios - backlight - - port unevaluatedProperties: false -- 2.43.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 3/4] dt-bindings: display: panel: ilitek,ili9488: add the PocketGo S30 panel 2026-11-03 11:05 [PATCH 0/4] drm/panel: ilitek-ili9488: add the PocketGo S30 panel Romain TISSERAND 2026-11-03 11:05 ` [PATCH 1/4] dt-bindings: vendor-prefixes: add PocketGo Romain TISSERAND 2026-11-03 11:05 ` [PATCH 2/4] dt-bindings: display: panel: ilitek,ili9488: make the port optional Romain TISSERAND @ 2026-11-03 11:05 ` Romain TISSERAND 2026-11-03 11:05 ` [PATCH 4/4] drm/panel: ilitek-ili9488: " Romain TISSERAND 3 siblings, 0 replies; 5+ messages in thread From: Romain TISSERAND @ 2026-11-03 11:05 UTC (permalink / raw) To: Igor Reznichenko, Neil Armstrong, Jessica Zhang Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley, dri-devel, devicetree, linux-kernel, sashiko-reviews The PocketGo S30 handheld has a 320x480 1-lane MIPI-DSI panel built around an Ilitek ILI9488. Signed-off-by: Romain TISSERAND <romain.tisserand@gmail.com> --- .../devicetree/bindings/display/panel/ilitek,ili9488.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/display/panel/ilitek,ili9488.yaml b/Documentation/devicetree/bindings/display/panel/ilitek,ili9488.yaml index 016a573893b7..27f9aaa81582 100644 --- a/Documentation/devicetree/bindings/display/panel/ilitek,ili9488.yaml +++ b/Documentation/devicetree/bindings/display/panel/ilitek,ili9488.yaml @@ -17,6 +17,7 @@ properties: items: - enum: - focuslcds,e35gh-i-mw800cb + - pocketgo,s30-panel - const: ilitek,ili9488 reg: -- 2.43.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 4/4] drm/panel: ilitek-ili9488: add the PocketGo S30 panel 2026-11-03 11:05 [PATCH 0/4] drm/panel: ilitek-ili9488: add the PocketGo S30 panel Romain TISSERAND ` (2 preceding siblings ...) 2026-11-03 11:05 ` [PATCH 3/4] dt-bindings: display: panel: ilitek,ili9488: add the PocketGo S30 panel Romain TISSERAND @ 2026-11-03 11:05 ` Romain TISSERAND 3 siblings, 0 replies; 5+ messages in thread From: Romain TISSERAND @ 2026-11-03 11:05 UTC (permalink / raw) To: Igor Reznichenko, Neil Armstrong, Jessica Zhang Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring, Krzysztof Kozlowski, Conor Dooley, dri-devel, devicetree, linux-kernel, sashiko-reviews The PocketGo S30 handheld (Allwinner A33) has a 320x480 1-lane MIPI-DSI panel built around an Ilitek ILI9488. The init sequence is the stock kernel's, read back from the running stock system. It differs from the E35GH-I-MW800CB sequence only in VCOM (0x26 instead of 0x25), the display function control (2 parameters instead of 3) and the position of the inversion command. As on stock, the panel is set to the 18 bpp interface pixel format while the DSI link carries RGB888, so the panel shows 6 bits per color. Timings and video mode are from the stock configuration: 12 MHz pixel clock, htotal 382, vtotal 524, active low sync (lcd_hv_sync_polarity 0), non-burst video mode with sync pulses and without EoT packets. Signed-off-by: Romain TISSERAND <romain.tisserand@gmail.com> --- drivers/gpu/drm/panel/panel-ilitek-ili9488.c | 55 ++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9488.c b/drivers/gpu/drm/panel/panel-ilitek-ili9488.c index 6ab8ae72abbf..4be3d22360da 100644 --- a/drivers/gpu/drm/panel/panel-ilitek-ili9488.c +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9488.c @@ -86,6 +86,50 @@ static const struct drm_display_mode e35gh_i_mw800cb_display_mode = { .type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED, }; +static void pocketgo_s30_init(struct mipi_dsi_multi_context *ctx) +{ + /* Gamma control 1,2 */ + mipi_dsi_dcs_write_seq_multi(ctx, 0xE0, 0x00, 0x10, 0x14, 0x01, 0x0E, 0x04, 0x33, + 0x56, 0x48, 0x03, 0x0C, 0x0B, 0x2B, 0x34, 0x0F); + mipi_dsi_dcs_write_seq_multi(ctx, 0xE1, 0x00, 0x12, 0x18, 0x05, 0x12, 0x06, 0x40, + 0x34, 0x57, 0x06, 0x10, 0x0C, 0x3B, 0x3F, 0x0F); + /* Power control 1,2 */ + mipi_dsi_dcs_write_seq_multi(ctx, 0xC0, 0x0F, 0x0C); + mipi_dsi_dcs_write_seq_multi(ctx, 0xC1, 0x41); + /* VCOM Control */ + mipi_dsi_dcs_write_seq_multi(ctx, 0xC5, 0x00, 0x26, 0x80); + mipi_dsi_dcs_write_seq_multi(ctx, 0x36, 0x48); + /* Interface pixel format 18bpp */ + mipi_dsi_dcs_write_seq_multi(ctx, 0x3A, 0x66); + mipi_dsi_dcs_write_seq_multi(ctx, 0xB0, 0x00); + mipi_dsi_dcs_write_seq_multi(ctx, 0xB1, 0xA0); + mipi_dsi_dcs_write_seq_multi(ctx, 0xB4, 0x02); + mipi_dsi_dcs_write_seq_multi(ctx, 0xB6, 0x02, 0x02); + mipi_dsi_dcs_write_seq_multi(ctx, 0xE9, 0x00); + mipi_dsi_dcs_write_seq_multi(ctx, 0x21); + mipi_dsi_dcs_write_seq_multi(ctx, 0xF7, 0xA9, 0x51, 0x2C, 0x82); +} + +static const struct drm_display_mode pocketgo_s30_display_mode = { + .clock = 12000, + + .hdisplay = 320, + .hsync_start = 320 + 22, + .hsync_end = 320 + 22 + 12, + .htotal = 320 + 22 + 12 + 28, + + .vdisplay = 480, + .vsync_start = 480 + 22, + .vsync_end = 480 + 22 + 4, + .vtotal = 480 + 22 + 4 + 18, + + .width_mm = 49, + .height_mm = 74, + + .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, + .type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED, +}; + static inline struct ili9488 *panel_to_ili9488(struct drm_panel *panel) { return container_of(panel, struct ili9488, panel); @@ -269,8 +313,19 @@ static const struct ili9488_desc e35gh_i_mw800cb_desc = { .bpc = 6, }; +static const struct ili9488_desc pocketgo_s30_desc = { + .init_sequence = pocketgo_s30_init, + .display_mode = &pocketgo_s30_display_mode, + .mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE | + MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_NO_EOT_PACKET, + .format = MIPI_DSI_FMT_RGB888, + .lanes = 1, + .bpc = 6, +}; + static const struct of_device_id ili9488_of_match[] = { { .compatible = "focuslcds,e35gh-i-mw800cb", .data = &e35gh_i_mw800cb_desc }, + { .compatible = "pocketgo,s30-panel", .data = &pocketgo_s30_desc }, { } }; -- 2.43.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-11-03 11:05 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-11-03 11:05 [PATCH 0/4] drm/panel: ilitek-ili9488: add the PocketGo S30 panel Romain TISSERAND 2026-11-03 11:05 ` [PATCH 1/4] dt-bindings: vendor-prefixes: add PocketGo Romain TISSERAND 2026-11-03 11:05 ` [PATCH 2/4] dt-bindings: display: panel: ilitek,ili9488: make the port optional Romain TISSERAND 2026-11-03 11:05 ` [PATCH 3/4] dt-bindings: display: panel: ilitek,ili9488: add the PocketGo S30 panel Romain TISSERAND 2026-11-03 11:05 ` [PATCH 4/4] drm/panel: ilitek-ili9488: " Romain TISSERAND
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®