HPM SDK
HPMicro Software Development Kit
hpm_mt9m114.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_MT9M114_H
9 #define HPM_MT9M114_H
10 #include "hpm_camera_config.h"
11 #include "hpm_common.h"
12 
21 /* MT9M114_ERROR_ACTION_BLOCK
22  * 0 : return fail
23  * 1 : print error message to console and block
24  */
25 #define MT9M114_ERROR_ACTION_BLOCK 0
26 #define MT9M114_HOST_CMD_TIMEOUT 100
27 
28 #ifndef MT9M114_ACTIVE_IMAGE_WIDTH
29 #define MT9M114_ACTIVE_IMAGE_WIDTH (640U)
30 #endif
31 
32 #ifndef MT9M114_ACTIVE_IMAGE_HEIGHT
33 #define MT9M114_ACTIVE_IMAGE_HEIGHT (480U)
34 #endif
35 
36 #define DUMMY_LINES 8
37 #define DUMMY_COLUMNS 8
38 
39 #define SENSOR_WIDTH 1296
40 #define SENSOR_HEIGHT 976
41 
42 #define DUMMY_WIDTH_BUFFER 8
43 #define DUMMY_HEIGHT_BUFFER 8
44 
45 #define ACTIVE_SENSOR_WIDTH (SENSOR_WIDTH - (2 * DUMMY_COLUMNS))
46 #define ACTIVE_SENSOR_HEIGHT (SENSOR_HEIGHT - (2 * DUMMY_LINES))
47 
48  */
49 /***********************************************************************************************************************
50  *
51  * Definitions
52  *
53  **********************************************************************************************************************/
54 
59 /*******************************************************************************
60  * Definitions
61  ******************************************************************************/
62 #if defined(MT9M114_DUAL_CAMERA)
63 #define MT9M114_I2C_ADDR 0x48
64 #define MT9M114_I2C_ADDR_IR 0x5D
65 #else
66 #define MT9M114_I2C_ADDR 0x48
67 #endif
68 #define MT9M114_CHIP_ID 0x2481
69 
70 #define MT9M114_REG_ADDR_LEN (2)
71 
74 /* 1.Core registers */
75 #define MT9M114_REG_Y_ADDR_START 0x3002
76 #define MT9M114_REG_X_ADDR_START 0x3004
77 #define MT9M114_REG_Y_ADDR_END 0x3006
78 #define MT9M114_REG_X_ADDR_END 0x3008
79 #define MT9M114_REG_FRAME_LENGTH_LINES 0x300A
80 #define MT9M114_REG_LINE_LENGTH_PCK_ 0x300C
81 #define MT9M114_REG_COARSE_INTEGRATION_TIME 0x3012
82 #define MT9M114_REG_FINE_INTEGRATION_TIME 0x3014
83 #define MT9M114_REG_RESET_REGISTER 0x301A
84 #define MT9M114_REG_FLASH 0x3046
85 #define MT9M114_REG_FLASH_COUNT 0x3048
86 #define MT9M114_REG_GREEN1_GAIN 0x3056
87 #define MT9M114_REG_BLUE_GAIN 0x3058
88 #define MT9M114_REG_RED_GAIN 0x305A
89 #define MT9M114_REG_GREEN2_GAIN 0x305C
90 #define MT9M114_REG_GLOBAL_GAIN 0x305E
91 #define MT9M114_REG_FUSE_ID1 0x31F4
92 #define MT9M114_REG_FUSE_ID2 0x31F6
93 #define MT9M114_REG_FUSE_ID3 0x31F8
94 #define MT9M114_REG_FUSE_ID4 0x31FA
95 #define MT9M114_REG_CHAIN_CONTROL 0x31FC
96 #define MT9M114_REG_CUSTOMER_REV 0x31FE
97 
98 /* 2.SOC1 registers */
99 #define MT9M114_REG_COLOR_PIPELINE_CONTROL 0x3210
100 
101 /* 3.SOC2 registers */
102 #define MT9M114_REG_P_G1_P0Q0 0x3640
103 #define MT9M114_REG_P_G1_P0Q1 0x3642
104 #define MT9M114_REG_P_G1_P0Q2 0x3644
105 #define MT9M114_REG_P_G1_P0Q3 0x3646
106 #define MT9M114_REG_P_G1_P0Q4 0x3648
107 #define MT9M114_REG_P_R_P0Q0 0x364A
108 #define MT9M114_REG_P_R_P0Q1 0x364C
109 #define MT9M114_REG_P_R_P0Q2 0x364E
110 #define MT9M114_REG_P_R_P0Q3 0x3650
111 #define MT9M114_REG_P_R_P0Q4 0x3652
112 #define MT9M114_REG_P_B_P0Q0 0x3654
113 #define MT9M114_REG_P_B_P0Q1 0x3656
114 #define MT9M114_REG_P_B_P0Q2 0x3658
115 #define MT9M114_REG_P_B_P0Q3 0x365A
116 #define MT9M114_REG_P_B_P0Q4 0x365C
117 #define MT9M114_REG_P_G2_P0Q0 0x365E
118 #define MT9M114_REG_P_G2_P0Q1 0x3660
119 #define MT9M114_REG_P_G2_P0Q2 0x3662
120 #define MT9M114_REG_P_G2_P0Q3 0x3664
121 #define MT9M114_REG_P_G2_P0Q4 0x3666
122 #define MT9M114_REG_P_G1_P1Q0 0x3680
123 #define MT9M114_REG_P_G1_P1Q1 0x3682
124 #define MT9M114_REG_P_G1_P1Q2 0x3684
125 #define MT9M114_REG_P_G1_P1Q3 0x3686
126 #define MT9M114_REG_P_G1_P1Q4 0x3688
127 #define MT9M114_REG_P_R_P1Q0 0x368A
128 #define MT9M114_REG_P_R_P1Q1 0x368C
129 #define MT9M114_REG_P_R_P1Q2 0x368E
130 #define MT9M114_REG_P_R_P1Q3 0x3690
131 #define MT9M114_REG_P_R_P1Q4 0x3692
132 #define MT9M114_REG_P_B_P1Q0 0x3694
133 #define MT9M114_REG_P_B_P1Q1 0x3696
134 #define MT9M114_REG_P_B_P1Q2 0x3698
135 #define MT9M114_REG_P_B_P1Q3 0x369A
136 #define MT9M114_REG_P_B_P1Q4 0x369C
137 #define MT9M114_REG_P_G2_P1Q0 0x369E
138 #define MT9M114_REG_P_G2_P1Q1 0x36A0
139 #define MT9M114_REG_P_G2_P1Q2 0x36A2
140 #define MT9M114_REG_P_G2_P1Q3 0x36A4
141 #define MT9M114_REG_P_G2_P1Q4 0x36A6
142 #define MT9M114_REG_P_G1_P2Q0 0x36C0
143 #define MT9M114_REG_P_G1_P2Q1 0x36C2
144 #define MT9M114_REG_P_G1_P2Q2 0x36C4
145 #define MT9M114_REG_P_G1_P2Q3 0x36C6
146 #define MT9M114_REG_P_G1_P2Q4 0x36C8
147 #define MT9M114_REG_P_R_P2Q0 0x36CA
148 #define MT9M114_REG_P_R_P2Q1 0x36CC
149 #define MT9M114_REG_P_R_P2Q2 0x36CE
150 #define MT9M114_REG_P_R_P2Q3 0x36D0
151 #define MT9M114_REG_P_R_P2Q4 0x36D2
152 #define MT9M114_REG_P_B_P2Q0 0x36D4
153 #define MT9M114_REG_P_B_P2Q1 0x36D6
154 #define MT9M114_REG_P_B_P2Q2 0x36D8
155 #define MT9M114_REG_P_B_P2Q3 0x36DA
156 #define MT9M114_REG_P_B_P2Q4 0x36DC
157 #define MT9M114_REG_P_G2_P2Q0 0x36DE
158 #define MT9M114_REG_P_G2_P2Q1 0x36E0
159 #define MT9M114_REG_P_G2_P2Q2 0x36E2
160 #define MT9M114_REG_P_G2_P2Q3 0x36E4
161 #define MT9M114_REG_P_G2_P2Q4 0x36E6
162 #define MT9M114_REG_P_G1_P3Q0 0x3700
163 #define MT9M114_REG_P_G1_P3Q1 0x3702
164 #define MT9M114_REG_P_G1_P3Q2 0x3704
165 #define MT9M114_REG_P_G1_P3Q3 0x3706
166 #define MT9M114_REG_P_G1_P3Q4 0x3708
167 #define MT9M114_REG_P_R_P3Q0 0x370A
168 #define MT9M114_REG_P_R_P3Q1 0x370C
169 #define MT9M114_REG_P_R_P3Q2 0x370E
170 #define MT9M114_REG_P_R_P3Q3 0x3710
171 #define MT9M114_REG_P_R_P3Q4 0x3712
172 #define MT9M114_REG_P_B_P3Q0 0x3714
173 #define MT9M114_REG_P_B_P3Q1 0x3716
174 #define MT9M114_REG_P_B_P3Q2 0x3718
175 #define MT9M114_REG_P_B_P3Q3 0x371A
176 #define MT9M114_REG_P_B_P3Q4 0x371C
177 #define MT9M114_REG_P_G2_P3Q0 0x371E
178 #define MT9M114_REG_P_G2_P3Q1 0x3720
179 #define MT9M114_REG_P_G2_P3Q2 0x3722
180 #define MT9M114_REG_P_G2_P3Q3 0x3724
181 #define MT9M114_REG_P_G2_P3Q4 0x3726
182 #define MT9M114_REG_P_G1_P4Q0 0x3740
183 #define MT9M114_REG_P_G1_P4Q1 0x3742
184 #define MT9M114_REG_P_G1_P4Q2 0x3744
185 #define MT9M114_REG_P_G1_P4Q3 0x3746
186 #define MT9M114_REG_P_G1_P4Q4 0x3748
187 #define MT9M114_REG_P_R_P4Q0 0x374A
188 #define MT9M114_REG_P_R_P4Q1 0x374C
189 #define MT9M114_REG_P_R_P4Q2 0x374E
190 #define MT9M114_REG_P_R_P4Q3 0x3750
191 #define MT9M114_REG_P_R_P4Q4 0x3752
192 #define MT9M114_REG_P_B_P4Q0 0x3754
193 #define MT9M114_REG_P_B_P4Q1 0x3756
194 #define MT9M114_REG_P_B_P4Q2 0x3758
195 #define MT9M114_REG_P_B_P4Q3 0x375A
196 #define MT9M114_REG_P_B_P4Q4 0x375C
197 #define MT9M114_REG_P_G2_P4Q0 0x375E
198 #define MT9M114_REG_P_G2_P4Q1 0x3760
199 #define MT9M114_REG_P_G2_P4Q2 0x3762
200 #define MT9M114_REG_P_G2_P4Q3 0x3764
201 #define MT9M114_REG_P_G2_P4Q4 0x3766
202 #define MT9M114_REG_CENTER_ROW 0x3782
203 #define MT9M114_REG_CENTER_COLUMN 0x3784
204 
205 /* 4.SYSCTL registers */
206 #define MT9M114_REG_CHIP_ID 0x0000
207 #define MT9M114_REG_CLOCKS_CONTROL 0x0016
208 #define MT9M114_REG_RESET_AND_MISC_CONTROL 0x001A
209 #define MT9M114_REG_PAD_SLEW 0x001E
210 #define MT9M114_REG_USER_DEFINED_DEVICE_ADDRESS_ID 0x002E
211 #define MT9M114_REG_PAD_CONTROL 0x0032
212 #define MT9M114_REG_COMMAND_REGISTER 0x0080
213 
214 /* 5.XDMA registers */
215 #define MT9M114_REG_ACCESS_CTL_STAT 0x0982
216 #define MT9M114_REG_PHYSICAL_ADDRESS_ACCESS 0x098A
217 #define MT9M114_REG_LOGICAL_ADDRESS_ACCESS 0x098E
218 #define MT9M114_REG_MCU_VARIABLE_DATA0 0x0990
219 #define MT9M114_REG_MCU_VARIABLE_DATA1 0x0992
220 #define MT9M114_REG_MCU_VARIABLE_DATA2 0x0994
221 #define MT9M114_REG_MCU_VARIABLE_DATA3 0x0996
222 #define MT9M114_REG_MCU_VARIABLE_DATA4 0x0998
223 #define MT9M114_REG_MCU_VARIABLE_DATA5 0x099A
224 #define MT9M114_REG_MCU_VARIABLE_DATA6 0x099C
225 #define MT9M114_REG_MCU_VARIABLE_DATA7 0x099E
226 
229 /* 01.Monitor variables */
230 #define MT9M114_VAR_MON_MAJOR_VERSION 0x8000
231 #define MT9M114_VAR_MON_MINOR_VERSION 0x8002
232 #define MT9M114_VAR_MON_RELEASE_VERSION 0x8004
233 #define MT9M114_VAR_MON_HEARTBEAT 0x8006
234 
235 /* 02.Sequencer variables */
236 #define MT9M114_VAR_SEQ_ERROR_CODE 0x8406
237 
238 /* 03.AE_Rule variables */
239 #define MT9M114_VAR_AE_RULE_ALGO 0xA404
240 #define MT9M114_VAR_AE_RULE_AVG_Y_FROM_STATS 0xA406
241 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_0 0xA407
242 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_1 0xA408
243 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_2 0xA409
244 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_3 0xA40A
245 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_4 0xA40B
246 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_0 0xA40C
247 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_1 0xA40D
248 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_2 0xA40E
249 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_3 0xA40F
250 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_4 0xA410
251 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_0 0xA411
252 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_1 0xA412
253 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_2 0xA413
254 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_3 0xA414
255 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_4 0xA415
256 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_0 0xA416
257 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_1 0xA417
258 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_2 0xA418
259 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_3 0xA419
260 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_4 0xA41A
261 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_0 0xA41B
262 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_1 0xA41C
263 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_2 0xA41D
264 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_3 0xA41E
265 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_4 0xA41F
266 #define MT9M114_VAR_AE_RULE_AE_ADAPTIVE_STRENGTH 0xA420
267 
268 /* 04.AE_Track variables */
269 #define MT9M114_VAR_AE_TRACK_STATUS 0xA800
270 #define MT9M114_VAR_AE_TRACK_ALGO 0xA804
271 #define MT9M114_VAR_AE_TRACK_TARGET_AVERAGE_LUMA 0xA807
272 #define MT9M114_VAR_AE_TRACK_GATE_PERCENTAGE 0xA808
273 #define MT9M114_VAR_AE_TRACK_CURRENT_AVERAGE_LUMA 0xA809
274 #define MT9M114_VAR_AE_TRACK_AE_TRACKING_DAMPENING_SPEED 0xA80A
275 #define MT9M114_VAR_AE_TRACK_AE_DAMPENING_SPEED 0xA80B
276 #define MT9M114_VAR_AE_TRACK_SKIP_FRAMES_COUNTER 0xA80D
277 #define MT9M114_VAR_AE_TRACK_CURRENT_FLICKER_LINES 0xA80E
278 #define MT9M114_VAR_AE_TRACK_FDZONE 0xA818
279 #define MT9M114_VAR_AE_TRACK_ZONE 0xA81B
280 #define MT9M114_VAR_AE_TRACK_FLICKER_LINES_50HZ 0xA826
281 #define MT9M114_VAR_AE_TRACK_VIRT_EXPOSURE_LOG 0xA828
282 #define MT9M114_VAR_AE_TRACK_MIN_VIRT_EXPOSURE_LOG_ZONE0 0xA82A
283 #define MT9M114_VAR_AE_TRACK_MAX_VIRT_EXPOSURE_LOG_ZONE0 0xA82C
284 #define MT9M114_VAR_AE_TRACK_MAX_VIRT_EXPOSURE_LOG_ZONE1 0xA82E
285 #define MT9M114_VAR_AE_TRACK_VIRT_GAIN 0xA838
286 
287 /* 05.AWB variables */
288 #define MT9M114_VAR_AWB_STATUS 0xAC00
289 #define MT9M114_VAR_AWB_MODE 0xAC02
290 #define MT9M114_VAR_AWB_R_RATIO_LOWER 0xAC06
291 #define MT9M114_VAR_AWB_R_RATIO_UPPER 0xAC07
292 #define MT9M114_VAR_AWB_B_RATIO_LOWER 0xAC08
293 #define MT9M114_VAR_AWB_B_RATIO_UPPER 0xAC09
294 #define MT9M114_VAR_AWB_R_SCENE_RATIO_LOWER 0xAC0A
295 #define MT9M114_VAR_AWB_R_SCENE_RATIO_UPPER 0xAC0B
296 #define MT9M114_VAR_AWB_B_SCENE_RATIO_LOWER 0xAC0C
297 #define MT9M114_VAR_AWB_B_SCENE_RATIO_UPPER 0xAC0D
298 #define MT9M114_VAR_AWB_R_RATIO_PRE_AWB 0xAC0E
299 #define MT9M114_VAR_AWB_B_RATIO_PRE_AWB 0xAC0F
300 #define MT9M114_VAR_AWB_R_GAIN 0xAC12
301 #define MT9M114_VAR_AWB_B_GAIN 0xAC14
302 #define MT9M114_VAR_AWB_PRE_AWB_RATIOS_TRACKING_SPEED 0xAC16
303 #define MT9M114_VAR_AWB_PIXEL_THRESHOLD_COUNT 0xAC18
304 
305 /* 06.BlackLevel variables */
306 #define MT9M114_VAR_BLACKLEVEL_ALGO 0xB004
307 #define MT9M114_VAR_BLACKLEVEL_MAX_BLACK_LEVEL 0xB00C
308 #define MT9M114_VAR_BLACKLEVEL_BLACK_LEVEL_DAMPENING 0xB00D
309 
310 /* 07.CCM variables */
311 #define MT9M114_VAR_CCM_ALGO 0xB404
312 #define MT9M114_VAR_CCM_0 0xB406
313 #define MT9M114_VAR_CCM_1 0xB408
314 #define MT9M114_VAR_CCM_2 0xB40A
315 #define MT9M114_VAR_CCM_3 0xB40C
316 #define MT9M114_VAR_CCM_4 0xB40E
317 #define MT9M114_VAR_CCM_5 0xB410
318 #define MT9M114_VAR_CCM_6 0xB412
319 #define MT9M114_VAR_CCM_7 0xB414
320 #define MT9M114_VAR_CCM_8 0xB416
321 #define MT9M114_VAR_CCM_LL_DELTA_CCM_0 0xB418
322 #define MT9M114_VAR_CCM_LL_DELTA_CCM_1 0xB41A
323 #define MT9M114_VAR_CCM_LL_DELTA_CCM_2 0xB41C
324 #define MT9M114_VAR_CCM_LL_DELTA_CCM_3 0xB41E
325 #define MT9M114_VAR_CCM_LL_DELTA_CCM_4 0xB420
326 #define MT9M114_VAR_CCM_LL_DELTA_CCM_5 0xB422
327 #define MT9M114_VAR_CCM_LL_DELTA_CCM_6 0xB424
328 #define MT9M114_VAR_CCM_LL_DELTA_CCM_7 0xB426
329 #define MT9M114_VAR_CCM_LL_DELTA_CCM_8 0xB428
330 #define MT9M114_VAR_CCM_DELTA_GAIN 0xB42A
331 #define MT9M114_VAR_CCM_DELTA_THRESH 0xB42B
332 
333 /* 08.LowLight variables */
334 #define MT9M114_VAR_LL_MODE 0xBC02
335 #define MT9M114_VAR_LL_ALGO 0xBC04
336 #define MT9M114_VAR_LL_GAMMA_SELECT 0xBC07
337 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_0 0xBC0A
338 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_1 0xBC0B
339 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_2 0xBC0C
340 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_3 0xBC0D
341 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_4 0xBC0E
342 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_5 0xBC0F
343 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_6 0xBC10
344 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_7 0xBC11
345 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_8 0xBC12
346 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_9 0xBC13
347 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_10 0xBC14
348 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_11 0xBC15
349 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_12 0xBC16
350 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_13 0xBC17
351 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_14 0xBC18
352 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_15 0xBC19
353 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_16 0xBC1A
354 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_17 0xBC1B
355 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_18 0xBC1C
356 #define MT9M114_VAR_LL_GAMMA_NRCURVE_0 0xBC1D
357 #define MT9M114_VAR_LL_GAMMA_NRCURVE_1 0xBC1E
358 #define MT9M114_VAR_LL_GAMMA_NRCURVE_2 0xBC1F
359 #define MT9M114_VAR_LL_GAMMA_NRCURVE_3 0xBC20
360 #define MT9M114_VAR_LL_GAMMA_NRCURVE_4 0xBC21
361 #define MT9M114_VAR_LL_GAMMA_NRCURVE_5 0xBC22
362 #define MT9M114_VAR_LL_GAMMA_NRCURVE_6 0xBC23
363 #define MT9M114_VAR_LL_GAMMA_NRCURVE_7 0xBC24
364 #define MT9M114_VAR_LL_GAMMA_NRCURVE_8 0xBC25
365 #define MT9M114_VAR_LL_GAMMA_NRCURVE_9 0xBC26
366 #define MT9M114_VAR_LL_GAMMA_NRCURVE_10 0xBC27
367 #define MT9M114_VAR_LL_GAMMA_NRCURVE_11 0xBC28
368 #define MT9M114_VAR_LL_GAMMA_NRCURVE_12 0xBC29
369 #define MT9M114_VAR_LL_GAMMA_NRCURVE_13 0xBC2A
370 #define MT9M114_VAR_LL_GAMMA_NRCURVE_14 0xBC2B
371 #define MT9M114_VAR_LL_GAMMA_NRCURVE_15 0xBC2C
372 #define MT9M114_VAR_LL_GAMMA_NRCURVE_16 0xBC2D
373 #define MT9M114_VAR_LL_GAMMA_NRCURVE_17 0xBC2E
374 #define MT9M114_VAR_LL_GAMMA_NRCURVE_18 0xBC2F
375 #define MT9M114_VAR_LL_BM_PRECISION_BITS 0xBC31
376 #define MT9M114_VAR_LL_AVERAGE_LUMA_FADE_TO_BLACK 0xBC3A
377 #define MT9M114_VAR_LL_FADE_TO_BLACK_DAMPENING_SPEED 0xBC3C
378 
379 /* 09.CameraControl variables */
380 #define MT9M114_VAR_CAM_SENSOR_CFG_Y_ADDR_START 0xC800
381 #define MT9M114_VAR_CAM_SENSOR_CFG_X_ADDR_START 0xC802
382 #define MT9M114_VAR_CAM_SENSOR_CFG_Y_ADDR_END 0xC804
383 #define MT9M114_VAR_CAM_SENSOR_CFG_X_ADDR_END 0xC806
384 #define MT9M114_VAR_CAM_SENSOR_CFG_PIXCLK 0xC808
385 #define MT9M114_VAR_CAM_SENSOR_CFG_ROW_SPEED 0xC80C
386 #define MT9M114_VAR_CAM_SENSOR_CFG_FINE_INTEG_TIME_MIN 0xC80E
387 #define MT9M114_VAR_CAM_SENSOR_CFG_FINE_INTEG_TIME_MAX 0xC810
388 #define MT9M114_VAR_CAM_SENSOR_CFG_FRAME_LENGTH_LINES 0xC812
389 #define MT9M114_VAR_CAM_SENSOR_CFG_LINE_LENGTH_PCK 0xC814
390 #define MT9M114_VAR_CAM_SENSOR_CFG_FINE_CORRECTION 0xC816
391 #define MT9M114_VAR_CAM_SENSOR_CFG_CPIPE_LAST_ROW 0xC818
392 #define MT9M114_VAR_CAM_SENSOR_CFG_REG_0_DATA 0xC826
393 #define MT9M114_VAR_CAM_SENSOR_CONTROL_READ_MODE 0xC834
394 #define MT9M114_VAR_CAM_SENSOR_CONTROL_ANALOG_GAIN 0xC836
395 #define MT9M114_VAR_CAM_SENSOR_CONTROL_VIRT_COLUMN_GAIN 0xC838
396 #define MT9M114_VAR_CAM_SENSOR_CONTROL_FRAME_LENGTH_LINES 0xC83A
397 #define MT9M114_VAR_CAM_SENSOR_CONTROL_COARSE_INTEGRATION_TIME 0xC83C
398 #define MT9M114_VAR_CAM_SENSOR_CONTROL_FINE_INTEGRATION_TIME 0xC83E
399 #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_RED 0xC840
400 #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_GREEN1 0xC842
401 #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_GREEN2 0xC844
402 #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_BLUE 0xC846
403 #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_SECOND 0xC848
404 #define MT9M114_VAR_CAM_CPIPE_CONTROL_SECOND_BLACK_LEVEL 0xC84B
405 #define MT9M114_VAR_CAM_MODE_SELECT 0xC84C
406 #define MT9M114_VAR_CAM_MODE_TEST_PATTERN_SELECT 0xC84D
407 #define MT9M114_VAR_CAM_MODE_TEST_PATTERN_RED 0xC84E
408 #define MT9M114_VAR_CAM_MODE_TEST_PATTERN_GREEN 0xC850
409 #define MT9M114_VAR_CAM_MODE_TEST_PATTERN_BLUE 0xC852
410 #define MT9M114_VAR_CAM_CROP_WINDOW_XOFFSET 0xC854
411 #define MT9M114_VAR_CAM_CROP_WINDOW_YOFFSET 0xC856
412 #define MT9M114_VAR_CAM_CROP_WINDOW_WIDTH 0xC858
413 #define MT9M114_VAR_CAM_CROP_WINDOW_HEIGHT 0xC85A
414 #define MT9M114_VAR_CAM_CROP_CROPMODE 0xC85C
415 #define MT9M114_VAR_CAM_SCALE_VERTICAL_TC_MODE 0xC85E
416 #define MT9M114_VAR_CAM_SCALE_VERTICAL_TC_PERCENTAGE 0xC860
417 #define MT9M114_VAR_CAM_SCALE_VERTICAL_TC_STRETCH_FACTOR 0xC862
418 #define MT9M114_VAR_CAM_OUTPUT_WIDTH 0xC868
419 #define MT9M114_VAR_CAM_OUTPUT_HEIGHT 0xC86A
420 #define MT9M114_VAR_CAM_OUTPUT_FORMAT 0xC86C
421 #define MT9M114_VAR_CAM_OUTPUT_FORMAT_YUV 0xC86E
422 #define MT9M114_VAR_CAM_OUTPUT_Y_OFFSET 0xC870
423 #define MT9M114_VAR_CAM_HUE_ANGLE 0xC873
424 #define MT9M114_VAR_CAM_SFX_CONTROL 0xC874
425 #define MT9M114_VAR_CAM_SFX_SOLARIZATION_THRESH 0xC875
426 #define MT9M114_VAR_CAM_SFX_SEPIA_CR 0xC876
427 #define MT9M114_VAR_CAM_SFX_SEPIA_CB 0xC877
428 #define MT9M114_VAR_CAM_AET_AEMODE 0xC878
429 #define MT9M114_VAR_CAM_AET_SKIP_FRAMES 0xC879
430 #define MT9M114_VAR_CAM_AET_TARGET_AVERAGE_LUMA 0xC87A
431 #define MT9M114_VAR_CAM_AET_TARGET_AVERAGE_LUMA_DARK 0xC87B
432 #define MT9M114_VAR_CAM_AET_BLACK_CLIPPING_TARGET 0xC87C
433 #define MT9M114_VAR_CAM_AET_AE_MIN_VIRT_INT_TIME_PCLK 0xC87E
434 #define MT9M114_VAR_CAM_AET_AE_MIN_VIRT_DGAIN 0xC880
435 #define MT9M114_VAR_CAM_AET_AE_MAX_VIRT_DGAIN 0xC882
436 #define MT9M114_VAR_CAM_AET_AE_MIN_VIRT_AGAIN 0xC884
437 #define MT9M114_VAR_CAM_AET_AE_MAX_VIRT_AGAIN 0xC886
438 #define MT9M114_VAR_CAM_AET_AE_VIRT_GAIN_TH_EG 0xC888
439 #define MT9M114_VAR_CAM_AET_AE_EG_GATE_PERCENTAGE 0xC88A
440 #define MT9M114_VAR_CAM_AET_FLICKER_FREQ_HZ 0xC88B
441 #define MT9M114_VAR_CAM_AET_MAX_FRAME_RATE 0xC88C
442 #define MT9M114_VAR_CAM_AET_MIN_FRAME_RATE 0xC88E
443 #define MT9M114_VAR_CAM_AET_TARGET_GAIN 0xC890
444 #define MT9M114_VAR_CAM_AWB_CCM_L_0 0xC892
445 #define MT9M114_VAR_CAM_AWB_CCM_L_1 0xC894
446 #define MT9M114_VAR_CAM_AWB_CCM_L_2 0xC896
447 #define MT9M114_VAR_CAM_AWB_CCM_L_3 0xC898
448 #define MT9M114_VAR_CAM_AWB_CCM_L_4 0xC89A
449 #define MT9M114_VAR_CAM_AWB_CCM_L_5 0xC89C
450 #define MT9M114_VAR_CAM_AWB_CCM_L_6 0xC89E
451 #define MT9M114_VAR_CAM_AWB_CCM_L_7 0xC8A0
452 #define MT9M114_VAR_CAM_AWB_CCM_L_8 0xC8A2
453 #define MT9M114_VAR_CAM_AWB_CCM_M_0 0xC8A4
454 #define MT9M114_VAR_CAM_AWB_CCM_M_1 0xC8A6
455 #define MT9M114_VAR_CAM_AWB_CCM_M_2 0xC8A8
456 #define MT9M114_VAR_CAM_AWB_CCM_M_3 0xC8AA
457 #define MT9M114_VAR_CAM_AWB_CCM_M_4 0xC8AC
458 #define MT9M114_VAR_CAM_AWB_CCM_M_5 0xC8AE
459 #define MT9M114_VAR_CAM_AWB_CCM_M_6 0xC8B0
460 #define MT9M114_VAR_CAM_AWB_CCM_M_7 0xC8B2
461 #define MT9M114_VAR_CAM_AWB_CCM_M_8 0xC8B4
462 #define MT9M114_VAR_CAM_AWB_CCM_R_0 0xC8B6
463 #define MT9M114_VAR_CAM_AWB_CCM_R_1 0xC8B8
464 #define MT9M114_VAR_CAM_AWB_CCM_R_2 0xC8BA
465 #define MT9M114_VAR_CAM_AWB_CCM_R_3 0xC8BC
466 #define MT9M114_VAR_CAM_AWB_CCM_R_4 0xC8BE
467 #define MT9M114_VAR_CAM_AWB_CCM_R_5 0xC8C0
468 #define MT9M114_VAR_CAM_AWB_CCM_R_6 0xC8C2
469 #define MT9M114_VAR_CAM_AWB_CCM_R_7 0xC8C4
470 #define MT9M114_VAR_CAM_AWB_CCM_R_8 0xC8C6
471 #define MT9M114_VAR_CAM_AWB_CCM_L_RG_GAIN 0xC8C8
472 #define MT9M114_VAR_CAM_AWB_CCM_L_BG_GAIN 0xC8CA
473 #define MT9M114_VAR_CAM_AWB_CCM_M_RG_GAIN 0xC8CC
474 #define MT9M114_VAR_CAM_AWB_CCM_M_BG_GAIN 0xC8CE
475 #define MT9M114_VAR_CAM_AWB_CCM_R_RG_GAIN 0xC8D0
476 #define MT9M114_VAR_CAM_AWB_CCM_R_BG_GAIN 0xC8D2
477 #define MT9M114_VAR_CAM_AWB_CCM_L_CTEMP 0xC8D4
478 #define MT9M114_VAR_CAM_AWB_CCM_M_CTEMP 0xC8D6
479 #define MT9M114_VAR_CAM_AWB_CCM_R_CTEMP 0xC8D8
480 #define MT9M114_VAR_CAM_AWB_LL_CCM_0 0xC8DA
481 #define MT9M114_VAR_CAM_AWB_LL_CCM_1 0xC8DC
482 #define MT9M114_VAR_CAM_AWB_LL_CCM_2 0xC8DE
483 #define MT9M114_VAR_CAM_AWB_LL_CCM_3 0xC8E0
484 #define MT9M114_VAR_CAM_AWB_LL_CCM_4 0xC8E2
485 #define MT9M114_VAR_CAM_AWB_LL_CCM_5 0xC8E4
486 #define MT9M114_VAR_CAM_AWB_LL_CCM_6 0xC8E6
487 #define MT9M114_VAR_CAM_AWB_LL_CCM_7 0xC8E8
488 #define MT9M114_VAR_CAM_AWB_LL_CCM_8 0xC8EA
489 #define MT9M114_VAR_CAM_AWB_COLOR_TEMPERATURE_MIN 0xC8EC
490 #define MT9M114_VAR_CAM_AWB_COLOR_TEMPERATURE_MAX 0xC8EE
491 #define MT9M114_VAR_CAM_AWB_COLOR_TEMPERATURE 0xC8F0
492 #define MT9M114_VAR_CAM_AWB_AWB_XSCALE 0xC8F2
493 #define MT9M114_VAR_CAM_AWB_AWB_YSCALE 0xC8F3
494 #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_0 0xC8F4
495 #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_1 0xC8F6
496 #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_2 0xC8F8
497 #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_3 0xC8FA
498 #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_4 0xC8FC
499 #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_5 0xC8FE
500 #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_6 0xC900
501 #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_7 0xC902
502 #define MT9M114_VAR_CAM_AWB_AWB_XSHIFT_PRE_ADJ 0xC904
503 #define MT9M114_VAR_CAM_AWB_AWB_YSHIFT_PRE_ADJ 0xC906
504 #define MT9M114_VAR_CAM_AWB_AWBMODE 0xC909
505 #define MT9M114_VAR_CAM_AWB_TINTS_CTEMP_THRESHOLD 0xC90A
506 #define MT9M114_VAR_CAM_AWB_K_R_L 0xC90C
507 #define MT9M114_VAR_CAM_AWB_K_G_L 0xC90D
508 #define MT9M114_VAR_CAM_AWB_K_B_L 0xC90E
509 #define MT9M114_VAR_CAM_AWB_K_R_R 0xC90F
510 #define MT9M114_VAR_CAM_AWB_K_G_R 0xC910
511 #define MT9M114_VAR_CAM_AWB_K_B_R 0xC911
512 #define MT9M114_VAR_CAM_STAT_AWB_CLIP_WINDOW_XSTART 0xC914
513 #define MT9M114_VAR_CAM_STAT_AWB_CLIP_WINDOW_YSTART 0xC916
514 #define MT9M114_VAR_CAM_STAT_AWB_CLIP_WINDOW_XEND 0xC918
515 #define MT9M114_VAR_CAM_STAT_AWB_CLIP_WINDOW_YEND 0xC91A
516 #define MT9M114_VAR_CAM_STAT_AE_INITIAL_WINDOW_XSTART 0xC91C
517 #define MT9M114_VAR_CAM_STAT_AE_INITIAL_WINDOW_YSTART 0xC91E
518 #define MT9M114_VAR_CAM_STAT_AE_INITIAL_WINDOW_XEND 0xC920
519 #define MT9M114_VAR_CAM_STAT_AE_INITIAL_WINDOW_YEND 0xC922
520 #define MT9M114_VAR_CAM_LL_LLMODE 0xC924
521 #define MT9M114_VAR_CAM_LL_START_BRIGHTNESS 0xC926
522 #define MT9M114_VAR_CAM_LL_STOP_BRIGHTNESS 0xC928
523 #define MT9M114_VAR_CAM_LL_START_SATURATION 0xC92A
524 #define MT9M114_VAR_CAM_LL_END_SATURATION 0xC92B
525 #define MT9M114_VAR_CAM_LL_START_DESATURATION 0xC92C
526 #define MT9M114_VAR_CAM_LL_END_DESATURATION 0xC92D
527 #define MT9M114_VAR_CAM_LL_START_DEMOSAIC 0xC92E
528 #define MT9M114_VAR_CAM_LL_START_AP_GAIN 0xC92F
529 #define MT9M114_VAR_CAM_LL_START_AP_THRESH 0xC930
530 #define MT9M114_VAR_CAM_LL_STOP_DEMOSAIC 0xC931
531 #define MT9M114_VAR_CAM_LL_STOP_AP_GAIN 0xC932
532 #define MT9M114_VAR_CAM_LL_STOP_AP_THRESH 0xC933
533 #define MT9M114_VAR_CAM_LL_START_NR_RED 0xC934
534 #define MT9M114_VAR_CAM_LL_START_NR_GREEN 0xC935
535 #define MT9M114_VAR_CAM_LL_START_NR_BLUE 0xC936
536 #define MT9M114_VAR_CAM_LL_START_NR_THRESH 0xC937
537 #define MT9M114_VAR_CAM_LL_STOP_NR_RED 0xC938
538 #define MT9M114_VAR_CAM_LL_STOP_NR_GREEN 0xC939
539 #define MT9M114_VAR_CAM_LL_STOP_NR_BLUE 0xC93A
540 #define MT9M114_VAR_CAM_LL_STOP_NR_THRESH 0xC93B
541 #define MT9M114_VAR_CAM_LL_START_CONTRAST_BM 0xC93C
542 #define MT9M114_VAR_CAM_LL_STOP_CONTRAST_BM 0xC93E
543 #define MT9M114_VAR_CAM_LL_GAMMA 0xC940
544 #define MT9M114_VAR_CAM_LL_START_CONTRAST_GRADIENT 0xC942
545 #define MT9M114_VAR_CAM_LL_STOP_CONTRAST_GRADIENT 0xC943
546 #define MT9M114_VAR_CAM_LL_START_CONTRAST_LUMA_PERCENTAGE 0xC944
547 #define MT9M114_VAR_CAM_LL_STOP_CONTRAST_LUMA_PERCENTAGE 0xC945
548 #define MT9M114_VAR_CAM_LL_START_GAIN_METRIC 0xC946
549 #define MT9M114_VAR_CAM_LL_STOP_GAIN_METRIC 0xC948
550 #define MT9M114_VAR_CAM_LL_START_FADE_TO_BLACK_LUMA 0xC94A
551 #define MT9M114_VAR_CAM_LL_STOP_FADE_TO_BLACK_LUMA 0xC94C
552 #define MT9M114_VAR_CAM_LL_CLUSTER_DC_TH_BM 0xC94E
553 #define MT9M114_VAR_CAM_LL_CLUSTER_DC_GATE_PERCENTAGE 0xC950
554 #define MT9M114_VAR_CAM_LL_SUMMING_SENSITIVITY_FACTOR 0xC951
555 #define MT9M114_VAR_CAM_LL_START_TARGET_LUMA_BM 0xC952
556 #define MT9M114_VAR_CAM_LL_STOP_TARGET_LUMA_BM 0xC954
557 #define MT9M114_VAR_CAM_LL_INV_BRIGHTNESS_METRIC 0xC956
558 #define MT9M114_VAR_CAM_LL_GAIN_METRIC 0xC958
559 #define MT9M114_VAR_CAM_SEQ_UV_COLOR_BOOST 0xC95A
560 #define MT9M114_VAR_CAM_PGA_PGA_CONTROL 0xC95E
561 #define MT9M114_VAR_CAM_PGA_L_CONFIG_COLOUR_TEMP 0xC960
562 #define MT9M114_VAR_CAM_PGA_L_CONFIG_GREEN_RED_Q14 0xC962
563 #define MT9M114_VAR_CAM_PGA_L_CONFIG_RED_Q14 0xC964
564 #define MT9M114_VAR_CAM_PGA_L_CONFIG_GREEN_BLUE_Q14 0xC966
565 #define MT9M114_VAR_CAM_PGA_L_CONFIG_BLUE_Q14 0xC968
566 #define MT9M114_VAR_CAM_PGA_M_CONFIG_COLOUR_TEMP 0xC96A
567 #define MT9M114_VAR_CAM_PGA_M_CONFIG_GREEN_RED_Q14 0xC96C
568 #define MT9M114_VAR_CAM_PGA_M_CONFIG_RED_Q14 0xC96E
569 #define MT9M114_VAR_CAM_PGA_M_CONFIG_GREEN_BLUE_Q14 0xC970
570 #define MT9M114_VAR_CAM_PGA_M_CONFIG_BLUE_Q14 0xC972
571 #define MT9M114_VAR_CAM_PGA_R_CONFIG_COLOUR_TEMP 0xC974
572 #define MT9M114_VAR_CAM_PGA_R_CONFIG_GREEN_RED_Q14 0xC976
573 #define MT9M114_VAR_CAM_PGA_R_CONFIG_RED_Q14 0xC978
574 #define MT9M114_VAR_CAM_PGA_R_CONFIG_GREEN_BLUE_Q14 0xC97A
575 #define MT9M114_VAR_CAM_PGA_R_CONFIG_BLUE_Q14 0xC97C
576 #define MT9M114_VAR_CAM_SYSCTL_PLL_ENABLE 0xC97E
577 #define MT9M114_VAR_CAM_SYSCTL_PLL_DIVIDER_M_N 0xC980
578 #define MT9M114_VAR_CAM_SYSCTL_PLL_DIVIDER_P 0xC982
579 #define MT9M114_VAR_CAM_PORT_OUTPUT_CONTROL 0xC984
580 #define MT9M114_VAR_CAM_PORT_PORCH 0xC986
581 #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_HS_ZERO 0xC988
582 #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_HS_EXIT_HS_TRAIL 0xC98A
583 #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_CLK_POST_CLK_PRE 0xC98C
584 #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_CLK_TRAIL_CLK_ZERO 0xC98E
585 #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_LPX 0xC990
586 #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_INIT_TIMING 0xC992
587 
588 /* 10.UVC_Control variables */
589 #define MT9M114_VAR_UVC_AE_MODE_CONTROL 0xCC00
590 #define MT9M114_VAR_UVC_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0xCC01
591 #define MT9M114_VAR_UVC_AE_PRIORITY_CONTROL 0xCC02
592 #define MT9M114_VAR_UVC_POWER_LINE_FREQUENCY_CONTROL 0xCC03
593 #define MT9M114_VAR_UVC_EXPOSURE_TIME_ABSOLUTE_CONTROL 0xCC04
594 #define MT9M114_VAR_UVC_BACKLIGHT_COMPENSATION_CONTROL 0xCC08
595 #define MT9M114_VAR_UVC_BRIGHTNESS_CONTROL 0xCC0A
596 #define MT9M114_VAR_UVC_CONTRAST_CONTROL 0xCC0C
597 #define MT9M114_VAR_UVC_GAIN_CONTROL 0xCC0E
598 #define MT9M114_VAR_UVC_HUE_CONTROL 0xCC10
599 #define MT9M114_VAR_UVC_SATURATION_CONTROL 0xCC12
600 #define MT9M114_VAR_UVC_SHARPNESS_CONTROL 0xCC14
601 #define MT9M114_VAR_UVC_GAMMA_CONTROL 0xCC16
602 #define MT9M114_VAR_UVC_WHITE_BALANCE_TEMPERATURE_CONTROL 0xCC18
603 #define MT9M114_VAR_UVC_FRAME_INTERVAL_CONTROL 0xCC1C
604 #define MT9M114_VAR_UVC_MANUAL_EXPOSURE_CONFIGURATION 0xCC20
605 #define MT9M114_VAR_UVC_FLICKER_AVOIDANCE_CONFIGURATION 0xCC21
606 #define MT9M114_VAR_UVC_ALGO 0xCC22
607 #define MT9M114_VAR_UVC_RESULT_STATUS 0xCC24
608 
609 /* 11.SystemManager variables */
610 #define MT9M114_VAR_SYSMGR_NEXT_STATE 0xDC00
611 #define MT9M114_VAR_SYSMGR_CURRENT_STATE 0xDC01
612 #define MT9M114_VAR_SYSMGR_CMD_STATUS 0xDC02
613 
614 /* 12.PatchLoader variables */
615 #define MT9M114_VAR_PATCHLDR_LOADER_ADDRESS 0xE000
616 #define MT9M114_VAR_PATCHLDR_PATCH_ID 0xE002
617 #define MT9M114_VAR_PATCHLDR_FIRMWARE_ID 0xE004
618 #define MT9M114_VAR_PATCHLDR_APPLY_STATUS 0xE008
619 #define MT9M114_VAR_PATCHLDR_NUM_PATCHES 0xE009
620 #define MT9M114_VAR_PATCHLDR_PATCH_ID_0 0xE00A
621 #define MT9M114_VAR_PATCHLDR_PATCH_ID_1 0xE00C
622 #define MT9M114_VAR_PATCHLDR_PATCH_ID_2 0xE00E
623 #define MT9M114_VAR_PATCHLDR_PATCH_ID_3 0xE010
624 #define MT9M114_VAR_PATCHLDR_PATCH_ID_4 0xE012
625 #define MT9M114_VAR_PATCHLDR_PATCH_ID_5 0xE014
626 #define MT9M114_VAR_PATCHLDR_PATCH_ID_6 0xE016
627 #define MT9M114_VAR_PATCHLDR_PATCH_ID_7 0xE018
628 
629 /* 13.Patch variables */
630 #define MT9M114_VAR_PATCHVARS_DELTA_DK_CORRECTION_FACTOR 0xE400
631 #define MT9M114_VAR_CAM_AUTO_BINNING_MODE (0xE801)
632 
633 /* 14.CommandHandler variables */
634 #define MT9M114_VAR_CMD_HANDLER_WAIT_EVENT_ID 0xFC00
635 #define MT9M114_VAR_CMD_HANDLER_NUM_EVENTS 0xFC02
636 
638 #define MT9M114_COMMAND_APPLY_PATCH 0x0001
639 #define MT9M114_COMMAND_SET_STATE 0x0002
640 #define MT9M114_COMMAND_REFRESH 0x0004
641 #define MT9M114_COMMAND_WAIT_FOR_EVENT 0x0008
642 #define MT9M114_COMMAND_OK 0x8000
643 
645 #define MT9M114_SYS_STATE_ENTER_CONFIG_CHANGE 0x28
646 #define MT9M114_SYS_STATE_STREAMING 0x31
647 #define MT9M114_SYS_STATE_START_STREAMING 0x34
648 #define MT9M114_SYS_STATE_ENTER_SUSPEND 0x40
649 #define MT9M114_SYS_STATE_SUSPENDED 0x41
650 #define MT9M114_SYS_STATE_ENTER_STANDBY 0x50
651 #define MT9M114_SYS_STATE_STANDBY 0x52
652 #define MT9M114_SYS_STATE_LEAVE_STANDBY 0x54
653 
655 #define MT9M114_SYS_STATE_SET_RESULT_ENOERR 0x00 /* command successful */
656 #define MT9M114_SYS_STATE_SET_RESULTEINVAL 0x0C /* invalid configuration */
657 #define MT9M114_SYS_STATE_SET_RESULTENOSPC 0x0D /* resource not available */
658 
659 #define MT9M114_OUTPUT_FORMAT_SWAP_RB (1 << 0)
660 #define MT9M114_OUTPUT_FORMAT_SWAP_BYTES (1 << 1)
661 #define MT9M114_OUTPUT_FORMAT_MONO (1 << 2)
662 #define MT9M114_OUTPUT_FORMAT_BT656 (1 << 3)
663 #define MT9M114_OUTPUT_FORMAT_BT656_FIXED (1 << 4)
664 #define MT9M114_OUTPUT_FORMAT_YUV (0 << 8)
665 #define MT9M114_OUTPUT_FORMAT_RGB (1 << 8)
666 #define MT9M114_OUTPUT_FORMAT_BAYER (2 << 8)
667 #define MT9M114_OUTPUT_FORMAT_RAW_BAYER_10 (0 << 10)
668 #define MT9M114_OUTPUT_FORMAT_RAW_BAYER_10_PRE (1 << 10)
669 #define MT9M114_OUTPUT_FORMAT_RAW_BAYER_10_POST (2 << 10)
670 #define MT9M114_OUTPUT_FORMAT_PROCESSED_BAYER (3 << 10)
671 #define MT9M114_OUTPUT_FORMAT_RGB565 (0 << 12)
672 #define MT9M114_OUTPUT_FORMAT_RGB555 (1 << 12)
673 #define MT9M114_OUTPUT_FORMAT_XRGB444 (2 << 12)
674 #define MT9M114_OUTPUT_FORMAT_RGB444X (3 << 12)
675 
676 #define MT9M114_SENSOR_CONTROL_READ_MODE_HMIRROR (0x1)
677 #define MT9M114_SENSOR_CONTROL_READ_MODE_VFLIP (0x2)
678 #define MT9M114_SENSOR_CONTROL_READ_MODE_HBIN_MASK (0x30)
679 #define MT9M114_SENSOR_CONTROL_READ_MODE_HBIN (0x30)
680 #define MT9M114_SENSOR_CONTROL_READ_MODE_VBIN_MASK (0x300)
681 #define MT9M114_SENSOR_CONTROL_READ_MODE_VBIN (0x300)
682 
683 #ifdef __cplusplus
684 extern "C" {
685 #endif
686 typedef struct {
687  uint16_t reg; /* 16bit reg address */
688  uint8_t size; /* reg size in byte */
689  uint32_t value; /* reg value */
690 } mt9m114_reg_t;
691 
703 hpm_stat_t mt9m114_read_register(camera_context_t *context, uint32_t reg, uint32_t reg_size, void *value);
704 
716 hpm_stat_t mt9m114_write_register(camera_context_t *context, uint32_t reg, uint32_t reg_size, uint32_t value);
717 
730 hpm_stat_t mt9m114_modify_register(camera_context_t *context, uint32_t reg, uint32_t reg_size, uint32_t mask, uint32_t value);
731 
742 hpm_stat_t mt9m114_multiwrite(camera_context_t *context, const mt9m114_reg_t regs[], uint32_t num);
743 
753 
763 hpm_stat_t mt9m114_setstate(camera_context_t *context, uint16_t next_state);
764 
774 hpm_stat_t mt9m114_get_current_state(camera_context_t *context, uint8_t *state);
775 
785 
796 
806 hpm_stat_t mt9m114_set_framerate(camera_context_t *context, int framerate);
807 
818 
828 
838 
848 hpm_stat_t mt9m114_enable_mono(camera_context_t *context, bool enable);
849 
859 hpm_stat_t mt9m114_init(camera_context_t *context, camera_config_t *camera_config);
860 #ifdef __cplusplus
861 }
862 #endif
863 
869 #endif /* HPM_MT9M114_H */
enum display_pixel_format display_pixel_format_t
display pixel format
uint32_t hpm_stat_t
Definition: hpm_common.h:135
hpm_stat_t mt9m114_set_brightness(camera_context_t *context, int level)
MT9M114 set brightness.
Definition: hpm_mt9m114.c:389
hpm_stat_t mt9m114_start(camera_context_t *context)
MT9M114 start to transfer image data.
Definition: hpm_mt9m114.c:404
hpm_stat_t mt9m114_multiwrite(camera_context_t *context, const mt9m114_reg_t regs[], uint32_t num)
MT9M114 multiwrite registers.
Definition: hpm_mt9m114.c:239
hpm_stat_t mt9m114_setstate(camera_context_t *context, uint16_t next_state)
MT9M114 set next state and switch to it.
Definition: hpm_mt9m114.c:325
hpm_stat_t mt9m114_init(camera_context_t *context, camera_config_t *camera_config)
MT9M114 initialization.
Definition: hpm_mt9m114.c:443
hpm_stat_t mt9m114_get_current_state(camera_context_t *context, uint8_t *state)
MT9M114 get current state.
Definition: hpm_mt9m114.c:295
hpm_stat_t mt9m114_set_pixformat(camera_context_t *context, display_pixel_format_t pixformat)
MT9M114 set pixformat.
Definition: hpm_mt9m114.c:354
hpm_stat_t mt9m114_write_register(camera_context_t *context, uint32_t reg, uint32_t reg_size, uint32_t value)
MT9M114 write register.
Definition: hpm_mt9m114.c:207
hpm_stat_t mt9m114_check_chip_id(camera_context_t *context)
MT9M114 check chipid.
Definition: hpm_mt9m114.c:414
hpm_stat_t mt9m114_set_framerate(camera_context_t *context, int framerate)
MT9M114 set framerate.
Definition: hpm_mt9m114.c:376
hpm_stat_t mt9m114_stop(camera_context_t *context)
MT9M114 stop working and enter SUSPEND mode.
Definition: hpm_mt9m114.c:409
hpm_stat_t mt9m114_modify_register(camera_context_t *context, uint32_t reg, uint32_t reg_size, uint32_t mask, uint32_t value)
MT9M114 modify register.
Definition: hpm_mt9m114.c:223
hpm_stat_t mt9m114_enable_mono(camera_context_t *context, bool enable)
MT9M114 enable or disable MONO mode.
Definition: hpm_mt9m114.c:431
hpm_stat_t mt9m114_read_register(camera_context_t *context, uint32_t reg, uint32_t reg_size, void *value)
MT9M114 read register.
Definition: hpm_mt9m114.c:189
hpm_stat_t mt9m114_software_reset(camera_context_t *context)
MT9M114 soft reset.
Definition: hpm_mt9m114.c:300
Definition: hpm_camera_config.h:42
Definition: hpm_camera_config.h:18
Definition: hpm_mt9m114.h:686
uint32_t value
Definition: hpm_mt9m114.h:689
uint16_t reg
Definition: hpm_mt9m114.h:687
uint8_t size
Definition: hpm_mt9m114.h:688