1 /* 2 * Allwinner SoCs display driver. 3 * 4 * Copyright (C) 2016 Allwinner. 5 * 6 * This file is licensed under the terms of the GNU General Public 7 * License version 2. This program is licensed "as is" without any 8 * warranty of any kind, whether express or implied. 9 */ 10 11 /****************************************************************************** 12 * All Winner Tech, All Right Reserved. 2014-2015 Copyright (c) 13 * 14 * File name : de_enhance.h 15 * 16 * Description : display engine 2.0 enhance basic function declaration 17 * 18 * History : 2014/04/02 vito cheng v0.1 Initial version 19 * 2014/04/29 vito cheng v0.2 Add disp_enhance_config_data 20 * struct delcaration 21 ******************************************************************************/ 22 #ifndef __DE_ENHANCE_H__ 23 #define __DE_ENHANCE_H__ 24 25 #include "de_fce_type.h" 26 #include "de_peak_type.h" 27 #include "de_lti_type.h" 28 #include "de_ase_type.h" 29 #include "de_fcc_type.h" 30 #include "de_bws_type.h" 31 32 #define MODE_NUM 4 33 #define PARA_NUM 6 34 #define FORMAT_NUM 2 35 #define ENHANCE_MODE_NUM 3 36 37 #define ENAHNCE_MIN_WIDTH 32 38 #define ENAHNCE_MIN_HEIGHT 4 39 40 #define PEAK_OFST 0xA6000 /* PEAKING offset based on RTMX */ 41 #define LTI_OFST 0xA4000 /* LTI offset based on RTMX */ 42 #define FCE_OFST 0xA0000 /* FCE offset based on RTMX */ 43 #define ASE_OFST 0xA8000 /* ASE offset based on RTMX */ 44 #define FCC_OFST 0xAA000 /* FCC offset based on RTMX */ 45 46 extern struct __ce_status_t *g_ce_status[DE_NUM][CHN_NUM]; 47 48 struct vep_config_data { 49 struct __fce_config_data fce_para; 50 struct __lti_config_data lti_para; 51 struct __peak_config_data peak_para; 52 struct __ase_config_data ase_para; 53 struct __fcc_config_data fcc_para; 54 }; 55 56 extern struct __hist_status_t *g_hist_status[DE_NUM][CHN_NUM]; 57 extern struct __ce_status_t *g_ce_status[DE_NUM][CHN_NUM]; 58 extern unsigned int *g_hist[DE_NUM][CHN_NUM]; 59 extern unsigned int g_sum[DE_NUM][CHN_NUM]; 60 extern unsigned int *g_hist_p[DE_NUM][CHN_NUM]; 61 extern unsigned int g_format[DE_NUM]; 62 extern unsigned int g_size_bypass[DE_NUM]; 63 /* size too small to enable vep */ 64 65 /* peak function declaration */ 66 int de_peak_set_reg_base(unsigned int sel, unsigned int chno, void *base); 67 int de_peak_update_regs(unsigned int sel, unsigned int chno); 68 int de_peak_init(unsigned int sel, unsigned int chno, uintptr_t reg_base); 69 int de_peak_exit(unsigned int sel, unsigned int chno); 70 int de_peak_enable(unsigned int sel, unsigned int chno, unsigned int en); 71 int de_peak_set_size(unsigned int sel, unsigned int chno, unsigned int width, 72 unsigned int height); 73 int de_peak_set_window(unsigned int sel, unsigned int chno, 74 unsigned int win_enable, struct de_rect window); 75 int de_peak_set_para(unsigned int sel, unsigned int chno, unsigned int gain, 76 unsigned int hp_ratio, unsigned int bp0_ratio); 77 int de_peak_info2para(unsigned int sharp, struct de_rect window, 78 struct __peak_config_data *para); 79 80 /* /LTI function declaration */ 81 int de_lti_set_reg_base(unsigned int sel, unsigned int chno, void *base); 82 int de_lti_update_regs(unsigned int sel, unsigned int chno); 83 int de_lti_init(unsigned int sel, unsigned int chno, uintptr_t reg_base); 84 int de_lti_exit(unsigned int sel, unsigned int chno); 85 int de_lti_enable(unsigned int sel, unsigned int chno, unsigned int en); 86 int de_lti_set_size(unsigned int sel, unsigned int chno, unsigned int width, 87 unsigned int height); 88 int de_lti_set_window(unsigned int sel, unsigned int chno, 89 unsigned int win_enable, struct de_rect window); 90 int de_lti_set_para(unsigned int sel, unsigned int chno, unsigned int gain); 91 int de_lti_info2para(unsigned int gain, struct de_rect window, 92 struct __lti_config_data *para); 93 94 /* FCE function declaration */ 95 int de_fce_set_reg_base(unsigned int sel, unsigned int chno, void *base); 96 int de_fce_update_regs(unsigned int sel, unsigned int chno); 97 int de_fce_init(unsigned int sel, unsigned int chno, uintptr_t reg_base); 98 int de_fce_exit(unsigned int sel, unsigned int chno); 99 int de_fce_enable(unsigned int sel, unsigned int chno, unsigned int en); 100 int de_fce_set_size(unsigned int sel, unsigned int chno, unsigned int width, 101 unsigned int height); 102 int de_fce_set_window(unsigned int sel, unsigned int chno, 103 unsigned int win_enable, struct de_rect window); 104 int de_fce_set_para(unsigned int sel, unsigned int chno, 105 struct __fce_config_data fce_para); 106 int de_fce_csc_en(unsigned int sel, unsigned int chno, unsigned int csc_enable); 107 int de_fce_info2para(unsigned int detail, unsigned int auto_contrast, 108 unsigned int auto_color, struct de_rect window, 109 struct __fce_config_data *para); 110 int de_fce_get_hist(unsigned int sel, unsigned int chno, unsigned int hist[256], 111 unsigned int *sum); 112 int de_fce_set_ce(unsigned int sel, unsigned int chno, 113 unsigned char ce_lut[256]); 114 int de_fce_info2para(unsigned int sharp, unsigned int auto_contrast, 115 unsigned int auto_color, struct de_rect window, 116 struct __fce_config_data *para); 117 int de_hist_apply(unsigned int screen_id, unsigned int chno, 118 unsigned int hist_en, unsigned int auto_contrast_dirty); 119 int de_hist_tasklet(unsigned int screen_id, unsigned int chno, 120 unsigned int frame_cnt); 121 int de_ce_apply(unsigned int screen_id, unsigned int chno, unsigned int ce_en, 122 unsigned int b_automode, unsigned int up_precent_thr, 123 unsigned int down_precent_thr, unsigned int update_diff_thr, 124 unsigned int black_slope_lmt, unsigned int white_slope_lmt, 125 unsigned int auto_contrast_dirty); 126 int de_ce_tasklet(unsigned int screen_id, unsigned int chno, 127 unsigned int frame_cnt); 128 129 /* ASE function declaration */ 130 int de_ase_set_reg_base(unsigned int sel, unsigned int chno, void *base); 131 int de_ase_update_regs(unsigned int sel, unsigned int chno); 132 int de_ase_init(unsigned int sel, unsigned int chno, uintptr_t reg_base); 133 int de_ase_exit(unsigned int sel, unsigned int chno); 134 int de_ase_enable(unsigned int sel, unsigned int chno, unsigned int en); 135 int de_ase_set_size(unsigned int sel, unsigned int chno, unsigned int width, 136 unsigned int height); 137 int de_ase_set_window(unsigned int sel, unsigned int chno, 138 unsigned int win_enable, struct de_rect window); 139 int de_ase_set_para(unsigned int sel, unsigned int chno, unsigned int gain); 140 int de_ase_info2para(unsigned int auto_color, struct de_rect window, 141 struct __ase_config_data *para); 142 143 /* FCC function declaration */ 144 int de_fcc_set_reg_base(unsigned int sel, unsigned int chno, void *base); 145 int de_fcc_init(unsigned int sel, unsigned int chno, uintptr_t reg_base); 146 int de_fcc_exit(unsigned int sel, unsigned int chno); 147 int de_fcc_enable(unsigned int sel, unsigned int chno, unsigned int en); 148 int de_fcc_set_size(unsigned int sel, unsigned int chno, unsigned int width, 149 unsigned int height); 150 int de_fcc_set_window(unsigned int sel, unsigned int chno, unsigned int win_en, 151 struct de_rect window); 152 int de_fcc_set_para(unsigned int sel, unsigned int chno, unsigned int sgain[6]); 153 int de_fcc_csc_set(unsigned int sel, unsigned int chno, unsigned int en, 154 unsigned int mode); 155 int de_fcc_info2para(unsigned int sgain0, unsigned int sgain1, 156 unsigned int sgain2, unsigned int sgain3, 157 unsigned int sgain4, unsigned int sgain5, 158 struct de_rect window, struct __fcc_config_data *para); 159 int de_fcc_update_regs(unsigned int sel, unsigned int chno); 160 161 int de_enhance_apply(unsigned int screen_id, 162 struct disp_enhance_config *config); 163 int de_enhance_sync(unsigned int screen_id); 164 int de_enhance_tasklet(unsigned int screen_id); 165 int de_enhance_update_regs(unsigned int screen_id); 166 int de_enhance_init(struct disp_bsp_init_para *para); 167 int de_enhance_exit(void); 168 int de_enhance_info2data(struct disp_enhance_config *config, 169 struct vep_config_data *data, unsigned int bypass); 170 int de_enhance_set_mode(unsigned int format, 171 struct disp_enhance_config *config); 172 int de_enhance_set_format(unsigned int screen_id, unsigned int format); 173 174 int de_enhance_set_size(unsigned int screen_id, struct disp_rect *size); 175 int de_enhance_demo_enable(unsigned int screen_id, unsigned int enable); 176 177 int de_bws_set_reg_base(unsigned int sel, unsigned int chno, void *base); 178 int de_bws_update_regs(unsigned int sel, unsigned int chno); 179 int de_bws_init(unsigned int sel, unsigned int chno, uintptr_t reg_base); 180 int de_bws_enable(unsigned int sel, unsigned int chno, unsigned int en); 181 int de_bws_set_size(unsigned int sel, unsigned int chno, unsigned int width, 182 unsigned int height); 183 int de_bws_set_window(unsigned int sel, unsigned int chno, 184 unsigned int win_enable, struct de_rect window); 185 int de_bws_set_para(unsigned int sel, unsigned int chno, 186 unsigned int min, unsigned int black, unsigned int white, 187 unsigned int max, unsigned int slope0, unsigned int slope1, 188 unsigned int slope2, unsigned int slope3); 189 int de_bws_info2para(unsigned int auto_contrast, struct de_rect window, 190 struct __bws_config_data *para); 191 int de_bws_apply(unsigned int screen_id, unsigned int chno, unsigned int bws_en, 192 unsigned int auto_contrast_dirty); 193 int de_bws_tasklet(unsigned int screen_id, unsigned int chno, 194 unsigned int frame_cnt); 195 196 197 #endif 198