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