xref: /OK3568_Linux_fs/kernel/drivers/gpu/drm/rockchip/ebc-dev/epdlut/epd_lut.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2020 Rockchip Electronics Co. Ltd.
4  *
5  * Author: Zorro Liu <zorro.liu@rock-chips.com>
6  */
7 
8 #ifndef EPD_LUT_H
9 #define EPD_LUT_H
10 
11 enum epd_lut_type {
12 	WF_TYPE_RESET	= 1,
13 	WF_TYPE_GRAY16	= 2,
14 	WF_TYPE_GRAY4	= 3,
15 	WF_TYPE_GRAY2	= 4,
16 	WF_TYPE_AUTO	= 5,
17 	WF_TYPE_A2	= 6,
18 	WF_TYPE_GC16	= 7,
19 	WF_TYPE_GL16	= 8,
20 	WF_TYPE_GLR16	= 9,
21 	WF_TYPE_GLD16	= 10,
22 	WF_TYPE_GCC16	= 11,
23 	WF_TYPE_MAX	= 12,
24 };
25 
26 enum pvi_wf_mode {
27 	PVI_WF_RESET	= 0,
28 	PVI_WF_DU	= 1,
29 	PVI_WF_DU4	= 2,
30 	PVI_WF_GC16	= 3,
31 	PVI_WF_GL16	= 4,
32 	PVI_WF_GLR16	= 5,
33 	PVI_WF_GLD16	= 6,
34 	PVI_WF_A2	= 7,
35 	PVI_WF_GCC16	= 8,
36 	PVI_WF_MAX,
37 };
38 
39 struct epd_lut_data {
40 	unsigned int frame_num;
41 	unsigned int *data;
42 	u8 *wf_table;
43 };
44 
45 /*
46  * EPD LUT module export symbols
47  */
48 int epd_lut_from_mem_init(void *waveform);
49 int epd_lut_from_file_init(struct device *dev, void *waveform, int size);
50 const char *epd_lut_get_wf_version(void);
51 int epd_lut_get(struct epd_lut_data *output, enum epd_lut_type lut_type, int temperture);
52 
53 /*
54  * PVI Waveform Interfaces
55  */
56 int pvi_wf_input(void *waveform_file);
57 const char *pvi_wf_get_version(void);
58 int pvi_wf_get_lut(struct epd_lut_data *output, enum epd_lut_type lut_type, int temperture);
59 
60 /*
61  * RKF Waveform Interfaces
62  */
63 int rkf_wf_input(void *waveform_file);
64 const char *rkf_wf_get_version(void);
65 int rkf_wf_get_lut(struct epd_lut_data *output, enum epd_lut_type lut_type, int temperture);
66 #endif
67