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: 7+ 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-04-30 18:33 ` [PATCH 2/6] dt-bindings/display: Add Solomon SSD16xx e-paper controller binding Devarsh Thakkar
2026-04-30 18:33 ` [PATCH 3/6] drm/tiny: Add DRM driver for Solomon SSD16xx e-paper display controllers Devarsh Thakkar
2026-04-30 18:33 ` [PATCH 4/6] drm/tiny: panel-ssd16xx: Add power management support Devarsh Thakkar
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
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox