Skip to content

Commit 8ebc47e

Browse files
committed
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 <[email protected]>
1 parent 77857b3 commit 8ebc47e

File tree

9 files changed

+166
-112
lines changed

9 files changed

+166
-112
lines changed

boards/arm/reel_board/reel_board.dts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,19 @@
8181
];
8282
};
8383

84-
lut-default = [
85-
18 00 00 00 00 00 00 00
86-
00 00 00 00 00 00 00 00
87-
0F 01 00 00 00 00 00 00
88-
00 00 00 00 00
89-
];
84+
partial {
85+
gdv = [10 0a];
86+
sdv = [19];
87+
vcom = <0xa8>;
88+
border-waveform = <0x71>;
89+
dummy-line = <0x1a>;
90+
gate-line-width = <0x08>;
91+
lut = [
92+
18 00 00 00 00 00 00 00
93+
00 00 00 00 00 00 00 00
94+
0F 01 00 00 00 00 00 00
95+
00 00 00 00 00
96+
];
97+
};
9098
};
9199
};

boards/arm/reel_board/reel_board_v2.dts

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -93,19 +93,27 @@
9393
];
9494
};
9595

96-
lut-default = [
97-
00 00 00 00 00 00 00 /* LUT0: BB: VS0..6 */
98-
80 00 00 00 00 00 00 /* LUT1: BW: VS0..6 */
99-
40 00 00 00 00 00 00 /* LUT2: WB: VS0..6 */
100-
80 00 00 00 00 00 00 /* LUT3: WW: VS0..6 */
101-
00 00 00 00 00 00 00 /* LUT4: VCOM: VS0..6 */
102-
0A 00 00 00 04 /* TP0A TP0B TP0C TP0D RP0 */
103-
00 00 00 00 00 /* TP1A TP1B TP1C TP1D RP1 */
104-
00 00 00 00 00 /* TP2A TP2B TP2C TP2D RP2 */
105-
00 00 00 00 00 /* TP3A TP3B TP3C TP3D RP3 */
106-
00 00 00 00 00 /* TP4A TP4B TP4C TP4D RP4 */
107-
00 00 00 00 00 /* TP5A TP5B TP5C TP5D RP5 */
108-
00 00 00 00 00 /* TP6A TP6B TP6C TP6D RP6 */
109-
];
96+
partial {
97+
gdv = [15];
98+
sdv = [41 a8 32];
99+
vcom = <0x26>;
100+
border-waveform = <0x01>;
101+
dummy-line = <0x30>;
102+
gate-line-width = <0x0a>;
103+
lut = [
104+
00 00 00 00 00 00 00 /* LUT0: BB: VS0..6 */
105+
80 00 00 00 00 00 00 /* LUT1: BW: VS0..6 */
106+
40 00 00 00 00 00 00 /* LUT2: WB: VS0..6 */
107+
80 00 00 00 00 00 00 /* LUT3: WW: VS0..6 */
108+
00 00 00 00 00 00 00 /* LUT4: VCOM: VS0..6 */
109+
0A 00 00 00 04 /* TP0A TP0B TP0C TP0D RP0 */
110+
00 00 00 00 00 /* TP1A TP1B TP1C TP1D RP1 */
111+
00 00 00 00 00 /* TP2A TP2B TP2C TP2D RP2 */
112+
00 00 00 00 00 /* TP3A TP3B TP3C TP3D RP3 */
113+
00 00 00 00 00 /* TP4A TP4B TP4C TP4D RP4 */
114+
00 00 00 00 00 /* TP5A TP5B TP5C TP5D RP5 */
115+
00 00 00 00 00 /* TP6A TP6B TP6C TP6D RP6 */
116+
];
117+
};
110118
};
111119
};

boards/shields/waveshare_epaper/waveshare_epaper_gdeh0154a07.overlay

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@
2626
tssv = <0x80>;
2727

