Skip to contentSkip to conversation

Add support for PIXPAPER 4.26 monochrome e-ink panel

PATCH Superseded LiangCheng Wang 2 participants 7 messages May 6 – May 19

Subsystems (4)

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore

LiangCheng Wang

author maintainer
#0 lore raw

cover Add support for PIXPAPER 4.26 monochrome e-ink panel

This patch series adds support for the Mayqueen Pixpaper 4.26 monochrome e-ink display panel, controlled via SPI.

The series includes:
- Device tree binding updates for the Pixpaper 4.26 panel
- A DRM tiny driver implementation for the Pixpaper 4.26 panel
- A MAINTAINERS update for the Pixpaper DRM drivers and binding

The panel supports 800x480 resolution with XRGB8888 framebuffer input and uses SPI, along with GPIO lines for reset, busy, and data/command control.

The driver has been tested on:
- Raspberry Pi 5
with Linux kernel 7.1.0-rc1.

Feedback is welcome.

---
LiangCheng Wang (2):
dt-bindings: display: mayqueen,pixpaper: add pixpaper-426m drm/tiny: add support for PIXPAPER 4.26 monochrome e-ink panel

 .../bindings/display/mayqueen,pixpaper.yaml        |  25 +-
 MAINTAINERS                                        |   3 +-
 drivers/gpu/drm/tiny/Kconfig                       |  15 +
 drivers/gpu/drm/tiny/Makefile                      |   1 +
 drivers/gpu/drm/tiny/pixpaper-426m.c               | 828 +++++++++++++++++++++
 5 files changed, 866 insertions(+), 6 deletions(-)

---
base-commit: a293ec25d59dd96309058c70df5a4dd0f889a1e4
change-id: 20260505-bar-523f2c3f6939

Best regards,

Signature · 1 line
LiangCheng Wang <[email protected]>
author maintainer
#1 lore raw

PATCH 1/2 dt-bindings: display: mayqueen,pixpaper: add pixpaper-426m

Add the compatible string for the PIXPAPER 4.26 monochrome e-ink panel to the Mayqueen Pixpaper binding.

The new panel uses the same SPI and GPIO control interface as the existing Pixpaper panel, so extend the existing binding instead of adding a separate schema. Document the new compatible string and add an example node for pixpaper-426m.

---
 .../bindings/display/mayqueen,pixpaper.yaml        | 25 +++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)
Documentation/devicetree/bindings/display/mayqueen,pixpaper.yaml +20 -5
index cd27f8ba5ae1d94660818525b5fa71db98c8acb7..4b0db2b079ebea244eb149a52ee1d8dbab0f60bb 100644
@@ -4,22 +4,23 @@
 $id: http://devicetree.org/schemas/display/mayqueen,pixpaper.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Mayqueen Pixpaper e-ink display panel
+title: Mayqueen Pixpaper e-ink display panels
 
 maintainers:
   - LiangCheng Wang <[email protected]>
 
 description:
-  The Pixpaper is an e-ink display panel controlled via an SPI interface.
-  The panel has a resolution of 122x250 pixels and requires GPIO pins for
-  reset, busy, and data/command control.
+  Mayqueen Pixpaper e-ink display panels are controlled via an SPI interface
+  and require GPIO pins for reset, busy, and data/command control.
 
 allOf:
   - $ref: /schemas/spi/spi-peripheral-props.yaml#
 
 properties:
   compatible:
-    const: mayqueen,pixpaper
+    enum:
+      - mayqueen,pixpaper
+      - mayqueen,pixpaper-426m
 
   reg:
     maxItems: 1
@@ -61,3 +62,17 @@ examples:
             dc-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>;
         };
     };
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        display@0 {
+            compatible = "mayqueen,pixpaper-426m";
+            reg = <0>;
+            spi-max-frequency = <1000000>;
+            reset-gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
+            busy-gpios = <&gpio1 18 GPIO_ACTIVE_HIGH>;
+            dc-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>;
+        };
+    };
Signature · 1 line
2.34.1
#2 lore raw

Re: [PATCH 1/2] dt-bindings: display: mayqueen,pixpaper: add pixpaper-426m

Quoted 33 lines · LiangCheng Wang

Add the compatible string for the PIXPAPER 4.26 monochrome e-ink panel to the Mayqueen Pixpaper binding.

