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