public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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


             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