5ca33e20a8
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>
57 lines
1.1 KiB
Plaintext
57 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_gdeh0213b1;
|
|
};
|
|
};
|
|
|
|
&arduino_spi {
|
|
ssd16xx_waveshare_epaper_gdeh0213b1: ssd16xxfb@0 {
|
|
compatible = "gooddisplay,gdeh0213b1", "solomon,ssd1673";
|
|
spi-max-frequency = <4000000>;
|
|
reg = <0>;
|
|
width = <250>;
|
|
height = <120>;
|
|
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 */
|
|
|
|
full {
|
|
gdv = [10 0a];
|
|
sdv = [19];
|
|
vcom = <0xa8>;
|
|
border-waveform = <0x71>;
|
|
dummy-line = <0x1a>;
|
|
gate-line-width = <0x08>;
|
|
lut = [
|
|
22 55 AA 55 AA 55 AA 11
|
|
00 00 00 00 00 00 00 00
|
|
1E 1E 1E 1E 1E 1E 1E 1E
|
|
01 00 00 00 00
|
|
];
|
|
};
|
|
|
|
partial {
|
|
gdv = [10 0a];
|
|
sdv = [19];
|
|
vcom = <0xa8>;
|
|
border-waveform = <0x71>;
|
|
dummy-line = <0x1a>;
|
|
gate-line-width = <0x08>;
|
|
lut = [
|
|
18 00 00 00 00 00 00 00
|
|
00 00 00 00 00 00 00 00
|
|
0F 01 00 00 00 00 00 00
|
|
00 00 00 00 00
|
|
];
|
|
};
|
|
};
|
|
};
|