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