isp_comm_if.h
10.9 KB
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
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
/*******************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2010
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*******************************************************************************/
/*******************************************************************************
* Filename:
* ---------
* .h
*
* Project:
* --------
* MT6238
*
* Description:
* ------------
* This file is intends for ISP HW.
*
* Author:
* -------
*
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
#ifndef __ISP_COMM_IF_H__
#define __ISP_COMM_IF_H__
#include "kal_release.h"
#include "isp_nvram.h"
#include "sensor_comm_def.h"
#include "isp_comm_def.h"
typedef enum
{
PCA_LUT_LO = 0, /* low color temperature */
PCA_LUT_MD, /* medium color temperature */
PCA_LUT_HI, /* high color temperature */
PCA2_LUT_LO, /* low color temperature for PCA2 */ //__AUTO_SCENE_DETECT_SUPPORT__
PCA2_LUT_MD, /* medium color temperature for PCA2 */ //__AUTO_SCENE_DETECT_SUPPORT__
PCA2_LUT_HI, /* high color temperature for PCA2 */ //__AUTO_SCENE_DETECT_SUPPORT__
PCA_LUT_TYPE_NUM
} PCA_TABLE_TYPE;
/* OBJ AF Mode Selection */
typedef enum
{
OBJ_CONT_OFF, /* while FD on, cont.AF awlays off */
OBJ_CONT_FULL_ON, /* while FD on, cont.AF awlays on no matter if object is detected */
OBJ_CONT_FACE_ON, /* while FD on, cont.AF only on while object is detected */
OBJ_CONT_MODE_NUM
}AF_OBJ_MODE_ENUM;
typedef struct
{
kal_uint8 capture_delay_frame; /* wait stable frame when sensor change mode (pre to cap) */
kal_uint8 preview_delay_frame; /* wait stable frame when sensor change mode (cap to pre) */
kal_uint8 preview_display_wait_frame; /* Wait AE stable to display fist frame image */
kal_uint8 ae_cal_delay_frame; /* The frame of calculation */
kal_uint8 ae_shut_delay_frame; /* The frame of setting shutter */
kal_uint8 ae_sensor_gain_delay_frame; /* The frame of setting sensor gain */
kal_uint8 ae_isp_gain_delay_frame; /* The frame of setting gain */
kal_uint8 ae_cal_period; /* AE AWB calculation period */
kal_uint16 pregain_max; /* max pregain */
kal_uint16 isp_pregain_max; /* max isp gain */
kal_uint16 sensor_pregain_max; /* max sensor gain */
kal_uint16 pregain_min; /* min pregain 1x gain */
kal_uint16 isp_pregain_min; /* min isp gain 1x gain */
kal_uint16 sensor_pregain_min; /* min sensor gain 1x gain */
kal_uint8 yuv_af_timeout_frame; /* frame no of af result status checking for YUV sensor */
kal_uint8 flashlight_mode; /* FLASH_LIGHT_TYPE */
kal_uint8 flashlight_delta_main_lum; /* delta main lum@60cm / delta sub lum@60cm * 64 */
kal_uint8 led_flashlight_redeye_delay_frame; /*redeye delay frame of LED flashlight */
kal_uint8 preview_ae_stable_frame; /* wait stable frame when ae stable (pre) */
///for YUV LED flashlight
kal_uint8 flashlight_prestrobe_frame;
kal_uint8 flashlight_prestrobe_to_redeyestrobe_delay_frame;
kal_uint8 flashlight_redeyestrobe_frame;
kal_uint8 flashlight_mainstrobe_frame;
}CameraDriverOperationParaStruct, CAMERA_DRIVER_OPERATION_PARA_STRUCT, *P_CAMERA_DRIVER_OPERATION_PARA_STRUCT;
typedef struct
{
kal_bool enable_cap_shutter_compensate; /* KAL_TRUE, KAL_FALSE */
kal_uint16 shutter_compensate_pregain_max;/* For Capture Mode, comp max pregain */
kal_uint8 bracket_expo_ev_step; /* bracketing 0.1 Ev step */
kal_bool preview_defect_table_enable; /* KAL_TRUE or KAL_FALSE */
kal_bool capture_defect_table_enable; /* KAL_TRUE or KAL_FALSE */
kal_bool preview_shading_comp_enable; /* KAL_TRUE or KAL_FALSE */
kal_bool capture_shading_comp_enable; /* KAL_TRUE or KAL_FALSE */
kal_bool pca_table_enable; /* KAL_TRUE or KAL_FALSE */
kal_bool exif_iso_report_standard_enable;/* ISO priority EXIF with report real ISO gain enable flag */
kal_bool dynamic_lsc_support_enable; /* dynamic lens shading compensaiton en/disable flag, KAL_TRUE or KAL_FALSE */
kal_uint8 video_metering_mode;/* CAM_AE_METER_AUTO or CAM_AE_METER_AVERAGE */
kal_uint8 af_aled_ae_idx_thr;/* AE table index range, below the threshold, af auxiliary led will emit */
kal_uint8 af_obj_mode_selection; /* TURE/FALSE, enable obj cont tracking focus */
kal_uint8 af_obj_size_refocus_sens_level; /* 0~2, sensitivity LO=0, MD=1, HI=2 */
kal_uint8 af_obj_fv_refocus_sens_level; /* 0~2, sensitivity LO=0, MD=1, HI=2 */
kal_bool af_obj_fv_refocus_enable_flag; /* TURE/FALSE, enable obj fv refocus, set false, only size refocus exists */
kal_uint8 AfAledEvCompOffset; /* ev compensate -af_aled_ev_comp_offset when AF auxiliary LED on */
kal_bool AeFaceAeMeteringEnable;
kal_uint8 AeFaceMeanLowbound;
kal_uint8 AeFaceMeanHighbound;
kal_bool AeLsbCheckEnable;
kal_uint8 AeLsbTargetMean;
kal_uint8 AeLsbBrightThreshold;
kal_uint8 AeLsbDarkThreshold;
kal_uint8 AeCwmTargetMean; /* target mean for other meter modes */
kal_uint8 AeAvgTargetMean;
kal_uint8 AeSpotTargetMean;
}CameraTuningOperationParaStruct, CAMERA_TUNING_OPERATION_PARA_STRUCT, *P_CAMERA_TUNING_OPERATION_PARA_STRUCT;
typedef struct {
kal_uint32 reg_info0;
kal_uint32 reg_info1;
kal_uint32 *src_tbl_addr;
kal_uint32 *dst_tbl_addr;
} TBL_INFO_T;
extern CameraDriverOperationParaStruct CameraDriverOperParaBuffer;
extern CameraTuningOperationParaStruct CameraTuningOperParaBuffer;
void CameraInitOperationPara(void);
void CameraDriverInitOperationPara(P_CAMERA_DRIVER_OPERATION_PARA_STRUCT pOperData);
void CameraTuningInitOperationPara(IMAGE_SENSOR_INDEX_ENUM SensorIdx, P_CAMERA_TUNING_OPERATION_PARA_STRUCT pOperData);
nvram_camera_para_struct *IspGetNvramCameraPara(void);
const nvram_camera_para_struct *IspGetNvramDefaultCameraPara(void);
nvram_camera_3a_struct *IspGetNvramCamera3A(void);
nvram_camera_defect1_struct *IspGetNvramCameraDefect1(void);
nvram_camera_defect2_struct *IspGetNvramCameraDefect2(void);
nvram_camera_shading1_struct *IspGetNvramCameraShading1(void);
nvram_camera_shading2_struct *IspGetNvramCameraShading2(void);
const nvram_camera_3a_struct *IspGetNvramDefaultCamera3a(void);
const nvram_camera_defect1_struct *IspGetNvramDefaultCameraDefect1(void);
const nvram_camera_defect2_struct *IspGetNvramDefaultCameraDefect2(void);
const nvram_camera_shading1_struct *IspGetNvramDefaultCameraShading1(void);
const nvram_camera_shading2_struct *IspGetNvramDefaultCameraShading2(void);
nvram_camera_pca_struct *IspGetNvramCameraPca(void);
const nvram_camera_pca_struct *IspGetNvramDefaultCameraPca(void);
/* interface to isp apply/update/load pca */
void apply_camera_pca_to_reg(kal_uint32 *addr);
void apply_camera_pca(kal_uint8 pcaidx,kal_bool PcaTblUpdate);
void update_camera_pca_from_reg(ISP_OPERATION_STATE_ENUM IspState, kal_uint32 *Addr);
void pcaUpdateLUT(void);
extern void lscCalTbl(TBL_INFO_T tbl_info);
void rotate_fixed_shading_table(kal_uint32 *pshading_table_addr, kal_uint16 shading_table_size);
void rotate_slim_shading_table(kal_uint16 block_number_x, kal_uint16 block_number_y, kal_uint32 *data);
void resize_slim_shading_table(kal_uint16 data_src_width, kal_uint16 data_src_height,
kal_uint16 data_tar_width, kal_uint16 data_tar_height,
kal_uint32 *src_data, kal_uint32 *tar_data);
// isp_nvram.c
extern nvram_camera_para_struct MainCameraPara, *pCameraPara;
extern nvram_camera_3a_struct MainCamera3A, *pCamera3A;
extern nvram_camera_defect1_struct MainCameraDefect1, *pCameraDefect1;
extern nvram_camera_defect2_struct MainCameraDefect2, *pCameraDefect2;
extern nvram_camera_shading1_struct MainCameraShading1, *pCameraShading1;
extern nvram_camera_shading2_struct MainCameraShading2, *pCameraShading2;
extern nvram_camera_pca_struct MainCameraPca, *pCameraPca;
#if defined (DRV_ISP_PCA_SUPPORT) && defined (__AUTO_SCENE_DETECT_SUPPORT__)
extern nvram_camera_pca_struct MainCameraPca2;
#endif
extern nvram_camera_para_struct SubCameraPara;
extern nvram_camera_3a_struct SubCamera3A;
extern nvram_camera_defect1_struct SubCameraDefect1;
extern nvram_camera_defect2_struct SubCameraDefect2;
extern nvram_camera_shading1_struct SubCameraShading1;
extern nvram_camera_shading2_struct SubCameraShading2;
extern nvram_camera_pca_struct SubCameraPca;
#endif /* __ISP_COMM_IF_H__ */