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