xref: /rk3399_rockchip-uboot/drivers/video/rk_eink/epdlut/epd_lut.h (revision 1e54c4330940469b5f7ddb396c47a4a5a89e3e21)
193a7515aSWenping Zhang // SPDX-License-Identifier: GPL-2.0
293a7515aSWenping Zhang /*
3*1e54c433SZhibin Huang  * Copyright (c) 2020 Rockchip Electronics Co., Ltd.
493a7515aSWenping Zhang  *
593a7515aSWenping Zhang  * Author: Zorro Liu <zorro.liu@rock-chips.com>
693a7515aSWenping Zhang  */
793a7515aSWenping Zhang 
893a7515aSWenping Zhang #ifndef EPD_LUT_H
993a7515aSWenping Zhang #define EPD_LUT_H
1093a7515aSWenping Zhang 
11*1e54c433SZhibin Huang #define MAXFRAME    255
1293a7515aSWenping Zhang 
13*1e54c433SZhibin Huang #define WF_4BIT	16
14*1e54c433SZhibin Huang #define WF_5BIT	32
1593a7515aSWenping Zhang 
16*1e54c433SZhibin Huang // same to pvi_wf_mode
1793a7515aSWenping Zhang enum epd_lut_type {
18*1e54c433SZhibin Huang 	WF_TYPE_RESET = 0,
19*1e54c433SZhibin Huang 	WF_TYPE_GRAY2,	// like DU
20*1e54c433SZhibin Huang 	WF_TYPE_GRAY4,  // like DU4
21*1e54c433SZhibin Huang 	WF_TYPE_GC16,
22*1e54c433SZhibin Huang 	WF_TYPE_GL16,
23*1e54c433SZhibin Huang 	WF_TYPE_GLR16,
24*1e54c433SZhibin Huang 	WF_TYPE_GLD16,
25*1e54c433SZhibin Huang 	WF_TYPE_A2,
26*1e54c433SZhibin Huang 	WF_TYPE_GCC16,
2793a7515aSWenping Zhang 	PVI_WF_MAX,
2893a7515aSWenping Zhang 
29*1e54c433SZhibin Huang 	WF_TYPE_AUTO,	// like GC16, rk define
30*1e54c433SZhibin Huang 	WF_TYPE_RK_GLR16, // for part regal mode
31*1e54c433SZhibin Huang 	WF_TYPE_RK_GLD16, // for part regal mode
32*1e54c433SZhibin Huang 	WF_TYPE_RK_GL16, // for part gl16 mode
33*1e54c433SZhibin Huang 	WF_TYPE_RK_GC16, // for part gc16 mode
34*1e54c433SZhibin Huang 	WF_TYPE_MAX,
35*1e54c433SZhibin Huang 	WF_TYPE_GRAY16,
3693a7515aSWenping Zhang };
3793a7515aSWenping Zhang 
3893a7515aSWenping Zhang struct epd_lut_data {
3993a7515aSWenping Zhang 	unsigned int frame_num;
4093a7515aSWenping Zhang 	unsigned int *data;
41*1e54c433SZhibin Huang 	u8 *wf_table[2];
4293a7515aSWenping Zhang };
4393a7515aSWenping Zhang 
4493a7515aSWenping Zhang /*
4593a7515aSWenping Zhang  * EPD LUT module export symbols
4693a7515aSWenping Zhang  */
47*1e54c433SZhibin Huang int epd_lut_from_mem_init(void *waveform);
4893a7515aSWenping Zhang const char *epd_lut_get_wf_version(void);
49*1e54c433SZhibin Huang int epd_lut_get(struct epd_lut_data *output, enum epd_lut_type lut_type, int temperture, int pic, int regal_pix);
5093a7515aSWenping Zhang 
51*1e54c433SZhibin Huang //you can change overlay lut mode here
52*1e54c433SZhibin Huang int epd_overlay_lut(void);
5393a7515aSWenping Zhang 
5493a7515aSWenping Zhang /*
5593a7515aSWenping Zhang  * PVI Waveform Interfaces
5693a7515aSWenping Zhang  */
5793a7515aSWenping Zhang int pvi_wf_input(void *waveform_file);
58*1e54c433SZhibin Huang int pvi_wf_add_custom_mode_table(u8 *table, int size);
5993a7515aSWenping Zhang const char *pvi_wf_get_version(void);
60*1e54c433SZhibin Huang int pvi_wf_get_lut(struct epd_lut_data *output, enum epd_lut_type lut_type, int temperture, int pic, int regal_pix);
6193a7515aSWenping Zhang 
6293a7515aSWenping Zhang /*
6393a7515aSWenping Zhang  * RKF Waveform Interfaces
6493a7515aSWenping Zhang  */
6593a7515aSWenping Zhang int rkf_wf_input(void *waveform_file);
6693a7515aSWenping Zhang const char *rkf_wf_get_version(void);
67*1e54c433SZhibin Huang int rkf_wf_get_lut(struct epd_lut_data *output, enum epd_lut_type lut_type, int temperture, int pic, int regal_pix);
6893a7515aSWenping Zhang #endif
69