The new panel uses the same SPI and GPIO control interface as the existing Pixpaper panel, so extend the existing binding instead of adding a separate schema. Document the new compatible string and add an example node for pixpaper-426m.

---
 .../bindings/display/mayqueen,pixpaper.yaml        | 25 +++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)
Documentation/devicetree/bindings/display/mayqueen,pixpaper.yaml +3 -4
index cd27f8ba5ae1d94660818525b5fa71db98c8acb7..4b0db2b079ebea244eb149a52ee1d8dbab0f60bb 100644
@@ -4,22 +4,23 @@
 $id: http://devicetree.org/schemas/display/mayqueen,pixpaper.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Mayqueen Pixpaper e-ink display panel
+title: Mayqueen Pixpaper e-ink display panels
 
 maintainers:
   - LiangCheng Wang <[email protected]>
 
 description:
-  The Pixpaper is an e-ink display panel controlled via an SPI interface.
-  The panel has a resolution of 122x250 pixels and requires GPIO pins for
-  reset, busy, and data/command control.
+  Mayqueen Pixpaper e-ink display panels are controlled via an SPI interface
+  and require GPIO pins for reset, busy, and data/command control.

Documentation/devicetree/bindings/display/mayqueen,pixpaper.yaml line 23

Quoted 10 lines
Documentation/devicetree/bindings/display/mayqueen,pixpaper.yaml +3 -1
 
 allOf:
   - $ref: /schemas/spi/spi-peripheral-props.yaml#
 
 properties:
   compatible:
-    const: mayqueen,pixpaper
+    enum:
+      - mayqueen,pixpaper
+      - mayqueen,pixpaper-426m

The commit message makes it sound like both devices could be compatible, but the diff says they are not. What actually makes them incompatible?

Quoted 11 lines
Documentation/devicetree/bindings/display/mayqueen,pixpaper.yaml +4 -0
   reg:
     maxItems: 1
@@ -61,3 +62,17 @@ examples:
             dc-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>;
         };
     };
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    spi {
+        #address-cells = <1>;

Documentation/devicetree/bindings/display/mayqueen,pixpaper.yaml examples: · line 78

Quoted 10 lines
Documentation/devicetree/bindings/display/mayqueen,pixpaper.yaml +10 -0
+        #size-cells = <0>;
+        display@0 {
+            compatible = "mayqueen,pixpaper-426m";
+            reg = <0>;
+            spi-max-frequency = <1000000>;
+            reset-gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
+            busy-gpios = <&gpio1 18 GPIO_ACTIVE_HIGH>;
+            dc-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>;
+        };
+    };

This example just duplicates the existing one, there's no value in adding it.

pw-bot: changes-requested

Cheers,
Conor.

Quoted 4 lines
Signature · 2 lines
-- 
2.34.1
author maintainer
#3 lore raw

Re: [PATCH 1/2] dt-bindings: display: mayqueen,pixpaper: add pixpaper-426m

Hi Conor,

Thanks for the review.

You're right on both points.

The new panel uses the same DT properties as the existing Pixpaper panel, but it requires a distinct compatible because the driver selects a different panel-specific initialization and update sequence.

The second example is also redundant, so I'll drop it.

I'll fold these fixes into the next revision and wait a bit longer for any driver-side feedback before sending v2.

Thanks,
LiangCheng

#4 lore raw

Re: [PATCH 1/2] dt-bindings: display: mayqueen,pixpaper: add pixpaper-426m

Quoted 9 lines · LiangCheng Wang

Hi Conor,

Thanks for the review.

You're right on both points.

The new panel uses the same DT properties as the existing Pixpaper panel, but it requires a distinct compatible because the driver selects a different panel-specific initialization and update sequence.

Can't see what you're replying to, but please note this in the commit message on your v2.

Quoted 8 lines

The second example is also redundant, so I'll drop it.

I'll fold these fixes into the next revision and wait a bit longer for any driver-side feedback before sending v2.

Thanks,
LiangCheng

author maintainer
#5 lore raw

PATCH 2/2 drm/tiny: add support for PIXPAPER 4.26 monochrome e-ink panel

In reply to LiangCheng Wang

Introduce a DRM driver for the Mayqueen Pixpaper 4.26 monochrome e-ink display panel, which is controlled via SPI. The driver supports an 800x480 display with XRGB8888 framebuffer input.

