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