drm/panel: Add IL97680A panels for Retroid Pocket Nova and Duo
Subsystems (4)
cover drm/panel: Add IL97680A panels for Retroid Pocket Nova and Duo
This series adds bindings and a driver for the Ilitek IL97680A panels in the Retroid Pocket Nova and the bottom display of the Retroid Pocket Duo. Both are 1280x960, four-lane RGB888 command-mode panels supporting 60 Hz and 120 Hz, with DCS brightness control.
The driver is based on Teguh Sobirin's RetroidPocket implementation. Display operation at both refresh rates, brightness adjustment and panel recovery after suspend/resume were tested on both devices.
Testing on these Qualcomm DPU systems also used Teguh's command-mode MERGE_3D fix [1], which is not included in this series. Board Devicetree changes are outside the scope of this series.
[1] https://github.com/RetroidPocket/linux/commit/b547718c91dbaf8fe27745afced8de00d1f7415b
Teguh Sobirin (2):
dt-bindings: display: panel: Add Retroid Pocket IL97680A panels drm/panel: Add Ilitek IL97680A panels for Retroid Pocket Nova and Duo
.../display/panel/ilitek,il97680a.yaml | 121 +++++ MAINTAINERS | 7 + drivers/gpu/drm/panel/Kconfig | 11 + drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-ilitek-il97680a.c | 433 ++++++++++++++++++ 5 files changed, 573 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/panel/ilitek,il97680a.yaml create mode 100644 drivers/gpu/drm/panel/panel-ilitek-il97680a.c
base-commit: 17bb0e2f6c8043f70a693a5f3797471cbed354c8
PATCH 1/2 dt-bindings: display: panel: Add Retroid Pocket IL97680A panels
From: Teguh Sobirin <[email protected]>
Document the Ilitek IL97680A panels in the Retroid Pocket Nova and the bottom display of the Retroid Pocket Duo. Both are 1280x960 MIPI DSI command-mode panels, with different supply configurations.
--- .../display/panel/ilitek,il97680a.yaml | 121 ++++++++++++++++++ MAINTAINERS | 6 + 2 files changed, 127 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/panel/ilitek,il97680a.yaml
Documentation/devicetree/bindings/display/panel/ilitek,il97680a.yaml new file +121 -0
@@ -0,0 +1,121 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/panel/ilitek,il97680a.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Ilitek IL97680A based DSI panels + +maintainers: + - Teguh Sobirin <[email protected]> + - Jacob Pyke <[email protected]> + +description: + The Ilitek IL97680A is a DSI display driver IC driving the 1280x960 + command mode panels of the RetroidPocket handhelds. + +allOf: + - $ref: panel-common.yaml# + - if: + properties: + compatible: + const: retroidpocket,rpnova-panel + then: + required: + - vdd18-supply + - vdd28-supply + else: + properties: + vdd18-supply: false + vdd28-supply: false + +properties: + compatible: + enum: + - retroidpocket,rpduo-panel-bottom + - retroidpocket,rpnova-panel + + reg: + maxItems: 1 + + vdd-supply: + description: Core voltage supply + + vddio-supply: + description: I/O voltage supply + + vci-supply: + description: Analog voltage supply + + vdd18-supply: + description: 1.8V supply of the panel module + + vdd28-supply: + description: 2.8V supply of the panel module + + reset-gpios: true + rotation: true + port: true + +required: + - compatible + - reg + - vdd-supply + - vddio-supply + - vci-supply + - reset-gpios + - port + +additionalProperties: false + +examples: + - | + #include <dt-bindings/gpio/gpio.h> + + dsi { + #address-cells = <1>; + #size-cells = <0>; + + panel@0 { + compatible = "retroidpocket,rpnova-panel"; + reg = <0>; + + vdd-supply = <&vreg_l11b_1p2>; + vddio-supply = <&vreg_l12b_1p8>; + vci-supply = <&vreg_l13b_3p0>; + vdd18-supply = <&vdd_disp_1v8>; + vdd28-supply = <&vdd_disp_2v8>; + + reset-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>; + + port { + panel_in: endpoint { + remote-endpoint = <&dsi0_out>; + }; + }; + }; + }; + - | + #include <dt-bindings/gpio/gpio.h> + + dsi { + #address-cells = <1>; + #size-cells = <0>; + + panel@0 { + compatible = "retroidpocket,rpduo-panel-bottom"; + reg = <0>; + + vdd-supply = <&vreg_l1g>; + vddio-supply = <&vdd_disp_s_1v8>; + vci-supply = <&vdd_disp_s_3v0>; + reset-gpios = <&tlmm 73 GPIO_ACTIVE_LOW>; + + port { + duo_panel_in: endpoint { + remote-endpoint = <&dsi1_out>; + }; + }; + }; + }; +...
MAINTAINERS +6 -0
@@ -8235,6 +8235,12 @@ S: Maintained T: git https://gitlab.freedesktop.org/drm/misc/kernel.git F: drivers/gpu/drm/hyperv +DRM DRIVER FOR ILITEK IL97680A PANELS +M: Jacob Pyke <[email protected]> +L: [email protected] +S: Maintained +F: Documentation/devicetree/bindings/display/panel/ilitek,il97680a.yaml + DRM DRIVER FOR ILITEK ILI9225 PANELS M: David Lechner <[email protected]> S: Maintained
Re: [PATCH 1/2] dt-bindings: display: panel: Add Retroid Pocket IL97680A panels
Quoted 7 lines · Jacob Pyke
From: Teguh Sobirin <[email protected]>
Document the Ilitek IL97680A panels in the Retroid Pocket Nova and the bottom display of the Retroid Pocket Duo. Both are 1280x960 MIPI DSI command-mode panels, with different supply configurations.
Please do not reference random 3rd party repositories for no reason.
Quoted 2 lines
Signed-off-by Teguh Sobirin <[email protected]>Assisted-by LLM
Drop tag
Quoted 33 lines
Signed-off-by Jacob Pyke <[email protected]>--- .../display/panel/ilitek,il97680a.yaml | 121 ++++++++++++++++++ MAINTAINERS | 6 + 2 files changed, 127 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/panel/ilitek,il97680a.yamlDocumentation/devicetree/bindings/display/panel/ilitek,il97680a.yaml new file +20
-0@@ -0,0 +1,121 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/panel/ilitek,il97680a.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Ilitek IL97680A based DSI panels + +maintainers: + - Teguh Sobirin <[email protected]> + - Jacob Pyke <[email protected]> + +description: + The Ilitek IL97680A is a DSI display driver IC driving the 1280x960 + command mode panels of the RetroidPocket handhelds. + +allOf: + - $ref: panel-common.yaml# + - if: + properties:
Documentation/devicetree/bindings/display/panel/ilitek,il97680a.yaml line 30
Quoted 10 lines
Documentation/devicetree/bindings/display/panel/ilitek,il97680a.yaml new file +10
-0+ compatible: + const: retroidpocket,rpnova-panel + then: + required: + - vdd18-supply + - vdd28-supply + else: + properties: + vdd18-supply: false + vdd28-supply: false
Keep the entire allOf just before additionalProperties: block.
Documentation/devicetree/bindings/display/panel/ilitek,il97680a.yaml line 36
Quoted 6 lines
Documentation/devicetree/bindings/display/panel/ilitek,il97680a.yaml new file +6
-0+ +properties: + compatible: + enum: + - retroidpocket,rpduo-panel-bottom + - retroidpocket,rpnova-panel
I would expect IL97680A fallback compatible.
Documentation/devicetree/bindings/display/panel/ilitek,il97680a.yaml line 39
Quoted 3 lines
Documentation/devicetree/bindings/display/panel/ilitek,il97680a.yaml new file +3
-0+ + reg: + maxItems: 1
Best regards,
Krzysztof
Re: [PATCH 1/2] dt-bindings: display: panel: Add Retroid Pocket IL97680A panels
Quoted 5 lines
Please do not reference random 3rd party repositories for no reason.
Drop tag
Keep the entire allOf just before additionalProperties: block.
No worries, will address these in V2
Quoted 1 line
I would expect IL97680A fallback compatible.
I'll add a "ilitek,il97680a" after each panel-specific compatible and update the examples in V2
Thanks for the review. First submission so still learning the ropes. Appreciate the patience.
Thanks,
Jacob
PATCH 2/2 drm/panel: Add Ilitek IL97680A panels for Retroid Pocket Nova and Duo
In reply to Jacob PykeFrom: Teguh Sobirin <[email protected]>
Add support for the Ilitek IL97680A panels in the Retroid Pocket Nova and the bottom display of the Retroid Pocket Duo. Both are 1280x960 command-mode panels using four DSI lanes and RGB888 pixels, with fixed 60 Hz and 120 Hz modes and DCS brightness control.
Share initialization and timings, with per-panel supply configurations. Apply the requested brightness after display-on rather than setting full brightness during initialization, to avoid a white flash on startup.
--- MAINTAINERS | 1 + drivers/gpu/drm/panel/Kconfig | 11 + drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-ilitek-il97680a.c | 433 ++++++++++++++++++ 4 files changed, 446 insertions(+) create mode 100644 drivers/gpu/drm/panel/panel-ilitek-il97680a.c
MAINTAINERS +1 -0
@@ -8240,6 +8240,7 @@ M: Jacob Pyke <[email protected]> L: [email protected] S: Maintained F: Documentation/devicetree/bindings/display/panel/ilitek,il97680a.yaml +F: drivers/gpu/drm/panel/panel-ilitek-il97680a.c DRM DRIVER FOR ILITEK ILI9225 PANELS M: David Lechner <[email protected]>
drivers/gpu/drm/panel/Kconfig +11 -0
@@ -306,6 +306,17 @@ config DRM_PANEL_ILITEK_IL9322 Say Y here if you want to enable support for Ilitek IL9322 QVGA (320x240) RGB, YUV and ITU-T BT.656 panels. +config DRM_PANEL_ILITEK_IL97680A + tristate "Ilitek IL97680A-based panels" + depends on OF + depends on DRM_MIPI_DSI + depends on BACKLIGHT_CLASS_DEVICE + help + Say Y here to enable the 1280x960 Ilitek IL97680A panels in the + Retroid Pocket Nova and the bottom display of the Retroid Pocket Duo. + These panels use four-lane MIPI DSI command mode and support fixed + 60 Hz and 120 Hz refresh rates with brightness controlled over DCS. + config DRM_PANEL_ILITEK_ILI9341 tristate "Ilitek ILI9341 240x320 QVGA panels" depends on SPI
drivers/gpu/drm/panel/Makefile +1 -0
@@ -30,6 +30,7 @@ obj-$(CONFIG_DRM_PANEL_HIMAX_HX8394) += panel-himax-hx8394.o obj-$(CONFIG_DRM_PANEL_HYDIS_HV101HD1) += panel-hydis-hv101hd1.o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI7807S) += panel-ilitek-ili7807s.o obj-$(CONFIG_DRM_PANEL_ILITEK_IL9322) += panel-ilitek-ili9322.o +obj-$(CONFIG_DRM_PANEL_ILITEK_IL97680A) += panel-ilitek-il97680a.o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9341) += panel-ilitek-ili9341.o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9488) += panel-ilitek-ili9488.o obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9805) += panel-ilitek-ili9805.o
drivers/gpu/drm/panel/panel-ilitek-il97680a.c new file +433 -0
433 lines not on this page · raw message