2828
full {
29+
border-waveform = <0x05>;
30+
};
31+
32+
partial {
2933
border-waveform = <0x3c>;
3034
};
3135
};

boards/shields/waveshare_epaper/waveshare_epaper_gdeh0213b1.overlay

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,19 @@
3838
];
3939
};
4040

41-
lut-default = [
42-
18 00 00 00 00 00 00 00
43-
00 00 00 00 00 00 00 00
44-
0F 01 00 00 00 00 00 00
45-
00 00 00 00 00
46-
];
41+
partial {
42+
gdv = [10 0a];
43+
sdv = [19];
44+
vcom = <0xa8>;
45+
border-waveform = <0x71>;
46+
dummy-line = <0x1a>;
47+
gate-line-width = <0x08>;
48+
lut = [
49+
18 00 00 00 00 00 00 00
50+
00 00 00 00 00 00 00 00
51+
0F 01 00 00 00 00 00 00
52+
00 00 00 00 00
53+
];
54+
};
4755
};
4856
};

boards/shields/waveshare_epaper/waveshare_epaper_gdeh0213b72.overlay

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
full {
2727
gdv = [15];
2828
sdv = [41 a8 32];
29-
vcom = <0x26>;
29+
vcom = <0x55>;
3030
border-waveform = <0x03>;
3131
dummy-line = <0x30>;
3232
gate-line-width = <0x0a>;
@@ -46,19 +46,27 @@
4646
];
4747
};
4848

49-
lut-default = [
50-
00 00 00 00 00 00 00
51-
80 00 00 00 00 00 00
52-
40 00 00 00 00 00 00
53-
80 00 00 00 00 00 00
54-
00 00 00 00 00 00 00
55-
0A 00 00 00 04
56-
00 00 00 00 00
57-
00 00 00 00 00
58-
00 00 00 00 00
59-
00 00 00 00 00
60-
00 00 00 00 00
61-
00 00 00 00 00
62-
];
49+
partial {
50+
gdv = [15];
51+
sdv = [41 a8 32];
52+
vcom = <0x26>;
53+
border-waveform = <0x01>;
54+
dummy-line = <0x30>;
55+
gate-line-width = <0x0a>;
56+
lut = [
57+
00 00 00 00 00 00 00
58+
80 00 00 00 00 00 00
59+
40 00 00 00 00 00 00
60+
80 00 00 00 00 00 00
61+
00 00 00 00 00 00 00
62+
0A 00 00 00 04
63+
00 00 00 00 00
64+
00 00 00 00 00
65+
00 00 00 00 00
66+
00 00 00 00 00
67+
00 00 00 00 00
68+
00 00 00 00 00
69+
];
70+
};
6371
};
6472
};

boards/shields/waveshare_epaper/waveshare_epaper_gdeh029a1.overlay

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@
2626
softstart = [d7 d6 9d];
2727

2828
full {
29-
gdv = [16];
30-
sdv = [0a];
31-
vcom = <0xa8>;
29+
vcom = <0x9a>;
3230
border-waveform = <0x33>;
3331
dummy-line = <0x1a>;
3432
gate-line-width = <0x08>;
@@ -40,11 +38,17 @@
4038
];
4139
};
4240

43-
lut-default = [
44-
10 18 18 08 18 18 08 00
45-
00 00 00 00 00 00 00 00
46-
00 00 00 00 13 14 44 12
47-
00 00 00 00 00 00
48-
];
41+
partial {
42+
vcom = <0xa8>;
43+
border-waveform = <0x01>;
44+
dummy-line = <0x1a>;
45+
gate-line-width = <0x08>;
46+
lut = [
47+
10 18 18 08 18 18 08 00
48+
00 00 00 00 00 00 00 00
49+
00 00 00 00 13 14 44 12
50+
00 00 00 00 00 00
51+
];
52+
};
4953
};
5054
};

0 commit comments

Comments
 (0)