xref: /OK3568_Linux_fs/u-boot/drivers/video/rk_eink/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 #define LUT_SUCCESS	(0)
12 #define LUT_ERROR	(-1)
13 
14 #define LUT_FROM_GPIO_SPI_FLASH		(0)
15 #define LUT_FROM_RK_SPI_FLASH		(1)
16 #define LUT_FROM_NAND_FLASH		(2)
17 #define LUT_FROM_WAVEFORM_FILE		(3)
18 #define LUT_FROM_MEM_RESERVED		(4)
19 
20 enum epd_lut_type {
21 	WF_TYPE_RESET	= 1,
22 	WF_TYPE_GRAY16	= 2,
23 	WF_TYPE_GRAY4	= 3,
24 	WF_TYPE_GRAY2	= 4,
25 	WF_TYPE_AUTO	= 5,
26 	WF_TYPE_A2	= 6,
27 	WF_TYPE_GC16	= 7,
28 	WF_TYPE_GL16	= 8,
29 	WF_TYPE_GLR16	= 9,
30 	WF_TYPE_GLD16	= 10,
31 	WF_TYPE_GCC16	= 11,
32 	WF_TYPE_GRAY32	= 12,
33 	WF_TYPE_MAX	= 13,
34 };
35 
36 enum waveform_type {
37 	RKF_WAVEFORM	= 1,
38 	PVI_WAVEFORM	= 2,
39 	OED_WAVEFORM	= 3,
40 };
41 
42 enum pvi_wf_mode {
43 	PVI_WF_RESET	= 0,
44 	PVI_WF_DU	= 1,
45 	PVI_WF_DU4	= 2,
46 	PVI_WF_GC16	= 3,
47 	PVI_WF_GL16	= 4,
48 	PVI_WF_GLR16	= 5,
49 	PVI_WF_GLD16	= 6,
50 	PVI_WF_A2	= 7,
51 	PVI_WF_GCC16 = 8,
52 	PVI_WF_MAX,
53 };
54 
55 enum oed_wf_mode {
56 	OED_WF_RESET	= 0,
57 	OED_WF_DU	= 1,
58 	OED_WF_GC16	= 2,
59 	OED_WF_GU16	= 3,
60 	OED_WF_A2	= 4,
61 	OED_WF_GL16	= 5,
62 	OED_WF_A2IN	= 6,
63 	OED_WF_A2OUT	= 7,
64 	OED_WF_MAX,
65 };
66 
67 struct epd_lut_data {
68 	unsigned int frame_num;
69 	unsigned int *data;
70 };
71 
72 struct epd_lut_ops {
73 	int (*lut_get)(struct epd_lut_data *lut, enum epd_lut_type type,
74 		       int temp);
75 };
76 
77 /*
78  * EPD LUT module export symbols
79  */
80 int epd_lut_from_mem_init(void *waveform, struct epd_lut_ops *ops);
81 const char *epd_lut_get_wf_version(void);
82 
83 /*
84  * External functions
85  */
86 int map_gray16_mode(void);
87 int map_auto_mode(void);
88 
89 /*
90  * PVI Waveform Interfaces
91  */
92 int pvi_wf_input(void *waveform_file);
93 const char *pvi_wf_get_version(void);
94 int pvi_wf_get_lut(struct epd_lut_data *output, enum epd_lut_type lut_type,
95 		   int temperature);
96 
97 /*
98  * RKF Waveform Interfaces
99  */
100 int rkf_wf_input(void *waveform_file);
101 const char *rkf_wf_get_version(void);
102 int rkf_wf_get_lut(struct epd_lut_data *output, enum epd_lut_type lut_type,
103 		   int temperature);
104 #endif
105 
106