zephyr/boards/shields/waveshare_epaper/waveshare_epaper_gdeh029a1.overlay
Andreas Sandberg 5ca33e20a8 drivers: ssd16xx: Add support for partial refresh profiles
Add support for partial refresh profiles. This makes it possible to
use partial refresh on generation 2 devices which are able to store
partial refresh LUTs in OTP.

Partial refresh is only enabled if a partial profile has been
provided. The display will use the full refresh profile if in this
case.

Devices that need custom LUTs and voltages can specify them separately
for the full and partial profiles. The controller will be reset when
changing profiles which means that profiles always override the
default reset values. This means that it is, for example, possible to
use default values and LUTs from OTP for a full refresh and a custom
profile for partial refreshes.

For example, to use a GoodDisplay GDEY027T91 with partial refresh
simply use the following device tree fragment:

display: ssd1680@0 {
	compatible = "solomon,ssd1680";

	spi-max-frequency = <4000000>;
	duplex = <SPI_HALF_DUPLEX>;
	reg = <0>;

	dc-gpios = <&arduino_header 15 GPIO_ACTIVE_LOW>;
	reset-gpios = <&arduino_header 14 GPIO_ACTIVE_LOW>;
	busy-gpios = <&arduino_header 13 GPIO_ACTIVE_HIGH>;

	/* Enable the built-in temperature sensor */
	tssv = <0x80>;

	width = <264>;
	height = <176>;

        /* Enable partial refresh using built-in LUT */
	partial {
	};
};

Signed-off-by: Andreas Sandberg <andreas@sandberg.uk>
2023-05-11 14:40:50 -07:00

55 lines
1.1 KiB
Plaintext

/*
* Copyright (c) 2019, PHYTEC Messtechnik GmbH
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "waveshare_epaper_common.dtsi"
/ {
chosen {
zephyr,display = &ssd16xx_waveshare_epaper_gdeh029a1;
};
};
&arduino_spi {
ssd16xx_waveshare_epaper_gdeh029a1: ssd16xxfb@0 {
compatible = "gooddisplay,gdeh029a1", "solomon,ssd1608";
spi-max-frequency = <4000000>;
reg = <0>;
width = <296>;
height = <128>;
dc-gpios = <&arduino_header 15 GPIO_ACTIVE_LOW>; /* D9 */
reset-gpios = <&arduino_header 14 GPIO_ACTIVE_LOW>; /* D8 */
busy-gpios = <&arduino_header 13 GPIO_ACTIVE_HIGH>; /* D7 */
softstart = [d7 d6 9d];
full {
vcom = <0x9a>;
border-waveform = <0x33>;
dummy-line = <0x1a>;
gate-line-width = <0x08>;
lut = [
50 AA 55 AA 11 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 FF FF 1F 00
00 00 00 00 00 00
];
};
partial {
vcom = <0xa8>;
border-waveform = <0x01>;
dummy-line = <0x1a>;
gate-line-width = <0x08>;
lut = [
10 18 18 08 18 18 08 00
00 00 00 00 00 00 00 00
00 00 00 00 13 14 44 12
00 00 00 00 00 00
];
};
};
};