Add support for Mayqueen Pixpaper e-ink panel
From: | LiangCheng Wang <zaq14760-AT-gmail.com> | |
To: | Rob Herring <robh-AT-kernel.org>, Krzysztof Kozlowski <krzk+dt-AT-kernel.org>, Conor Dooley <conor+dt-AT-kernel.org>, Maarten Lankhorst <maarten.lankhorst-AT-linux.intel.com>, Maxime Ripard <mripard-AT-kernel.org>, Thomas Zimmermann <tzimmermann-AT-suse.de>, David Airlie <airlied-AT-gmail.com>, Simona Vetter <simona-AT-ffwll.ch>, Sumit Semwal <sumit.semwal-AT-linaro.org>, Christian König <christian.koenig-AT-amd.com>, Wig Cheng <onlywig-AT-gmail.com>, LiangCheng Wang <zaq14760-AT-gmail.com> | |
Subject: | [PATCH v4 0/3] Add support for Mayqueen Pixpaper e-ink panel | |
Date: | Tue, 05 Aug 2025 13:40:04 +0800 | |
Message-ID: | <20250805-drm-v4-0-94eaec01598d@gmail.com> | |
Cc: | devicetree-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org, dri-devel-AT-lists.freedesktop.org, linux-media-AT-vger.kernel.org, linaro-mm-sig-AT-lists.linaro.org, Krzysztof Kozlowski <krzysztof.kozlowski-AT-linaro.org> | |
Archive-link: | Article |
This patch series adds support for the Mayqueen Pixpaper e-ink display panel, controlled via SPI. The series includes: - A new vendor-prefix entry for "mayqueen" - Device tree binding documentation for the Pixpaper panel - A DRM tiny driver implementation for the Pixpaper panel - A MAINTAINERS entry for the Pixpaper DRM driver and binding The panel supports 122x250 resolution with XRGB8888 format and uses SPI, along with GPIO lines for reset, busy, and data/command control. The driver has been tested on: - Raspberry Pi 2 Model B with Linux kernel 6.16. --- Changes in v4: - Applied BIT() macro for all register bit definitions (per checkpatch) - Fixed alignment and indentation based on checkpatch suggestions - Removed unnecessary blank lines after braces - Fixed universal plane init() call indentation - Link to v3: https://lore.kernel.org/r/20250721-drm-v3-0-e16c3cee7263@... Changes in v3: - MAINTAINERS - Added pixpaper-regs.h - Kconfig - Rename config symbol to DRM_PIXPAPER (drop TINYDRM_ prefix). - Reordered Kconfig select lines alphabetically. - Code structure & style - Fix include order: move <linux/> headers above <drm/> headers. - Removed forward declarations; placed static functions next to usage - Switched logging to drm_err()/drm_warn()/drm_dbg() (legacy DRM_ERROR/WARN removed) - Remove dev_info() statements. - Switched encoder type to DRM_MODE_ENCODER_NONE - Moved pixpaper_panel_hw_init() from atomic_enable() to probe() to avoid redundant hardware init. - Use helper to_pixpaper_panel() instead of container_of() on crtc. - Robustness - Added timeout + warning in pixpaper_wait_busy() to ensure robustness if BUSY line gets stuck. - Introduced struct pixpaper_error_ctx to propagate SPI/GPIO errors - Clean‑ups - Removed drm_plane_enable_fb_damage_clips() (full‑frame updates) - Removed noisy info prints; kept drm_dbg() only where helpful - Consolidated all magic register values/commands into new pixpaper-regs.h with datasheet‑aligned naming - Memory helpers - Driver now uses GEM SHMEM helpers; GEM DMA helpers dropped (panel has no bus‑mastering DMA) - Functionality fixes - Rewrote pack_pixels_to_byte() to correctly handle 4-color (B/W/R/Y) layout based on expected panel color encoding - DRM callback safety - Add missing drm_dev_enter()/drm_dev_exit() in callbacks. - Tags added - Reviewed-by: Rob Herring <robh@kernel.org> (from v1) - Acked-by: Rob Herring <robh@kernel.org> (from v1) - Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> (from v2) - Link to v2: https://lore.kernel.org/r/20250714-drm-v2-0-5d1a2e12796c@... Changes in v2: - Reordered patches so that DT bindings come before the driver (suggested by Rob Herring) - Fixed sparse warning: removed duplicate `.reset` initializer in `pixpaper_plane_funcs` - Fixed checkpatch issues reported by Media CI: - Removed unnecessary blank line before closing brace - Moved opening parentheses up to function call lines (e.g., `DRM_WARN(...)`) - Fixed alignment of conditionals - Fixed `dev_warn(` and `drm_universal_plane_init(` formatting - Thanks to Rob Herring for ack on vendor-prefix patch - Link to v1: https://lore.kernel.org/r/20250708-drm-v1-0-45055fdadc8a@... Thanks to all reviewers for feedback across earlier versions. Best regards, LiangCheng Wang <zaq14760@gmail.com> --- LiangCheng Wang (2): dt-bindings: display: Add Mayqueen Pixpaper e-ink panel drm: tiny: Add support for Mayqueen Pixpaper e-ink panel Wig Cheng (1): dt-bindings: vendor-prefixes: Add Mayqueen name .../bindings/display/mayqueen,pixpaper.yaml | 63 ++ .../devicetree/bindings/vendor-prefixes.yaml | 2 + MAINTAINERS | 7 + drivers/gpu/drm/tiny/Kconfig | 15 + drivers/gpu/drm/tiny/Makefile | 1 + drivers/gpu/drm/tiny/pixpaper-regs.h | 428 +++++++++++ drivers/gpu/drm/tiny/pixpaper.c | 789 +++++++++++++++++++++ 7 files changed, 1305 insertions(+) --- base-commit: 7e161a991ea71e6ec526abc8f40c6852ebe3d946 change-id: 20250708-drm-6021df0715d7 Best regards, -- LiangCheng Wang <zaq14760@gmail.com>