/* * Copyright (c) 2023 HPMicro * * SPDX-License-Identifier: BSD-3-Clause * */ #ifndef HPM_MT9M114_H #define HPM_MT9M114_H #include "hpm_camera_config.h" #include "hpm_common.h" /* MT9M114_ERROR_ACTION_BLOCK * 0 : return fail * 1 : print error message to console and block */ #define MT9M114_ERROR_ACTION_BLOCK 0 #define MT9M114_HOST_CMD_TIMEOUT 100 #ifndef MT9M114_ACTIVE_IMAGE_WIDTH #define MT9M114_ACTIVE_IMAGE_WIDTH (640U) #endif #ifndef MT9M114_ACTIVE_IMAGE_HEIGHT #define MT9M114_ACTIVE_IMAGE_HEIGHT (480U) #endif #define DUMMY_LINES 8 #define DUMMY_COLUMNS 8 #define SENSOR_WIDTH 1296 #define SENSOR_HEIGHT 976 #define DUMMY_WIDTH_BUFFER 8 #define DUMMY_HEIGHT_BUFFER 8 #define ACTIVE_SENSOR_WIDTH (SENSOR_WIDTH - (2 * DUMMY_COLUMNS)) #define ACTIVE_SENSOR_HEIGHT (SENSOR_HEIGHT - (2 * DUMMY_LINES)) /** * @brief MT9M114 sensor driver APIs * @defgroup MT9M114_interface sensor driver APIs * @ingroup component_interfaces * @{ * */ /*********************************************************************************************************************** * * Definitions * **********************************************************************************************************************/ /** * @brief MT9M114 definition */ /******************************************************************************* * Definitions ******************************************************************************/ #if defined(MT9M114_DUAL_CAMERA) #define MT9M114_I2C_ADDR 0x48 #define MT9M114_I2C_ADDR_IR 0x5D #else #define MT9M114_I2C_ADDR 0x48 #endif #define MT9M114_CHIP_ID 0x2481 #define MT9M114_REG_ADDR_LEN (2) /*! @brief MT9M114 register definitions.*/ /* 1.Core registers */ #define MT9M114_REG_Y_ADDR_START 0x3002 #define MT9M114_REG_X_ADDR_START 0x3004 #define MT9M114_REG_Y_ADDR_END 0x3006 #define MT9M114_REG_X_ADDR_END 0x3008 #define MT9M114_REG_FRAME_LENGTH_LINES 0x300A #define MT9M114_REG_LINE_LENGTH_PCK_ 0x300C #define MT9M114_REG_COARSE_INTEGRATION_TIME 0x3012 #define MT9M114_REG_FINE_INTEGRATION_TIME 0x3014 #define MT9M114_REG_RESET_REGISTER 0x301A #define MT9M114_REG_FLASH 0x3046 #define MT9M114_REG_FLASH_COUNT 0x3048 #define MT9M114_REG_GREEN1_GAIN 0x3056 #define MT9M114_REG_BLUE_GAIN 0x3058 #define MT9M114_REG_RED_GAIN 0x305A #define MT9M114_REG_GREEN2_GAIN 0x305C #define MT9M114_REG_GLOBAL_GAIN 0x305E #define MT9M114_REG_FUSE_ID1 0x31F4 #define MT9M114_REG_FUSE_ID2 0x31F6 #define MT9M114_REG_FUSE_ID3 0x31F8 #define MT9M114_REG_FUSE_ID4 0x31FA #define MT9M114_REG_CHAIN_CONTROL 0x31FC #define MT9M114_REG_CUSTOMER_REV 0x31FE /* 2.SOC1 registers */ #define MT9M114_REG_COLOR_PIPELINE_CONTROL 0x3210 /* 3.SOC2 registers */ #define MT9M114_REG_P_G1_P0Q0 0x3640 #define MT9M114_REG_P_G1_P0Q1 0x3642 #define MT9M114_REG_P_G1_P0Q2 0x3644 #define MT9M114_REG_P_G1_P0Q3 0x3646 #define MT9M114_REG_P_G1_P0Q4 0x3648 #define MT9M114_REG_P_R_P0Q0 0x364A #define MT9M114_REG_P_R_P0Q1 0x364C #define MT9M114_REG_P_R_P0Q2 0x364E #define MT9M114_REG_P_R_P0Q3 0x3650 #define MT9M114_REG_P_R_P0Q4 0x3652 #define MT9M114_REG_P_B_P0Q0 0x3654 #define MT9M114_REG_P_B_P0Q1 0x3656 #define MT9M114_REG_P_B_P0Q2 0x3658 #define MT9M114_REG_P_B_P0Q3 0x365A #define MT9M114_REG_P_B_P0Q4 0x365C #define MT9M114_REG_P_G2_P0Q0 0x365E #define MT9M114_REG_P_G2_P0Q1 0x3660 #define MT9M114_REG_P_G2_P0Q2 0x3662 #define MT9M114_REG_P_G2_P0Q3 0x3664 #define MT9M114_REG_P_G2_P0Q4 0x3666 #define MT9M114_REG_P_G1_P1Q0 0x3680 #define MT9M114_REG_P_G1_P1Q1 0x3682 #define MT9M114_REG_P_G1_P1Q2 0x3684 #define MT9M114_REG_P_G1_P1Q3 0x3686 #define MT9M114_REG_P_G1_P1Q4 0x3688 #define MT9M114_REG_P_R_P1Q0 0x368A #define MT9M114_REG_P_R_P1Q1 0x368C #define MT9M114_REG_P_R_P1Q2 0x368E #define MT9M114_REG_P_R_P1Q3 0x3690 #define MT9M114_REG_P_R_P1Q4 0x3692 #define MT9M114_REG_P_B_P1Q0 0x3694 #define MT9M114_REG_P_B_P1Q1 0x3696 #define MT9M114_REG_P_B_P1Q2 0x3698 #define MT9M114_REG_P_B_P1Q3 0x369A #define MT9M114_REG_P_B_P1Q4 0x369C #define MT9M114_REG_P_G2_P1Q0 0x369E #define MT9M114_REG_P_G2_P1Q1 0x36A0 #define MT9M114_REG_P_G2_P1Q2 0x36A2 #define MT9M114_REG_P_G2_P1Q3 0x36A4 #define MT9M114_REG_P_G2_P1Q4 0x36A6 #define MT9M114_REG_P_G1_P2Q0 0x36C0 #define MT9M114_REG_P_G1_P2Q1 0x36C2 #define MT9M114_REG_P_G1_P2Q2 0x36C4 #define MT9M114_REG_P_G1_P2Q3 0x36C6 #define MT9M114_REG_P_G1_P2Q4 0x36C8 #define MT9M114_REG_P_R_P2Q0 0x36CA #define MT9M114_REG_P_R_P2Q1 0x36CC #define MT9M114_REG_P_R_P2Q2 0x36CE #define MT9M114_REG_P_R_P2Q3 0x36D0 #define MT9M114_REG_P_R_P2Q4 0x36D2 #define MT9M114_REG_P_B_P2Q0 0x36D4 #define MT9M114_REG_P_B_P2Q1 0x36D6 #define MT9M114_REG_P_B_P2Q2 0x36D8 #define MT9M114_REG_P_B_P2Q3 0x36DA #define MT9M114_REG_P_B_P2Q4 0x36DC #define MT9M114_REG_P_G2_P2Q0 0x36DE #define MT9M114_REG_P_G2_P2Q1 0x36E0 #define MT9M114_REG_P_G2_P2Q2 0x36E2 #define MT9M114_REG_P_G2_P2Q3 0x36E4 #define MT9M114_REG_P_G2_P2Q4 0x36E6 #define MT9M114_REG_P_G1_P3Q0 0x3700 #define MT9M114_REG_P_G1_P3Q1 0x3702 #define MT9M114_REG_P_G1_P3Q2 0x3704 #define MT9M114_REG_P_G1_P3Q3 0x3706 #define MT9M114_REG_P_G1_P3Q4 0x3708 #define MT9M114_REG_P_R_P3Q0 0x370A #define MT9M114_REG_P_R_P3Q1 0x370C #define MT9M114_REG_P_R_P3Q2 0x370E #define MT9M114_REG_P_R_P3Q3 0x3710 #define MT9M114_REG_P_R_P3Q4 0x3712 #define MT9M114_REG_P_B_P3Q0 0x3714 #define MT9M114_REG_P_B_P3Q1 0x3716 #define MT9M114_REG_P_B_P3Q2 0x3718 #define MT9M114_REG_P_B_P3Q3 0x371A #define MT9M114_REG_P_B_P3Q4 0x371C #define MT9M114_REG_P_G2_P3Q0 0x371E #define MT9M114_REG_P_G2_P3Q1 0x3720 #define MT9M114_REG_P_G2_P3Q2 0x3722 #define MT9M114_REG_P_G2_P3Q3 0x3724 #define MT9M114_REG_P_G2_P3Q4 0x3726 #define MT9M114_REG_P_G1_P4Q0 0x3740 #define MT9M114_REG_P_G1_P4Q1 0x3742 #define MT9M114_REG_P_G1_P4Q2 0x3744 #define MT9M114_REG_P_G1_P4Q3 0x3746 #define MT9M114_REG_P_G1_P4Q4 0x3748 #define MT9M114_REG_P_R_P4Q0 0x374A #define MT9M114_REG_P_R_P4Q1 0x374C #define MT9M114_REG_P_R_P4Q2 0x374E #define MT9M114_REG_P_R_P4Q3 0x3750 #define MT9M114_REG_P_R_P4Q4 0x3752 #define MT9M114_REG_P_B_P4Q0 0x3754 #define MT9M114_REG_P_B_P4Q1 0x3756 #define MT9M114_REG_P_B_P4Q2 0x3758 #define MT9M114_REG_P_B_P4Q3 0x375A #define MT9M114_REG_P_B_P4Q4 0x375C #define MT9M114_REG_P_G2_P4Q0 0x375E #define MT9M114_REG_P_G2_P4Q1 0x3760 #define MT9M114_REG_P_G2_P4Q2 0x3762 #define MT9M114_REG_P_G2_P4Q3 0x3764 #define MT9M114_REG_P_G2_P4Q4 0x3766 #define MT9M114_REG_CENTER_ROW 0x3782 #define MT9M114_REG_CENTER_COLUMN 0x3784 /* 4.SYSCTL registers */ #define MT9M114_REG_CHIP_ID 0x0000 #define MT9M114_REG_CLOCKS_CONTROL 0x0016 #define MT9M114_REG_RESET_AND_MISC_CONTROL 0x001A #define MT9M114_REG_PAD_SLEW 0x001E #define MT9M114_REG_USER_DEFINED_DEVICE_ADDRESS_ID 0x002E #define MT9M114_REG_PAD_CONTROL 0x0032 #define MT9M114_REG_COMMAND_REGISTER 0x0080 /* 5.XDMA registers */ #define MT9M114_REG_ACCESS_CTL_STAT 0x0982 #define MT9M114_REG_PHYSICAL_ADDRESS_ACCESS 0x098A #define MT9M114_REG_LOGICAL_ADDRESS_ACCESS 0x098E #define MT9M114_REG_MCU_VARIABLE_DATA0 0x0990 #define MT9M114_REG_MCU_VARIABLE_DATA1 0x0992 #define MT9M114_REG_MCU_VARIABLE_DATA2 0x0994 #define MT9M114_REG_MCU_VARIABLE_DATA3 0x0996 #define MT9M114_REG_MCU_VARIABLE_DATA4 0x0998 #define MT9M114_REG_MCU_VARIABLE_DATA5 0x099A #define MT9M114_REG_MCU_VARIABLE_DATA6 0x099C #define MT9M114_REG_MCU_VARIABLE_DATA7 0x099E /*! @brief MT9M114 variables definitions.*/ /* 01.Monitor variables */ #define MT9M114_VAR_MON_MAJOR_VERSION 0x8000 #define MT9M114_VAR_MON_MINOR_VERSION 0x8002 #define MT9M114_VAR_MON_RELEASE_VERSION 0x8004 #define MT9M114_VAR_MON_HEARTBEAT 0x8006 /* 02.Sequencer variables */ #define MT9M114_VAR_SEQ_ERROR_CODE 0x8406 /* 03.AE_Rule variables */ #define MT9M114_VAR_AE_RULE_ALGO 0xA404 #define MT9M114_VAR_AE_RULE_AVG_Y_FROM_STATS 0xA406 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_0 0xA407 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_1 0xA408 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_2 0xA409 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_3 0xA40A #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_4 0xA40B #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_0 0xA40C #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_1 0xA40D #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_2 0xA40E #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_3 0xA40F #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_4 0xA410 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_0 0xA411 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_1 0xA412 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_2 0xA413 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_3 0xA414 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_4 0xA415 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_0 0xA416 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_1 0xA417 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_2 0xA418 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_3 0xA419 #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_4 0xA41A #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_0 0xA41B #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_1 0xA41C #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_2 0xA41D #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_3 0xA41E #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_4 0xA41F #define MT9M114_VAR_AE_RULE_AE_ADAPTIVE_STRENGTH 0xA420 /* 04.AE_Track variables */ #define MT9M114_VAR_AE_TRACK_STATUS 0xA800 #define MT9M114_VAR_AE_TRACK_ALGO 0xA804 #define MT9M114_VAR_AE_TRACK_TARGET_AVERAGE_LUMA 0xA807 #define MT9M114_VAR_AE_TRACK_GATE_PERCENTAGE 0xA808 #define MT9M114_VAR_AE_TRACK_CURRENT_AVERAGE_LUMA 0xA809 #define MT9M114_VAR_AE_TRACK_AE_TRACKING_DAMPENING_SPEED 0xA80A #define MT9M114_VAR_AE_TRACK_AE_DAMPENING_SPEED 0xA80B #define MT9M114_VAR_AE_TRACK_SKIP_FRAMES_COUNTER 0xA80D #define MT9M114_VAR_AE_TRACK_CURRENT_FLICKER_LINES 0xA80E #define MT9M114_VAR_AE_TRACK_FDZONE 0xA818 #define MT9M114_VAR_AE_TRACK_ZONE 0xA81B #define MT9M114_VAR_AE_TRACK_FLICKER_LINES_50HZ 0xA826 #define MT9M114_VAR_AE_TRACK_VIRT_EXPOSURE_LOG 0xA828 #define MT9M114_VAR_AE_TRACK_MIN_VIRT_EXPOSURE_LOG_ZONE0 0xA82A #define MT9M114_VAR_AE_TRACK_MAX_VIRT_EXPOSURE_LOG_ZONE0 0xA82C #define MT9M114_VAR_AE_TRACK_MAX_VIRT_EXPOSURE_LOG_ZONE1 0xA82E #define MT9M114_VAR_AE_TRACK_VIRT_GAIN 0xA838 /* 05.AWB variables */ #define MT9M114_VAR_AWB_STATUS 0xAC00 #define MT9M114_VAR_AWB_MODE 0xAC02 #define MT9M114_VAR_AWB_R_RATIO_LOWER 0xAC06 #define MT9M114_VAR_AWB_R_RATIO_UPPER 0xAC07 #define MT9M114_VAR_AWB_B_RATIO_LOWER 0xAC08 #define MT9M114_VAR_AWB_B_RATIO_UPPER 0xAC09 #define MT9M114_VAR_AWB_R_SCENE_RATIO_LOWER 0xAC0A #define MT9M114_VAR_AWB_R_SCENE_RATIO_UPPER 0xAC0B #define MT9M114_VAR_AWB_B_SCENE_RATIO_LOWER 0xAC0C #define MT9M114_VAR_AWB_B_SCENE_RATIO_UPPER 0xAC0D #define MT9M114_VAR_AWB_R_RATIO_PRE_AWB 0xAC0E #define MT9M114_VAR_AWB_B_RATIO_PRE_AWB 0xAC0F #define MT9M114_VAR_AWB_R_GAIN 0xAC12 #define MT9M114_VAR_AWB_B_GAIN 0xAC14 #define MT9M114_VAR_AWB_PRE_AWB_RATIOS_TRACKING_SPEED 0xAC16 #define MT9M114_VAR_AWB_PIXEL_THRESHOLD_COUNT 0xAC18 /* 06.BlackLevel variables */ #define MT9M114_VAR_BLACKLEVEL_ALGO 0xB004 #define MT9M114_VAR_BLACKLEVEL_MAX_BLACK_LEVEL 0xB00C #define MT9M114_VAR_BLACKLEVEL_BLACK_LEVEL_DAMPENING 0xB00D /* 07.CCM variables */ #define MT9M114_VAR_CCM_ALGO 0xB404 #define MT9M114_VAR_CCM_0 0xB406 #define MT9M114_VAR_CCM_1 0xB408 #define MT9M114_VAR_CCM_2 0xB40A #define MT9M114_VAR_CCM_3 0xB40C #define MT9M114_VAR_CCM_4 0xB40E #define MT9M114_VAR_CCM_5 0xB410 #define MT9M114_VAR_CCM_6 0xB412 #define MT9M114_VAR_CCM_7 0xB414 #define MT9M114_VAR_CCM_8 0xB416 #define MT9M114_VAR_CCM_LL_DELTA_CCM_0 0xB418 #define MT9M114_VAR_CCM_LL_DELTA_CCM_1 0xB41A #define MT9M114_VAR_CCM_LL_DELTA_CCM_2 0xB41C #define MT9M114_VAR_CCM_LL_DELTA_CCM_3 0xB41E #define MT9M114_VAR_CCM_LL_DELTA_CCM_4 0xB420 #define MT9M114_VAR_CCM_LL_DELTA_CCM_5 0xB422 #define MT9M114_VAR_CCM_LL_DELTA_CCM_6 0xB424 #define MT9M114_VAR_CCM_LL_DELTA_CCM_7 0xB426 #define MT9M114_VAR_CCM_LL_DELTA_CCM_8 0xB428 #define MT9M114_VAR_CCM_DELTA_GAIN 0xB42A #define MT9M114_VAR_CCM_DELTA_THRESH 0xB42B /* 08.LowLight variables */ #define MT9M114_VAR_LL_MODE 0xBC02 #define MT9M114_VAR_LL_ALGO 0xBC04 #define MT9M114_VAR_LL_GAMMA_SELECT 0xBC07 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_0 0xBC0A #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_1 0xBC0B #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_2 0xBC0C #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_3 0xBC0D #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_4 0xBC0E #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_5 0xBC0F #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_6 0xBC10 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_7 0xBC11 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_8 0xBC12 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_9 0xBC13 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_10 0xBC14 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_11 0xBC15 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_12 0xBC16 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_13 0xBC17 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_14 0xBC18 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_15 0xBC19 #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_16 0xBC1A #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_17 0xBC1B #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_18 0xBC1C #define MT9M114_VAR_LL_GAMMA_NRCURVE_0 0xBC1D #define MT9M114_VAR_LL_GAMMA_NRCURVE_1 0xBC1E #define MT9M114_VAR_LL_GAMMA_NRCURVE_2 0xBC1F #define MT9M114_VAR_LL_GAMMA_NRCURVE_3 0xBC20 #define MT9M114_VAR_LL_GAMMA_NRCURVE_4 0xBC21 #define MT9M114_VAR_LL_GAMMA_NRCURVE_5 0xBC22 #define MT9M114_VAR_LL_GAMMA_NRCURVE_6 0xBC23 #define MT9M114_VAR_LL_GAMMA_NRCURVE_7 0xBC24 #define MT9M114_VAR_LL_GAMMA_NRCURVE_8 0xBC25 #define MT9M114_VAR_LL_GAMMA_NRCURVE_9 0xBC26 #define MT9M114_VAR_LL_GAMMA_NRCURVE_10 0xBC27 #define MT9M114_VAR_LL_GAMMA_NRCURVE_11 0xBC28 #define MT9M114_VAR_LL_GAMMA_NRCURVE_12 0xBC29 #define MT9M114_VAR_LL_GAMMA_NRCURVE_13 0xBC2A #define MT9M114_VAR_LL_GAMMA_NRCURVE_14 0xBC2B #define MT9M114_VAR_LL_GAMMA_NRCURVE_15 0xBC2C #define MT9M114_VAR_LL_GAMMA_NRCURVE_16 0xBC2D #define MT9M114_VAR_LL_GAMMA_NRCURVE_17 0xBC2E #define MT9M114_VAR_LL_GAMMA_NRCURVE_18 0xBC2F #define MT9M114_VAR_LL_BM_PRECISION_BITS 0xBC31 #define MT9M114_VAR_LL_AVERAGE_LUMA_FADE_TO_BLACK 0xBC3A #define MT9M114_VAR_LL_FADE_TO_BLACK_DAMPENING_SPEED 0xBC3C /* 09.CameraControl variables */ #define MT9M114_VAR_CAM_SENSOR_CFG_Y_ADDR_START 0xC800 #define MT9M114_VAR_CAM_SENSOR_CFG_X_ADDR_START 0xC802 #define MT9M114_VAR_CAM_SENSOR_CFG_Y_ADDR_END 0xC804 #define MT9M114_VAR_CAM_SENSOR_CFG_X_ADDR_END 0xC806 #define MT9M114_VAR_CAM_SENSOR_CFG_PIXCLK 0xC808 #define MT9M114_VAR_CAM_SENSOR_CFG_ROW_SPEED 0xC80C #define MT9M114_VAR_CAM_SENSOR_CFG_FINE_INTEG_TIME_MIN 0xC80E #define MT9M114_VAR_CAM_SENSOR_CFG_FINE_INTEG_TIME_MAX 0xC810 #define MT9M114_VAR_CAM_SENSOR_CFG_FRAME_LENGTH_LINES 0xC812 #define MT9M114_VAR_CAM_SENSOR_CFG_LINE_LENGTH_PCK 0xC814 #define MT9M114_VAR_CAM_SENSOR_CFG_FINE_CORRECTION 0xC816 #define MT9M114_VAR_CAM_SENSOR_CFG_CPIPE_LAST_ROW 0xC818 #define MT9M114_VAR_CAM_SENSOR_CFG_REG_0_DATA 0xC826 #define MT9M114_VAR_CAM_SENSOR_CONTROL_READ_MODE 0xC834 #define MT9M114_VAR_CAM_SENSOR_CONTROL_ANALOG_GAIN 0xC836 #define MT9M114_VAR_CAM_SENSOR_CONTROL_VIRT_COLUMN_GAIN 0xC838 #define MT9M114_VAR_CAM_SENSOR_CONTROL_FRAME_LENGTH_LINES 0xC83A #define MT9M114_VAR_CAM_SENSOR_CONTROL_COARSE_INTEGRATION_TIME 0xC83C #define MT9M114_VAR_CAM_SENSOR_CONTROL_FINE_INTEGRATION_TIME 0xC83E #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_RED 0xC840 #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_GREEN1 0xC842 #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_GREEN2 0xC844 #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_BLUE 0xC846 #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_SECOND 0xC848 #define MT9M114_VAR_CAM_CPIPE_CONTROL_SECOND_BLACK_LEVEL 0xC84B #define MT9M114_VAR_CAM_MODE_SELECT 0xC84C #define MT9M114_VAR_CAM_MODE_TEST_PATTERN_SELECT 0xC84D #define MT9M114_VAR_CAM_MODE_TEST_PATTERN_RED 0xC84E #define MT9M114_VAR_CAM_MODE_TEST_PATTERN_GREEN 0xC850 #define MT9M114_VAR_CAM_MODE_TEST_PATTERN_BLUE 0xC852 #define MT9M114_VAR_CAM_CROP_WINDOW_XOFFSET 0xC854 #define MT9M114_VAR_CAM_CROP_WINDOW_YOFFSET 0xC856 #define MT9M114_VAR_CAM_CROP_WINDOW_WIDTH 0xC858 #define MT9M114_VAR_CAM_CROP_WINDOW_HEIGHT 0xC85A #define MT9M114_VAR_CAM_CROP_CROPMODE 0xC85C #define MT9M114_VAR_CAM_SCALE_VERTICAL_TC_MODE 0xC85E #define MT9M114_VAR_CAM_SCALE_VERTICAL_TC_PERCENTAGE 0xC860 #define MT9M114_VAR_CAM_SCALE_VERTICAL_TC_STRETCH_FACTOR 0xC862 #define MT9M114_VAR_CAM_OUTPUT_WIDTH 0xC868 #define MT9M114_VAR_CAM_OUTPUT_HEIGHT 0xC86A #define MT9M114_VAR_CAM_OUTPUT_FORMAT 0xC86C #define MT9M114_VAR_CAM_OUTPUT_FORMAT_YUV 0xC86E #define MT9M114_VAR_CAM_OUTPUT_Y_OFFSET 0xC870 #define MT9M114_VAR_CAM_HUE_ANGLE 0xC873 #define MT9M114_VAR_CAM_SFX_CONTROL 0xC874 #define MT9M114_VAR_CAM_SFX_SOLARIZATION_THRESH 0xC875 #define MT9M114_VAR_CAM_SFX_SEPIA_CR 0xC876 #define MT9M114_VAR_CAM_SFX_SEPIA_CB 0xC877 #define MT9M114_VAR_CAM_AET_AEMODE 0xC878 #define MT9M114_VAR_CAM_AET_SKIP_FRAMES 0xC879 #define MT9M114_VAR_CAM_AET_TARGET_AVERAGE_LUMA 0xC87A #define MT9M114_VAR_CAM_AET_TARGET_AVERAGE_LUMA_DARK 0xC87B #define MT9M114_VAR_CAM_AET_BLACK_CLIPPING_TARGET 0xC87C #define MT9M114_VAR_CAM_AET_AE_MIN_VIRT_INT_TIME_PCLK 0xC87E #define MT9M114_VAR_CAM_AET_AE_MIN_VIRT_DGAIN 0xC880 #define MT9M114_VAR_CAM_AET_AE_MAX_VIRT_DGAIN 0xC882 #define MT9M114_VAR_CAM_AET_AE_MIN_VIRT_AGAIN 0xC884 #define MT9M114_VAR_CAM_AET_AE_MAX_VIRT_AGAIN 0xC886 #define MT9M114_VAR_CAM_AET_AE_VIRT_GAIN_TH_EG 0xC888 #define MT9M114_VAR_CAM_AET_AE_EG_GATE_PERCENTAGE 0xC88A #define MT9M114_VAR_CAM_AET_FLICKER_FREQ_HZ 0xC88B #define MT9M114_VAR_CAM_AET_MAX_FRAME_RATE 0xC88C #define MT9M114_VAR_CAM_AET_MIN_FRAME_RATE 0xC88E #define MT9M114_VAR_CAM_AET_TARGET_GAIN 0xC890 #define MT9M114_VAR_CAM_AWB_CCM_L_0 0xC892 #define MT9M114_VAR_CAM_AWB_CCM_L_1 0xC894 #define MT9M114_VAR_CAM_AWB_CCM_L_2 0xC896 #define MT9M114_VAR_CAM_AWB_CCM_L_3 0xC898 #define MT9M114_VAR_CAM_AWB_CCM_L_4 0xC89A #define MT9M114_VAR_CAM_AWB_CCM_L_5 0xC89C #define MT9M114_VAR_CAM_AWB_CCM_L_6 0xC89E #define MT9M114_VAR_CAM_AWB_CCM_L_7 0xC8A0 #define MT9M114_VAR_CAM_AWB_CCM_L_8 0xC8A2 #define MT9M114_VAR_CAM_AWB_CCM_M_0 0xC8A4 #define MT9M114_VAR_CAM_AWB_CCM_M_1 0xC8A6 #define MT9M114_VAR_CAM_AWB_CCM_M_2 0xC8A8 #define MT9M114_VAR_CAM_AWB_CCM_M_3 0xC8AA #define MT9M114_VAR_CAM_AWB_CCM_M_4 0xC8AC #define MT9M114_VAR_CAM_AWB_CCM_M_5 0xC8AE #define MT9M114_VAR_CAM_AWB_CCM_M_6 0xC8B0 #define MT9M114_VAR_CAM_AWB_CCM_M_7 0xC8B2 #define MT9M114_VAR_CAM_AWB_CCM_M_8 0xC8B4 #define MT9M114_VAR_CAM_AWB_CCM_R_0 0xC8B6 #define MT9M114_VAR_CAM_AWB_CCM_R_1 0xC8B8 #define MT9M114_VAR_CAM_AWB_CCM_R_2 0xC8BA #define MT9M114_VAR_CAM_AWB_CCM_R_3 0xC8BC #define MT9M114_VAR_CAM_AWB_CCM_R_4 0xC8BE #define MT9M114_VAR_CAM_AWB_CCM_R_5 0xC8C0 #define MT9M114_VAR_CAM_AWB_CCM_R_6 0xC8C2 #define MT9M114_VAR_CAM_AWB_CCM_R_7 0xC8C4 #define MT9M114_VAR_CAM_AWB_CCM_R_8 0xC8C6 #define MT9M114_VAR_CAM_AWB_CCM_L_RG_GAIN 0xC8C8 #define MT9M114_VAR_CAM_AWB_CCM_L_BG_GAIN 0xC8CA #define MT9M114_VAR_CAM_AWB_CCM_M_RG_GAIN 0xC8CC #define MT9M114_VAR_CAM_AWB_CCM_M_BG_GAIN 0xC8CE #define MT9M114_VAR_CAM_AWB_CCM_R_RG_GAIN 0xC8D0 #define MT9M114_VAR_CAM_AWB_CCM_R_BG_GAIN 0xC8D2 #define MT9M114_VAR_CAM_AWB_CCM_L_CTEMP 0xC8D4 #define MT9M114_VAR_CAM_AWB_CCM_M_CTEMP 0xC8D6 #define MT9M114_VAR_CAM_AWB_CCM_R_CTEMP 0xC8D8 #define MT9M114_VAR_CAM_AWB_LL_CCM_0 0xC8DA #define MT9M114_VAR_CAM_AWB_LL_CCM_1 0xC8DC #define MT9M114_VAR_CAM_AWB_LL_CCM_2 0xC8DE #define MT9M114_VAR_CAM_AWB_LL_CCM_3 0xC8E0 #define MT9M114_VAR_CAM_AWB_LL_CCM_4 0xC8E2 #define MT9M114_VAR_CAM_AWB_LL_CCM_5 0xC8E4 #define MT9M114_VAR_CAM_AWB_LL_CCM_6 0xC8E6 #define MT9M114_VAR_CAM_AWB_LL_CCM_7 0xC8E8 #define MT9M114_VAR_CAM_AWB_LL_CCM_8 0xC8EA #define MT9M114_VAR_CAM_AWB_COLOR_TEMPERATURE_MIN 0xC8EC #define MT9M114_VAR_CAM_AWB_COLOR_TEMPERATURE_MAX 0xC8EE #define MT9M114_VAR_CAM_AWB_COLOR_TEMPERATURE 0xC8F0 #define MT9M114_VAR_CAM_AWB_AWB_XSCALE 0xC8F2 #define MT9M114_VAR_CAM_AWB_AWB_YSCALE 0xC8F3 #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_0 0xC8F4 #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_1 0xC8F6 #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_2 0xC8F8 #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_3 0xC8FA #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_4 0xC8FC #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_5 0xC8FE #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_6 0xC900 #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_7 0xC902 #define MT9M114_VAR_CAM_AWB_AWB_XSHIFT_PRE_ADJ 0xC904 #define MT9M114_VAR_CAM_AWB_AWB_YSHIFT_PRE_ADJ 0xC906 #define MT9M114_VAR_CAM_AWB_AWBMODE 0xC909 #define MT9M114_VAR_CAM_AWB_TINTS_CTEMP_THRESHOLD 0xC90A #define MT9M114_VAR_CAM_AWB_K_R_L 0xC90C #define MT9M114_VAR_CAM_AWB_K_G_L 0xC90D #define MT9M114_VAR_CAM_AWB_K_B_L 0xC90E #define MT9M114_VAR_CAM_AWB_K_R_R 0xC90F #define MT9M114_VAR_CAM_AWB_K_G_R 0xC910 #define MT9M114_VAR_CAM_AWB_K_B_R 0xC911 #define MT9M114_VAR_CAM_STAT_AWB_CLIP_WINDOW_XSTART 0xC914 #define MT9M114_VAR_CAM_STAT_AWB_CLIP_WINDOW_YSTART 0xC916 #define MT9M114_VAR_CAM_STAT_AWB_CLIP_WINDOW_XEND 0xC918 #define MT9M114_VAR_CAM_STAT_AWB_CLIP_WINDOW_YEND 0xC91A #define MT9M114_VAR_CAM_STAT_AE_INITIAL_WINDOW_XSTART 0xC91C #define MT9M114_VAR_CAM_STAT_AE_INITIAL_WINDOW_YSTART 0xC91E #define MT9M114_VAR_CAM_STAT_AE_INITIAL_WINDOW_XEND 0xC920 #define MT9M114_VAR_CAM_STAT_AE_INITIAL_WINDOW_YEND 0xC922 #define MT9M114_VAR_CAM_LL_LLMODE 0xC924 #define MT9M114_VAR_CAM_LL_START_BRIGHTNESS 0xC926 #define MT9M114_VAR_CAM_LL_STOP_BRIGHTNESS 0xC928 #define MT9M114_VAR_CAM_LL_START_SATURATION 0xC92A #define MT9M114_VAR_CAM_LL_END_SATURATION 0xC92B #define MT9M114_VAR_CAM_LL_START_DESATURATION 0xC92C #define MT9M114_VAR_CAM_LL_END_DESATURATION 0xC92D #define MT9M114_VAR_CAM_LL_START_DEMOSAIC 0xC92E #define MT9M114_VAR_CAM_LL_START_AP_GAIN 0xC92F #define MT9M114_VAR_CAM_LL_START_AP_THRESH 0xC930 #define MT9M114_VAR_CAM_LL_STOP_DEMOSAIC 0xC931 #define MT9M114_VAR_CAM_LL_STOP_AP_GAIN 0xC932 #define MT9M114_VAR_CAM_LL_STOP_AP_THRESH 0xC933 #define MT9M114_VAR_CAM_LL_START_NR_RED 0xC934 #define MT9M114_VAR_CAM_LL_START_NR_GREEN 0xC935 #define MT9M114_VAR_CAM_LL_START_NR_BLUE 0xC936 #define MT9M114_VAR_CAM_LL_START_NR_THRESH 0xC937 #define MT9M114_VAR_CAM_LL_STOP_NR_RED 0xC938 #define MT9M114_VAR_CAM_LL_STOP_NR_GREEN 0xC939 #define MT9M114_VAR_CAM_LL_STOP_NR_BLUE 0xC93A #define MT9M114_VAR_CAM_LL_STOP_NR_THRESH 0xC93B #define MT9M114_VAR_CAM_LL_START_CONTRAST_BM 0xC93C #define MT9M114_VAR_CAM_LL_STOP_CONTRAST_BM 0xC93E #define MT9M114_VAR_CAM_LL_GAMMA 0xC940 #define MT9M114_VAR_CAM_LL_START_CONTRAST_GRADIENT 0xC942 #define MT9M114_VAR_CAM_LL_STOP_CONTRAST_GRADIENT 0xC943 #define MT9M114_VAR_CAM_LL_START_CONTRAST_LUMA_PERCENTAGE 0xC944 #define MT9M114_VAR_CAM_LL_STOP_CONTRAST_LUMA_PERCENTAGE 0xC945 #define MT9M114_VAR_CAM_LL_START_GAIN_METRIC 0xC946 #define MT9M114_VAR_CAM_LL_STOP_GAIN_METRIC 0xC948 #define MT9M114_VAR_CAM_LL_START_FADE_TO_BLACK_LUMA 0xC94A #define MT9M114_VAR_CAM_LL_STOP_FADE_TO_BLACK_LUMA 0xC94C #define MT9M114_VAR_CAM_LL_CLUSTER_DC_TH_BM 0xC94E #define MT9M114_VAR_CAM_LL_CLUSTER_DC_GATE_PERCENTAGE 0xC950 #define MT9M114_VAR_CAM_LL_SUMMING_SENSITIVITY_FACTOR 0xC951 #define MT9M114_VAR_CAM_LL_START_TARGET_LUMA_BM 0xC952 #define MT9M114_VAR_CAM_LL_STOP_TARGET_LUMA_BM 0xC954 #define MT9M114_VAR_CAM_LL_INV_BRIGHTNESS_METRIC 0xC956 #define MT9M114_VAR_CAM_LL_GAIN_METRIC 0xC958 #define MT9M114_VAR_CAM_SEQ_UV_COLOR_BOOST 0xC95A #define MT9M114_VAR_CAM_PGA_PGA_CONTROL 0xC95E #define MT9M114_VAR_CAM_PGA_L_CONFIG_COLOUR_TEMP 0xC960 #define MT9M114_VAR_CAM_PGA_L_CONFIG_GREEN_RED_Q14 0xC962 #define MT9M114_VAR_CAM_PGA_L_CONFIG_RED_Q14 0xC964 #define MT9M114_VAR_CAM_PGA_L_CONFIG_GREEN_BLUE_Q14 0xC966 #define MT9M114_VAR_CAM_PGA_L_CONFIG_BLUE_Q14 0xC968 #define MT9M114_VAR_CAM_PGA_M_CONFIG_COLOUR_TEMP 0xC96A #define MT9M114_VAR_CAM_PGA_M_CONFIG_GREEN_RED_Q14 0xC96C #define MT9M114_VAR_CAM_PGA_M_CONFIG_RED_Q14 0xC96E #define MT9M114_VAR_CAM_PGA_M_CONFIG_GREEN_BLUE_Q14 0xC970 #define MT9M114_VAR_CAM_PGA_M_CONFIG_BLUE_Q14 0xC972 #define MT9M114_VAR_CAM_PGA_R_CONFIG_COLOUR_TEMP 0xC974 #define MT9M114_VAR_CAM_PGA_R_CONFIG_GREEN_RED_Q14 0xC976 #define MT9M114_VAR_CAM_PGA_R_CONFIG_RED_Q14 0xC978 #define MT9M114_VAR_CAM_PGA_R_CONFIG_GREEN_BLUE_Q14 0xC97A #define MT9M114_VAR_CAM_PGA_R_CONFIG_BLUE_Q14 0xC97C #define MT9M114_VAR_CAM_SYSCTL_PLL_ENABLE 0xC97E #define MT9M114_VAR_CAM_SYSCTL_PLL_DIVIDER_M_N 0xC980 #define MT9M114_VAR_CAM_SYSCTL_PLL_DIVIDER_P 0xC982 #define MT9M114_VAR_CAM_PORT_OUTPUT_CONTROL 0xC984 #define MT9M114_VAR_CAM_PORT_PORCH 0xC986 #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_HS_ZERO 0xC988 #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_HS_EXIT_HS_TRAIL 0xC98A #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_CLK_POST_CLK_PRE 0xC98C #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_CLK_TRAIL_CLK_ZERO 0xC98E #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_LPX 0xC990 #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_INIT_TIMING 0xC992 /* 10.UVC_Control variables */ #define MT9M114_VAR_UVC_AE_MODE_CONTROL 0xCC00 #define MT9M114_VAR_UVC_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0xCC01 #define MT9M114_VAR_UVC_AE_PRIORITY_CONTROL 0xCC02 #define MT9M114_VAR_UVC_POWER_LINE_FREQUENCY_CONTROL 0xCC03 #define MT9M114_VAR_UVC_EXPOSURE_TIME_ABSOLUTE_CONTROL 0xCC04 #define MT9M114_VAR_UVC_BACKLIGHT_COMPENSATION_CONTROL 0xCC08 #define MT9M114_VAR_UVC_BRIGHTNESS_CONTROL 0xCC0A #define MT9M114_VAR_UVC_CONTRAST_CONTROL 0xCC0C #define MT9M114_VAR_UVC_GAIN_CONTROL 0xCC0E #define MT9M114_VAR_UVC_HUE_CONTROL 0xCC10 #define MT9M114_VAR_UVC_SATURATION_CONTROL 0xCC12 #define MT9M114_VAR_UVC_SHARPNESS_CONTROL 0xCC14 #define MT9M114_VAR_UVC_GAMMA_CONTROL 0xCC16 #define MT9M114_VAR_UVC_WHITE_BALANCE_TEMPERATURE_CONTROL 0xCC18 #define MT9M114_VAR_UVC_FRAME_INTERVAL_CONTROL 0xCC1C #define MT9M114_VAR_UVC_MANUAL_EXPOSURE_CONFIGURATION 0xCC20 #define MT9M114_VAR_UVC_FLICKER_AVOIDANCE_CONFIGURATION 0xCC21 #define MT9M114_VAR_UVC_ALGO 0xCC22 #define MT9M114_VAR_UVC_RESULT_STATUS 0xCC24 /* 11.SystemManager variables */ #define MT9M114_VAR_SYSMGR_NEXT_STATE 0xDC00 #define MT9M114_VAR_SYSMGR_CURRENT_STATE 0xDC01 #define MT9M114_VAR_SYSMGR_CMD_STATUS 0xDC02 /* 12.PatchLoader variables */ #define MT9M114_VAR_PATCHLDR_LOADER_ADDRESS 0xE000 #define MT9M114_VAR_PATCHLDR_PATCH_ID 0xE002 #define MT9M114_VAR_PATCHLDR_FIRMWARE_ID 0xE004 #define MT9M114_VAR_PATCHLDR_APPLY_STATUS 0xE008 #define MT9M114_VAR_PATCHLDR_NUM_PATCHES 0xE009 #define MT9M114_VAR_PATCHLDR_PATCH_ID_0 0xE00A #define MT9M114_VAR_PATCHLDR_PATCH_ID_1 0xE00C #define MT9M114_VAR_PATCHLDR_PATCH_ID_2 0xE00E #define MT9M114_VAR_PATCHLDR_PATCH_ID_3 0xE010 #define MT9M114_VAR_PATCHLDR_PATCH_ID_4 0xE012 #define MT9M114_VAR_PATCHLDR_PATCH_ID_5 0xE014 #define MT9M114_VAR_PATCHLDR_PATCH_ID_6 0xE016 #define MT9M114_VAR_PATCHLDR_PATCH_ID_7 0xE018 /* 13.Patch variables */ #define MT9M114_VAR_PATCHVARS_DELTA_DK_CORRECTION_FACTOR 0xE400 #define MT9M114_VAR_CAM_AUTO_BINNING_MODE (0xE801) /* 14.CommandHandler variables */ #define MT9M114_VAR_CMD_HANDLER_WAIT_EVENT_ID 0xFC00 #define MT9M114_VAR_CMD_HANDLER_NUM_EVENTS 0xFC02 /*! @brief MT9M114 command definitions. */ #define MT9M114_COMMAND_APPLY_PATCH 0x0001 #define MT9M114_COMMAND_SET_STATE 0x0002 #define MT9M114_COMMAND_REFRESH 0x0004 #define MT9M114_COMMAND_WAIT_FOR_EVENT 0x0008 #define MT9M114_COMMAND_OK 0x8000 /*! @brief MT9M114 system state definitions. */ #define MT9M114_SYS_STATE_ENTER_CONFIG_CHANGE 0x28 #define MT9M114_SYS_STATE_STREAMING 0x31 #define MT9M114_SYS_STATE_START_STREAMING 0x34 #define MT9M114_SYS_STATE_ENTER_SUSPEND 0x40 #define MT9M114_SYS_STATE_SUSPENDED 0x41 #define MT9M114_SYS_STATE_ENTER_STANDBY 0x50 #define MT9M114_SYS_STATE_STANDBY 0x52 #define MT9M114_SYS_STATE_LEAVE_STANDBY 0x54 /*! @brief MT9M114 system set-state command retults. */ #define MT9M114_SYS_STATE_SET_RESULT_ENOERR 0x00 /* command successful */ #define MT9M114_SYS_STATE_SET_RESULTEINVAL 0x0C /* invalid configuration */ #define MT9M114_SYS_STATE_SET_RESULTENOSPC 0x0D /* resource not available */ #define MT9M114_OUTPUT_FORMAT_SWAP_RB (1 << 0) #define MT9M114_OUTPUT_FORMAT_SWAP_BYTES (1 << 1) #define MT9M114_OUTPUT_FORMAT_MONO (1 << 2) #define MT9M114_OUTPUT_FORMAT_BT656 (1 << 3) #define MT9M114_OUTPUT_FORMAT_BT656_FIXED (1 << 4) #define MT9M114_OUTPUT_FORMAT_YUV (0 << 8) #define MT9M114_OUTPUT_FORMAT_RGB (1 << 8) #define MT9M114_OUTPUT_FORMAT_BAYER (2 << 8) #define MT9M114_OUTPUT_FORMAT_RAW_BAYER_10 (0 << 10) #define MT9M114_OUTPUT_FORMAT_RAW_BAYER_10_PRE (1 << 10) #define MT9M114_OUTPUT_FORMAT_RAW_BAYER_10_POST (2 << 10) #define MT9M114_OUTPUT_FORMAT_PROCESSED_BAYER (3 << 10) #define MT9M114_OUTPUT_FORMAT_RGB565 (0 << 12) #define MT9M114_OUTPUT_FORMAT_RGB555 (1 << 12) #define MT9M114_OUTPUT_FORMAT_XRGB444 (2 << 12) #define MT9M114_OUTPUT_FORMAT_RGB444X (3 << 12) #define MT9M114_SENSOR_CONTROL_READ_MODE_HMIRROR (0x1) #define MT9M114_SENSOR_CONTROL_READ_MODE_VFLIP (0x2) #define MT9M114_SENSOR_CONTROL_READ_MODE_HBIN_MASK (0x30) #define MT9M114_SENSOR_CONTROL_READ_MODE_HBIN (0x30) #define MT9M114_SENSOR_CONTROL_READ_MODE_VBIN_MASK (0x300) #define MT9M114_SENSOR_CONTROL_READ_MODE_VBIN (0x300) #ifdef __cplusplus extern "C" { #endif typedef struct { uint16_t reg; /* 16bit reg address */ uint8_t size; /* reg size in byte */ uint32_t value; /* reg value */ } mt9m114_reg_t; /*! * @brief MT9M114 read register. * * @param[in] context camera_operate_context. * @param[in] reg reg address(16 bits) * @param[in] reg_size reg size in bytes * @param[out] value reg data from device * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_read_register(camera_context_t *context, uint32_t reg, uint32_t reg_size, void *value); /*! * @brief MT9M114 write register. * * @param[in] context camera_operate_context. * @param[in] reg reg address(16 bits) * @param[in] reg_size reg size in bytes * @param[in] value reg data to device * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_write_register(camera_context_t *context, uint32_t reg, uint32_t reg_size, uint32_t value); /*! * @brief MT9M114 modify register. * * @param[in] context camera_operate_context. * @param[in] reg reg address(16 bits) * @param[in] reg_size reg size in bytes * @param[in] mask bits can be modified * @param[in] value value should be set * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_modify_register(camera_context_t *context, uint32_t reg, uint32_t reg_size, uint32_t mask, uint32_t value); /*! * @brief MT9M114 multiwrite registers. * * @param[in] context camera_operate_context. * @param[in] regs pointer to array of mt9m114_reg_t, include reg addr, reg size and value * @param[in] num array size of [regs] * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_multiwrite(camera_context_t *context, const mt9m114_reg_t regs[], uint32_t num); /*! * @brief MT9M114 check chipid. * * @param[in] context camera_operate_context. * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_check_chip_id(camera_context_t *context); /*! * @brief MT9M114 set next state and switch to it. * * @param[in] context camera_operate_context. * @param[in] next_state next device state. * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_setstate(camera_context_t *context, uint16_t next_state); /*! * @brief MT9M114 get current state. * * @param[in] context camera_operate_context. * @param[out] state current device state. * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_get_current_state(camera_context_t *context, uint8_t *state); /*! * @brief MT9M114 soft reset. * * @param[in] context camera_operate_context. * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_software_reset(camera_context_t *context); /*! * @brief MT9M114 set pixformat. * * @param[in] context camera_operate_context. * @param[in] pixformat pixformat. * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_set_pixformat(camera_context_t *context, display_pixel_format_t pixformat); /*! * @brief MT9M114 set framerate. * * @param[in] context camera_operate_context. * @param[in] framerate framerate. * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_set_framerate(camera_context_t *context, int framerate); /*! * @brief MT9M114 set brightness. * * @param[in] context camera_operate_context. * @param[in] level brightness. * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_set_brightness(camera_context_t *context, int level); /*! * @brief MT9M114 start to transfer image data. * * @param[in] context camera_operate_context. * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_start(camera_context_t *context); /*! * @brief MT9M114 stop working and enter SUSPEND mode. * * @param[in] context camera_operate_context. * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_stop(camera_context_t *context); /*! * @brief MT9M114 enable or disable MONO mode. * * @param[in] context camera_operate_context. * @param[in] enable enable or disable mono. * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_enable_mono(camera_context_t *context, bool enable); /*! * @brief MT9M114 initialization. * * @param[in] context camera_operate_context. * * @retval status_success if success. * @retval status_fail if fail. */ hpm_stat_t mt9m114_init(camera_context_t *context, camera_config_t *camera_config); #ifdef __cplusplus } #endif /** * @} * */ #endif /* HPM_MT9M114_H */