From: "Thakkar, Devarsh" <devarsht@ti.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, "Menon, Nishanth" <nm@ti.com>,
"Raghavendra, Vignesh" <vigneshr@ti.com>,
Tero Kristo <kristo@kernel.org>
Cc: "dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
LiangCheng Wang <zaq14760@gmail.com>
Subject: Re: [PATCH v3 00/14] Add DRM driver for Solomon SSD16xx e-paper display controllers
Date: Wed, 4 Nov 2026 14:22:35 +0000 [thread overview]
Message-ID: <3e086d5e-4ab6-481d-8bfe-3929cecc9bfe@ti.com> (raw)
In-Reply-To: <20261019213726.4145532-1-devarsht@ti.com>
Hi Thomas,
On 20/10/26 03:07, Thakkar, Devarsh wrote:
> This series adds a DRM driver for the Solomon Systech SSD16xx family of
> e-paper display controllers (SSD1673, SSD1680, SSD1681, SSD1683), starting
> with support for the Gooddisplay GDEY042T81, a 4.2" 400×300 black-and-white
> e-paper panel driven by the SSD1683 controller.
>
Gentle ping on this series. v3 addresses your review comments on v2;
those changes are mostly in patch 04, with the rest in the following
driver patches.
Just to summarize, the driver has also seen testing beyond the
GDEY042T81 on the AM62L3 EVM LiangCheng Wang tested v2 on a Mayqueen
PIXPAPER 4.26m (SSD1677, 800x480), which exercises the SSD1677 support.
That panel's own patches will follow separately by LiangCheng after
final version of this series, also the dt-binding patches have been
reviewed/acked too.
I'm also working through the sashiko-bot findings for v4, so if you'd
like any specific changes I can fold them into the same respin.
Best Regards,
Devarsh
> The driver is designed and architected keeping the bi-stable nature
> and low-power requirements of epaper display based systems in mind
> along with having adequate flexibility to support varying use-case
> requirements for the e-paper display use-cases.
>
> The driver integrates with the DRM atomic modesetting framework and
> supports:
>
> - SPI communication in both 4-wire mode (separate D/C GPIO) and
> 3-wire mode (9-bit SPI with embedded D/C# bit)
> - Full 4-way rotation via the Data Entry Mode register, with no GPU
> or memory-copy overhead
> - Three independently selectable refresh waveforms: partial (~300–500 ms),
> full (~1.5–2 s), and fast (~1.0–1.5 s)
> - 3-colour BWR pixel classification for panels with a red RAM plane
> - Pixel format support: XRGB8888 (color path) and R1 (native 1bpp,
> zero-copy path)
> - Runtime PM with configurable autosuspend: the controller enters
> Mode 1 deep sleep (RAM retained) after an idle timeout, waking
> transparently on the next frame update
> - System suspend/resume: switches to Mode 2 deep sleep (maximum
> power savings) on system suspend and rebuilds the pipeline on resume
> - Runtime-configurable DRM plane properties for refresh mode, colour
> mode, and session control (clear-on-init/close/disable, init-refresh
> waveform); rotation is set at probe time from a device tree property,
> and border waveform uses a fixed per-panel default
>
> Changes from v2 [6]:
>
> Bindings:
> - Rename the binding file to solomon,ssd1683.yaml to match an actual
> compatible, and shape the compatible as oneOf so the SSD1677 patch
> only adds a branch
> - Reference panel-common.yaml and use the common 'rotation' property
> instead of a local one that said "clockwise"
> - Add spi-3wire and document that omitting dc-gpios selects 3-wire mode
>
> Driver core (base patch):
> - Keep lazy hardware initialization: ssd16xx_hw_init() is deferred to
> crtc_atomic_enable(); probe() performs only a GPIO reset. Follows
> the precedent of repaper.c and ssd130x.c
> - Add drm_dev_enter()/drm_dev_exit() to plane_atomic_update
> - Wrap the framebuffer read in drm_gem_fb_begin/end_cpu_access()
> - Skip the update when drm_atomic_helper_damage_merged() reports no
> damage instead of making up a full-screen rectangle
> - Remove ssd16xx_crtc_atomic_flush() and last_fb; the orientation is
> static so flush did a full hardware re-init and a second redraw on
> every commit, and last_fb had no remaining users
> - Use drm_crtc_cleanup() directly as the CRTC .destroy callback
> - Call drm_atomic_helper_check_crtc_primary_plane() from CRTC
> atomic_check
> - Send SPI data from a DMA-safe buffer in struct ssd16xx_device
> instead of the stack
> - Read XRGB8888 pixels with le32_to_cpup()
> - Size the transfer buffers per row, as the packing code does
> - Make Kconfig depend on MMU
> - GDEY042T81: use the HIZ border waveform for updates and do not
> refresh the border on every update, to avoid border flicker
>
> Session management (clear_on_init/close/disable):
> - Split display_cleared_on_deinit into cleared_on_disable and
> cleared_on_close. A single flag made a clear on disable suppress
> the clear on close and was never re-armed on re-enable
> - Reset the RAM window before clearing and size the clear buffer per
> row
> - In 3-colour mode clear the red RAM to 0x00 (no red) instead of
> writing the all-white buffer to it, which would paint the panel red
>
> Power management:
> - Check for damage before taking the runtime PM reference, so the
> panel is not woken up when there is nothing to draw
> - Put the panel to sleep in remove() with pm_runtime_force_suspend(),
> independent of clear_on_disable
> - Return the error from pm_runtime_force_suspend() in system suspend
> - Do not clear ->initialized again in system resume; force_resume()
> already re-initializes the hardware
> - Do not fail runtime suspend if the deep sleep command fails, as
> that would block all later resumes
>
> Plane properties:
> - Reject 3-color mode together with partial refresh in the plane
> atomic_check, as partial refresh does not update the red channel
> - Only create the color_mode property on panels with a red plane
> instead of exposing a property with a single possible value
> - Add a mutex serializing the session state and panel access between
> atomic commits and master_set()/master_drop(); master_drop() can
> run concurrently with a nonblocking commit (e.g. on DROP_MASTER)
> and both drive the SPI bus with the same transfer buffers
> - Sync the session properties from the new plane state in
> atomic_enable as well, since it runs before plane_atomic_update
> and used the values of the previous commit
>
> MAINTAINERS / platform integration:
> - Follow the rename of the binding file to solomon,ssd1683.yaml
> - Add the GDEY042T81 EVM overlay to the MAINTAINERS file list
> - Drop PixPaper reference from the MAINTAINERS commit message (not
> in v3)
> - DTS overlay: fix the BUSY pin name in the comments (pad 0x00b8 is
> GPMC0_CLK, not GPMC0_AD0), use GPIO_ACTIVE_HIGH for the fet-sel
> gpio-hog, fix SPDX separator to uppercase OR per SPDX-2.1, mark
> [DO_NOT_MERGE] (for driver review context only)
>
> Changes from v1[0]:
> - Restructured into 14 modular patches covering bindings, driver core,
> features, and platform integration (was 6 patches in v1)
> - Added comprehensive device-tree bindings support for vendor prefixes
> and SSD16xx controller configurations
> - Refactored driver architecture from drm/tiny panel driver to drm/solomon
> bridge driver
> - Switch to using GEM_SHMEM helpers
> - Refactored data entry mode implementation
> - Removed runtime-configurable rotation/border-waveform DRM properties and
> their module params; rotation is now set via device tree, and border
> waveform now uses an enhanced fixed per-panel default
> - Added support for Solomon SSD1677 controller variant
> - Improved session management with plane properties
> - Added comprehensive power management support
> - Support for panels with reversed RAM X order
> - Dropped RGB888, RGB565, R8, NV12, NV16, YUYV, and UYVY format support;
> driver now only exposes XRGB8888 and R1
>
> [0]: [V1 patch series]
> https://lore.kernel.org/all/20260430183311.2978142-1-devarsht@ti.com/
>
> [1]: [Development Branch]
> https://github.com/devarsht/linux-next/tree/epaper_v3_final_4
>
> [2]: [Test Suite]
> https://github.com/devarsht/linux-next/tree/epaper_v3_final_4/tests_27sept_new8
>
> [3]: [Test Logs]
> https://github.com/devarsht/linux-next/tree/epaper_v3_final_4/tests_27sept_new8/logs
>
> [4]: [Test Results]
> https://github.com/devarsht/linux-next/tree/epaper_v3_final_4/tests_27sept_new8/results
>
> [5]: [Result Summary]
> https://github.com/devarsht/linux-next/blob/epaper_v3_final_4/tests_27sept_new8/results/run_all*.summary
>
> [6]: [V2 Patch]
> https://lore.kernel.org/all/20260927182329.4193961-1-devarsht@ti.com/
>
> Devarsh Thakkar (13):
> dt-bindings: vendor-prefixes: Add Dalian Good Display Co., Ltd.
> dt-bindings: display: Add Solomon SSD16xx e-paper controller
> dt-bindings: display: solomon,ssd16xx: Add Solomon SSD1677 controller
> drm/solomon: Add DRM driver for Solomon SSD16xx e-paper display
> controllers
> drm/solomon: ssd16xx: Add clear_on_init/close/disable session
> management
> drm/solomon: ssd16xx: Add support for Solomon SSD1677 controller
> drm/solomon: ssd16xx: Add power management support
> drm/solomon: ssd16xx: Expose refresh mode as plane property
> drm/solomon: ssd16xx: Expose color mode as plane property
> drm/solomon: ssd16xx: Expose session management as plane properties
> MAINTAINERS: Add entry for Solomon SSD16xx DRM driver
> arm64: defconfig: Enable DRM_SSD16XX for AM62L3 EVM
> arm64: dts: ti: [DO_NOT_MERGE] Add AM62L3 EVM overlay for GDEY042T81
> e-paper display
>
> LiangCheng Wang (1):
> drm/solomon: ssd16xx: support panels whose RAM X order is reversed
>
> .../bindings/display/solomon,ssd1683.yaml | 86 +
> .../devicetree/bindings/vendor-prefixes.yaml | 2 +
> MAINTAINERS | 9 +
> arch/arm64/boot/dts/ti/Makefile | 6 +
> .../ti/k3-am62l3-evm-epaper-gdey042t81.dtso | 96 +
> arch/arm64/configs/defconfig | 1 +
> drivers/gpu/drm/solomon/Kconfig | 13 +
> drivers/gpu/drm/solomon/Makefile | 1 +
> drivers/gpu/drm/solomon/ssd16xx.c | 2659 +++++++++++++++++
> 9 files changed, 2873 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/display/solomon,ssd1683.yaml
> create mode 100644 arch/arm64/boot/dts/ti/k3-am62l3-evm-epaper-gdey042t81.dtso
> create mode 100644 drivers/gpu/drm/solomon/ssd16xx.c
>
prev parent reply other threads:[~2026-11-04 14:23 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-19 21:37 Devarsh Thakkar
2026-10-19 21:37 ` [PATCH v3 01/14] dt-bindings: vendor-prefixes: Add Dalian Good Display Co., Ltd Devarsh Thakkar
2026-10-19 21:37 ` [PATCH v3 02/14] dt-bindings: display: Add Solomon SSD16xx e-paper controller Devarsh Thakkar
2026-10-20 8:34 ` Krzysztof Kozlowski
2026-10-19 21:37 ` [PATCH v3 03/14] dt-bindings: display: solomon,ssd16xx: Add Solomon SSD1677 controller Devarsh Thakkar
2026-10-21 3:37 ` Rob Herring (Arm)
2026-10-19 21:37 ` [PATCH v3 04/14] drm/solomon: Add DRM driver for Solomon SSD16xx e-paper display controllers Devarsh Thakkar
2026-10-19 21:37 ` [PATCH v3 05/14] drm/solomon: ssd16xx: Add clear_on_init/close/disable session management Devarsh Thakkar
2026-10-19 21:37 ` [PATCH v3 06/14] drm/solomon: ssd16xx: Add support for Solomon SSD1677 controller Devarsh Thakkar
2026-10-19 21:37 ` [PATCH v3 07/14] drm/solomon: ssd16xx: Add power management support Devarsh Thakkar
2026-10-19 21:37 ` [PATCH v3 08/14] drm/solomon: ssd16xx: Expose refresh mode as plane property Devarsh Thakkar
2026-10-19 21:37 ` [PATCH v3 09/14] drm/solomon: ssd16xx: Expose color " Devarsh Thakkar
2026-10-19 21:37 ` [PATCH v3 10/14] drm/solomon: ssd16xx: Expose session management as plane properties Devarsh Thakkar
2026-10-20 10:32 ` Markus Elfring
2026-10-19 21:37 ` [PATCH v3 11/14] drm/solomon: ssd16xx: support panels whose RAM X order is reversed Devarsh Thakkar
2026-10-19 21:37 ` [PATCH v3 12/14] MAINTAINERS: Add entry for Solomon SSD16xx DRM driver Devarsh Thakkar
2026-11-04 17:29 ` Krzysztof Kozlowski
2026-10-19 21:37 ` [PATCH v3 13/14] arm64: defconfig: Enable DRM_SSD16XX for AM62L3 EVM Devarsh Thakkar
2026-10-19 21:37 ` [PATCH v3 14/14] arm64: dts: ti: [DO_NOT_MERGE] Add AM62L3 EVM overlay for GDEY042T81 e-paper display Devarsh Thakkar
2026-11-04 14:22 ` Thakkar, Devarsh [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3e086d5e-4ab6-481d-8bfe-3929cecc9bfe@ti.com \
--to=devarsht@ti.com \
--cc=airlied@gmail.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=kristo@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=nm@ti.com \
--cc=robh@kernel.org \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
--cc=vigneshr@ti.com \
--cc=zaq14760@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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®