Also, add Kconfig and Makefile entries for the driver and update MAINTAINERS for the Pixpaper DRM drivers and binding.

---
 MAINTAINERS                          |   3 +-
 drivers/gpu/drm/tiny/Kconfig         |  15 +
 drivers/gpu/drm/tiny/Makefile        |   1 +
 drivers/gpu/drm/tiny/pixpaper-426m.c | 828 +++++++++++++++++++++++++++++++++++
 4 files changed, 846 insertions(+), 1 deletion(-)
MAINTAINERS +2 -1
index 882214b0e7db53bb8cc8e75b5d2269ee0591ea20..eebd73ee1f531d3785ec963da03fbab265c2d188 100644
@@ -8234,11 +8234,12 @@ T:	git https://gitlab.freedesktop.org/drm/misc/kernel.git
 F:	Documentation/devicetree/bindings/display/repaper.txt
 F:	drivers/gpu/drm/tiny/repaper.c
 
-DRM DRIVER FOR PIXPAPER E-INK PANEL
+DRM DRIVER FOR PIXPAPER E-INK PANELS
 M:	LiangCheng Wang <[email protected]>
 L:	[email protected]
 S:	Maintained
 F:	Documentation/devicetree/bindings/display/mayqueen,pixpaper.yaml
+F:	drivers/gpu/drm/tiny/pixpaper-426m.c
 F:	drivers/gpu/drm/tiny/pixpaper.c
 
 DRM DRIVER FOR QEMU'S CIRRUS DEVICE
drivers/gpu/drm/tiny/Kconfig +15 -0
index f0e72d4b6a4709564e63c758e857bdb4a320dbe7..f5867066518cb80a7c659e2ac5a675da719bf739 100644
@@ -98,6 +98,21 @@ config DRM_PIXPAPER
 
 	  If M is selected, the module will be built as pixpaper.ko.
 
+config DRM_PIXPAPER_426M
+	tristate "DRM support for PIXPAPER 4.26 monochrome display panel"
+	depends on DRM && SPI
+	select DRM_CLIENT_SELECTION
+	select DRM_GEM_DMA_HELPER
+	select DRM_KMS_HELPER
+	help
+	  DRM driver for the Mayqueen Pixpaper 4.26 monochrome e-ink
+	  display panel.
+
+	  This driver supports SPI-connected 800x480 monochrome panels
+	  with an XRGB8888 framebuffer input format.
+
+	  If M is selected, the module will be built as pixpaper-426m.ko.
+
 config TINYDRM_HX8357D
 	tristate "DRM support for HX8357D display panels"
 	depends on DRM && SPI
drivers/gpu/drm/tiny/Makefile +1 -0
index 48d30bf6152f979404ac1004174587823a30109e..037b751a1a851cc2f86f701ff71008bcb9c59f29 100644
@@ -7,6 +7,7 @@ obj-$(CONFIG_DRM_CIRRUS_QEMU)		+= cirrus-qemu.o
 obj-$(CONFIG_DRM_GM12U320)		+= gm12u320.o
 obj-$(CONFIG_DRM_PANEL_MIPI_DBI)	+= panel-mipi-dbi.o
 obj-$(CONFIG_DRM_PIXPAPER)              += pixpaper.o
+obj-$(CONFIG_DRM_PIXPAPER_426M)         += pixpaper-426m.o
 obj-$(CONFIG_TINYDRM_HX8357D)		+= hx8357d.o
 obj-$(CONFIG_TINYDRM_ILI9163)		+= ili9163.o
 obj-$(CONFIG_TINYDRM_ILI9225)		+= ili9225.o
drivers/gpu/drm/tiny/pixpaper-426m.c new file +828 -0

828 lines not on this page · raw message

Signature · 1 line
2.34.1
author maintainer
#6 lore raw

Re: [PATCH 2/2] drm/tiny: add support for PIXPAPER 4.26 monochrome e-ink panel

Hi,

Gentle ping on this driver patch.

The DT binding patch has already received feedback from Conor, which I will address in v2 by documenting why this panel needs a distinct compatible despite sharing the same DT properties as the existing Pixpaper panel.

Any DRM-side feedback on this driver would be appreciated.

Thanks,
LiangCheng