From: Devarsh Thakkar <devarsht@ti.com>
To: David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Neil Armstrong <neil.armstrong@linaro.org>,
"Bjorn Andersson" <bjorn.andersson@oss.qualcomm.com>,
<dri-devel@lists.freedesktop.org>, <devicetree@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Cc: <praneeth@ti.com>, <vigneshr@ti.com>, <s-jain1@ti.com>,
<s-wang12@ti.com>, <r-donadkar@ti.com>, <r-sharma3@ti.com>,
<devarsht@ti.com>, <afd@ti.com>
Subject: [PATCH 0/6] Add DRM driver for Solomon SSD16xx e-paper display controllers
Date: Fri, 1 May 2026 00:03:05 +0530 [thread overview]
Message-ID: <20260430183311.2978142-1-devarsht@ti.com> (raw)
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.
E-paper displays are bistable: they retain the last image indefinitely
without power, making them well-suited for applications where display
content changes infrequently — dashboards, e-labels, signage, e-readers
and e-badges and low-power IoT interfaces. The driver is designed
and architected keeping this bi-stable nature and low-power requirements
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
- Broad pixel format coverage: XRGB8888, RGB888, RGB565, R8, NV12,
NV16, YUYV, UYVY, R1 (native 1bpp)
- 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 connector properties for refresh mode,
rotation, border waveform, clear-on-init/close/disable, colour mode,
and init-refresh waveform, each with a corresponding module parameter
for boot-time or sysfs configuration
Tested on AM62L3 EVM using Gooddisplay GDEY042T81 using following branch
and test suite:
Test suite:
https://github.com/devarsht/linux-next/tree/drm_ssd16xx_epaper/ssd16xx_tests
Test scripts:
https://github.com/devarsht/linux-next/blob/drm_ssd16xx_epaper/ssd16xx_tests/run_all_tests.sh (parent script)
https://github.com/devarsht/linux-next/blob/drm_ssd16xx_epaper/ssd16xx_tests/test*.sh (Individual test scripts)
Testi console logs and summary:
https://github.com/devarsht/linux-next/blob/drm_ssd16xx_epaper/ssd16xx_tests/logs.txt
https://github.com/devarsht/linux-next/blob/drm_ssd16xx_epaper/ssd16xx_tests/results/run_all_20260430_224250.summary
Individual test results:
Supported Pixel Formats tests:
https://github.com/devarsht/linux-next/blob/drm_ssd16xx_epaper/ssd16xx_tests/results/test_formats
Integration (Misc) tests:
https://github.com/devarsht/linux-next/blob/drm_ssd16xx_epaper/ssd16xx_tests/results/test_integration_20260430_223910.result
https://github.com/devarsht/linux-next/blob/drm_ssd16xx_epaper/ssd16xx_tests/results/test_integration_20260430_225207.result
Module params tests:
https://github.com/devarsht/linux-next/blob/drm_ssd16xx_epaper/ssd16xx_tests/results/test_module_params_20260430_224700.result
PM Automated tests:
https://github.com/devarsht/linux-next/blob/drm_ssd16xx_epaper/ssd16xx_tests/results/test_pm_20260430_225028.result
DRM properties tests:
https://github.com/devarsht/linux-next/blob/drm_ssd16xx_epaper/ssd16xx_tests/results/test_properties_20260430_224329.result
Devarsh Thakkar (6):
dt-bindings: vendor-prefixes: Add Dalian Good Display Co., Ltd.
dt-bindings/display: Add Solomon SSD16xx e-paper controller binding
drm/tiny: Add DRM driver for Solomon SSD16xx e-paper display
controllers
drm/tiny: panel-ssd16xx: Add power management support
MAINTAINERS: Add entry for Solomon SSD16xx DRM driver
arm64: defconfig: Enable DRM_PANEL_SSD16XX
.../bindings/display/solomon,ssd16xx.yaml | 81 +
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
MAINTAINERS | 7 +
arch/arm64/configs/defconfig | 1 +
drivers/gpu/drm/tiny/Kconfig | 13 +
drivers/gpu/drm/tiny/Makefile | 1 +
drivers/gpu/drm/tiny/panel-ssd16xx.c | 2731 +++++++++++++++++
7 files changed, 2836 insertions(+)
create mode 100644 Documentation/devicetree/bindings/display/solomon,ssd16xx.yaml
create mode 100644 drivers/gpu/drm/tiny/panel-ssd16xx.c
--
2.39.1
next reply other threads:[~2026-04-30 18:33 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-30 18:33 Devarsh Thakkar [this message]
2026-04-30 18:33 ` [PATCH 1/6] dt-bindings: vendor-prefixes: Add Dalian Good Display Co., Ltd Devarsh Thakkar
2026-05-04 10:18 ` Krzysztof Kozlowski
2026-04-30 18:33 ` [PATCH 2/6] dt-bindings/display: Add Solomon SSD16xx e-paper controller binding Devarsh Thakkar
2026-05-07 18:34 ` Rob Herring
2026-04-30 18:33 ` [PATCH 3/6] drm/tiny: Add DRM driver for Solomon SSD16xx e-paper display controllers Devarsh Thakkar
2026-05-05 7:05 ` Thomas Zimmermann
2026-05-08 16:12 ` Devarsh Thakkar
2026-04-30 18:33 ` [PATCH 4/6] drm/tiny: panel-ssd16xx: Add power management support Devarsh Thakkar
2026-05-05 7:08 ` Thomas Zimmermann
2026-04-30 18:33 ` [PATCH 5/6] MAINTAINERS: Add entry for Solomon SSD16xx DRM driver Devarsh Thakkar
2026-04-30 18:33 ` [PATCH 6/6] arm64: defconfig: Enable DRM_PANEL_SSD16XX Devarsh Thakkar
2026-05-01 9:30 ` Krzysztof Kozlowski
2026-05-05 6:25 ` Devarsh Thakkar
2026-05-05 12:42 ` Andrew Davis
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=20260430183311.2978142-1-devarsht@ti.com \
--to=devarsht@ti.com \
--cc=afd@ti.com \
--cc=airlied@gmail.com \
--cc=bjorn.andersson@oss.qualcomm.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=krzk+dt@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=praneeth@ti.com \
--cc=r-donadkar@ti.com \
--cc=r-sharma3@ti.com \
--cc=robh@kernel.org \
--cc=s-jain1@ti.com \
--cc=s-wang12@ti.com \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
--cc=vigneshr@ti.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.