You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

532 lines
20 KiB

/*
* iav_vin_common.h
*
* History:
* 2013/09/04 - [Cao Rongrong] Created file
*
* Copyright (c) 2016 Ambarella, Inc.
*
* This file and its contents ("Software") are protected by intellectual
* property rights including, without limitation, U.S. and/or foreign
* copyrights. This Software is also the confidential and proprietary
* information of Ambarella, Inc. and its licensors. You may not use, reproduce,
* disclose, distribute, modify, or otherwise prepare derivative works of this
* Software or any portion thereof except pursuant to a signed license agreement
* or nondisclosure agreement with Ambarella, Inc. or its authorized affiliates.
* In the absence of such an agreement, you agree to promptly notify and return
* this Software to Ambarella, Inc.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
* MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL AMBARELLA, INC. OR ITS AFFILIATES BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; COMPUTER FAILURE OR MALFUNCTION; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef __IAV_VIN_COMMON_H__
#define __IAV_VIN_COMMON_H__
/*! @file iav_vin_common.h
* @brief This file defines IAV Video Input Configuration structures.
*/
#ifdef __cplusplus
extern "C" {
#endif
/* ==========================================================================*/
#include"iav_common.h"
/*! @addtogroup iav-ioctl-vin-helper
* @{
*/
/* ==========================================================================*/
#define AMBA_VINDEV_MAX_NUM 32
#define AMBA_VINC_MAX_NUM 8
/* ==========================================================================*/
enum vindev_type {
VINDEV_TYPE_SENSOR = 0, /*!< 0 */
VINDEV_TYPE_DECODER = 1, /*!< 1 */
};
enum vindev_subtype {
VINDEV_SUBTYPE_CMOS = 0x000, /*!< 0x000 */
VINDEV_SUBTYPE_CCD = 0x001, /*!< 0x001 */
VINDEV_SUBTYPE_CVBS = 0x100, /*!< 0x100 */
VINDEV_SUBTYPE_SVIDEO = 0x101, /*!< 0x101 */
VINDEV_SUBTYPE_YPBPR = 0x102, /*!< 0x102 */
VINDEV_SUBTYPE_HDMI = 0x103, /*!< 0x103 */
VINDEV_SUBTYPE_VGA = 0x104, /*!< 0x104 */
VINDEV_SUBTYPE_SDI = 0x105, /*!< 0x105 */
};
enum amba_vindev_mirror_pattern_e {
VINDEV_MIRROR_NONE = 0, /*!< 0 */
VINDEV_MIRROR_VERTICALLY = 1, /*!< 1 */
VINDEV_MIRROR_HORRIZONTALLY = 2, /*!< 2 */
VINDEV_MIRROR_HORRIZONTALLY_VERTICALLY = 3, /*!< 3 */
VINDEV_MIRROR_AUTO = 255, /*!< 255 */
};
enum amba_vindev_bayer_pattern_e {
VINDEV_BAYER_PATTERN_RG = 0, /*!< 0 */
VINDEV_BAYER_PATTERN_BG = 1, /*!< 1 */
VINDEV_BAYER_PATTERN_GR = 2, /*!< 2 */
VINDEV_BAYER_PATTERN_GB = 3, /*!< 3 */
/* RGB/IR CFA, IR instead of B */
VINDEV_BAYER_PATTERN_RG_GI = 4, /*!< 4 */
VINDEV_BAYER_PATTERN_IG_GR = 5, /*!< 5 */
VINDEV_BAYER_PATTERN_GR_IG = 6, /*!< 6 */
VINDEV_BAYER_PATTERN_GI_RG = 7, /*!< 7 */
/* RGB/IR CFA, IR instead of R */
VINDEV_BAYER_PATTERN_BG_GI = 8, /*!< 8 */
VINDEV_BAYER_PATTERN_IG_GB = 9, /*!< 9 */
VINDEV_BAYER_PATTERN_GB_IG = 10, /*!< 10 */
VINDEV_BAYER_PATTERN_GI_BG = 11, /*!< 11 */
/* RCCB CFA */
VINDEV_BAYER_PATTERN_RCCB = 12, /*!< 12 */
VINDEV_BAYER_PATTERN_BCCR = 13, /*!< 13 */
VINDEV_BAYER_PATTERN_CRBC = 14, /*!< 14 */
VINDEV_BAYER_PATTERN_CBRC = 15, /*!< 15 */
/* RCCC CFA */
VINDEV_BAYER_PATTERN_RCCC = 16, /*!< 16 */
VINDEV_BAYER_PATTERN_CCCR = 17, /*!< 17 */
VINDEV_BAYER_PATTERN_CRCC = 18, /*!< 18 */
VINDEV_BAYER_PATTERN_CCRC = 19, /*!< 19 */
/* MONO CFA */
VINDEV_BAYER_PATTERN_MONO = 254, /*!< 254 */
VINDEV_BAYER_PATTERN_AUTO = 255, /*!< 255 */
};
enum vindev_reg_context {
VINDEV_REG_CONTEXT_A = 0, /*!< 0 */
VINDEV_REG_CONTEXT_B = 1, /*!< 1 */
VINDEV_REG_CONTEXT_C = 2, /*!< 2 */
VINDEV_REG_CONTEXT_D = 3, /*!< 3 */
VINDEV_REG_CONTEXT_NUM = 4, /*!< 4 */
};
enum sensor_list {
/* Onsemi Sensor */
SENSOR_MT9J001 = 0x00000000, /*!< 0x00000000 */
SENSOR_MT9M033 = 0x00000001, /*!< 0x00000001 */
SENSOR_MT9P001 = 0x00000002, /*!< 0x00000002 */
SENSOR_MT9V136 = 0x00000003, /*!< 0x00000003 */
SENSOR_MT9T002 = 0x00000004, /*!< 0x00000004 */
SENSOR_AR0331 = 0x00000005, /*!< 0x00000005 */
SENSOR_AR0130 = 0x00000006, /*!< 0x00000006 */
SENSOR_AR0141 = 0x00000007, /*!< 0x00000007 */
SENSOR_AR0230 = 0x00000008, /*!< 0x00000008 */
SENSOR_AR0237 = 0x00000009, /*!< 0x00000009 */
SENSOR_AR0239 = 0x0000000A, /*!< 0x0000000A */
SENSOR_AR0521 = 0x0000000B, /*!< 0x0000000B */
SENSOR_AR0144 = 0x0000000C, /*!< 0x0000000C */
SENSOR_AR0144_RGB = 0x0000000D, /*!< 0x0000000D */
SENSOR_AR0143 = 0x0000000E, /*!< 0x0000000E */
SENSOR_AR0221 = 0x0000000F, /*!< 0x0000000F */
SENSOR_AR0233 = 0x00000010, /*!< 0x00000010 */
SENSOR_AR0231 = 0x00000011, /*!< 0x00000011 */
SENSOR_AR0132 = 0x00000012, /*!< 0x00000012 */
SENSOR_AR0237_RGBIR = 0x00000013, /*!< 0x00000013 */
SENSOR_AR0138 = 0x00000014, /*!< 0x00000014 */
SENSOR_AR0431 = 0x00000015, /*!< 0x00000015 */
SENSOR_AR0135 = 0x00000016, /*!< 0x00000016 */
SENSOR_AR0323 = 0x00000017, /*!< 0x00000017 */
SENSOR_AR0220 = 0x00000018, /*!< 0x00000018 */
/* OV Sensor */
SENSOR_OV10620 = 0x00001000, /*!< 0x00001000 */
SENSOR_OV14810 = 0x00001001, /*!< 0x00001001 */
SENSOR_OV2710 = 0x00001002, /*!< 0x00001002 */
SENSOR_OV5653 = 0x00001003, /*!< 0x00001003 */
SENSOR_OV7720 = 0x00001004, /*!< 0x00001004 */
SENSOR_OV7725 = 0x00001005, /*!< 0x00001005 */
SENSOR_OV7740 = 0x00001006, /*!< 0x00001006 */
SENSOR_OV9710 = 0x00001007, /*!< 0x00001007 */
SENSOR_OV10630 = 0x00001008, /*!< 0x00001008 */
SENSOR_OV9726 = 0x00001009, /*!< 0x00001009 */
SENSOR_OV4689 = 0x0000100A, /*!< 0x0000100A */
SENSOR_OV9718 = 0x0000100B, /*!< 0x0000100B */
SENSOR_OV5658 = 0x0000100C, /*!< 0x0000100C */
SENSOR_OV9750 = 0x0000100D, /*!< 0x0000100D */
SENSOR_OV9732 = 0x0000100E, /*!< 0x0000100E */
SENSOR_OV2718 = 0x0000100F, /*!< 0x0000100F */
SENSOR_OV7251 = 0x00001010, /*!< 0x00001010 */
SENSOR_OV10823 = 0x00001011, /*!< 0x00001011 */
SENSOR_OV9281 = 0x00001012, /*!< 0x00001012 */
SENSOR_OS08A10 = 0x00001013, /*!< 0x00001013 */
SENSOR_OV2732 = 0x00001014, /*!< 0x00001014 */
SENSOR_OV2735 = 0x00001015, /*!< 0x00001015 */
SENSOR_OV2770 = 0x00001016, /*!< 0x00001016*/
SENSOR_OS05A10 = 0x00001017, /*!< 0x00001017 */
SENSOR_OS02A1Q = 0x00001018, /*!< 0x00001018 */
SENSOR_OV8856 = 0x00001019, /*!< 0x00001019 */
SENSOR_OV10640 = 0x0000101A, /*!< 0x0000101A */
SENSOR_OX01A10 = 0x0000101B, /*!< 0x0000101B */
SENSOR_OV9284 = 0x0000101C, /*!< 0x0000101C */
SENSOR_OVM7690 = 0x0000101D, /*!< 0x0000101D */
SENSOR_OV2775 = 0x0000101E, /*!< 0x0000101E*/
SENSOR_OV9755 = 0x0000101F, /*!< 0x0000101F */
SENSOR_OS02C10 = 0x00001020, /*!< 0x00001020 */
SENSOR_OS04A10 = 0x00001021, /*!< 0x00001021 */
/* Samsung Sensor */
SENSOR_S5K3E2FX = 0x00002000, /*!< 0x00002000 */
SENSOR_S5K4AWFX = 0x00002001, /*!< 0x00002001 */
SENSOR_S5K5B3GX = 0x00002002, /*!< 0x00002002 */
/* Sony Sensor */
SENSOR_IMX035 = 0x00003000, /*!< 0x00003000 */
SENSOR_IMX036 = 0x00003001, /*!< 0x00003001 */
SENSOR_IMX072 = 0x00003002, /*!< 0x00003002 */
SENSOR_IMX122 = 0x00003003, /*!< 0x00003003 */
SENSOR_IMX121 = 0x00003004, /*!< 0x00003004 */
SENSOR_IMX104 = 0x00003005, /*!< 0x00003005 */
SENSOR_IMX136 = 0x00003006, /*!< 0x00003006 */
SENSOR_IMX105 = 0x00003007, /*!< 0x00003007 */
SENSOR_IMX172 = 0x00003008, /*!< 0x00003008 */
SENSOR_IMX178 = 0x00003009, /*!< 0x00003009 */
SENSOR_IMX123 = 0x0000300A, /*!< 0x0000300A */
SENSOR_IMX123_DCG = 0x0000300B, /*!< 0x0000300B */
SENSOR_IMX322 = 0x0000300C, /*!< 0x0000300C */
SENSOR_IMX124 = 0x0000300D, /*!< 0x0000300D */
SENSOR_IMX224 = 0x0000300E, /*!< 0x0000300E */
SENSOR_IMX174 = 0x0000300F, /*!< 0x0000300F */
SENSOR_IMX291 = 0x00003010, /*!< 0x00003010 */
SENSOR_IMX185 = 0x00003011, /*!< 0x00003011 */
SENSOR_IMX226 = 0x00003012, /*!< 0x00003012 */
SENSOR_IMX290 = 0x00003013, /*!< 0x00003013 */
SENSOR_IMX274 = 0x00003014, /*!< 0x00003014 */
SENSOR_IMX377 = 0x00003015, /*!< 0x00003015 */
SENSOR_IMX183 = 0x00003016, /*!< 0x00003016 */
SENSOR_IMX277 = 0x00003017, /*!< 0x00003017 */
SENSOR_IMX408 = 0x00003018, /*!< 0x00003018 */
SENSOR_IMX117 = 0x00003019, /*!< 0x00003019 */
SENSOR_IMX335 = 0x0000301A, /*!< 0x0000301A */
SENSOR_IMX577 = 0x0000301B, /*!< 0x0000301B */
SENSOR_IMX390 = 0x0000301C, /*!< 0x0000301C */
SENSOR_IMX415 = 0x0000301D, /*!< 0x0000301D */
SENSOR_IMX412 = 0x0000301E, /*!< 0x0000301E */
SENSOR_IMX265 = 0x0000301F, /*!< 0x0000301F */
SENSOR_IMX250 = 0x00003020, /*!< 0x00003020 */
SENSOR_IMX299 = 0x00003021, /*!< 0x00003021 */
SENSOR_IMX326 = 0x00003022, /*!< 0x00003022 */
SENSOR_IMX307 = 0x00003023, /*!< 0x00003023 */
SENSOR_IMX385 = 0x00003024, /*!< 0x00003024 */
SENSOR_IMX334 = 0x00003025, /*!< 0x00003025 */
SENSOR_IMX327 = 0x00003026, /*!< 0x00003026 */
SENSOR_IMX264 = 0x00003027, /*!< 0x00003027 */
SENSOR_IMX490 = 0x00003028, /*!< 0x00003028 */
/* Panasonic Sensor */
SENSOR_MN34041PL = 0x00004000, /*!< 0x00004000 */
SENSOR_MN34031PL = 0x00004001, /*!< 0x00004001 */
SENSOR_MN34220PL = 0x00004002, /*!< 0x00004002 */
SENSOR_MN34210PL = 0x00004003, /*!< 0x00004003 */
SENSOR_MN34227PL = 0x00004004, /*!< 0x00004004 */
SENSOR_MN34420PL = 0x00004005, /*!< 0x00004005 */
SENSOR_MN34422PL = 0x00004006, /*!< 0x00004006 */
SENSOR_MN34424PL = 0x00004007, /*!< 0x00004007 */
/* altera fpga vin */
SENSOR_ALTERA_FPGA = 0x00005000, /*!< 0x00005000 */
/* Dummy Sensor */
SENSOR_AMBDS = 0x00006000, /*!< 0x00006000 */
/* Cista Sensor */
SENSOR_C2390 = 0x00007000, /*!< 0x00007000 */
/* Brillnics Sensor */
SENSOR_BRV0500 = 0x00008000, /*!< 0x00008000 */
SENSOR_BRV0200 = 0x00008001, /*!< 0x00008001 */
/* SOI Sensor */
SENSOR_JX_F22 = 0x00009000, /*!< 0x00009000 */
SENSOR_JX_K02 = 0x00009001, /*!< 0x00009001 */
SENSOR_JX_F23 = 0x00009002, /*!< 0x00009002 */
/* Smartsens Sensor */
SENSOR_SC130GS = 0x0000A000, /*!< 0x0000A000 */
SENSOR_SC2135 = 0x0000A001, /*!< 0x0000A001 */
SENSOR_SC2235 = 0x0000A002, /*!< 0x0000A002 */
SENSOR_SC5238 = 0x0000A003, /*!< 0x0000A003 */
SENSOR_SC5300 = 0x0000A004, /*!< 0x0000A004 */
SENSOR_SC2310 = 0x0000A005, /*!< 0x0000A005 */
/* Himax sensor */
SENSOR_HM2140 = 0x0000B000, /*!< 0x0000B000 */
SENSOR_HM5532 = 0x0000B001, /*!< 0x0000B001 */
/* Prime sensor */
SENSOR_PS5270 = 0x0000C000, /*!< 0x0000C000 */
SENSOR_PS5250 = 0x0000C001, /*!< 0x0000C001 */
SENSOR_PS5260 = 0x0000C002, /*!< 0x0000C002 */
/* Customized Sensor */
SENSOR_CUSTOM_FIRST = 0x00010000, /*!< 0x00010000 */
/* ADI Decoder */
DECODER_ADV7403 = 0x80000000, /*!< 0x80000000 */
DECODER_ADV7441A = 0x80000001, /*!< 0x80000001 */
DECODER_ADV7443 = 0x80000002, /*!< 0x80000002 */
/* RICHNEX Decoder */
DECODER_RN6240 = 0x80001000, /*!< 0x80001000 */
/* TI Decoder */
DECODER_TVP5150 = 0x80002000, /*!< 0x80002000 */
/* Techwell Decoder */
DECODER_TW2864 = 0x80003000, /*!< 0x80003000 */
DECODER_TW9910 = 0x80003001, /*!< 0x80003001 */
DECODER_GS2970 = 0x80004000, /*!< 0x80004000 */
/* Toshiba Decoder */
DECODER_TC358840 = 0x80005000, /*!< 0x80005000 */
/* Lontium Decoder */
DECODER_LT6911 = 0x80006000, /*!< 0x80006000 */
/* Dummy Decoder */
DECODER_AMBDD = 0x8FFFFFFF, /*!< 0x8FFFFFFF */
};
enum vindev_set_type {
VINDEV_SET_AGC_ONLY = 0, /*!< 0 */
VINDEV_SET_SHT_ONLY = 1, /*!< 1 */
VINDEV_SET_AGC_SHT = 2, /*!< 2 */
};
/*! @} */ /* End of iav-ioctl-vin-helper */
/* ==========================================================================*/
/*! @addtogroup iav-ioctl-vin-struct
* @{
*/
struct vindev_devinfo {
unsigned int vsrc_id; /*!< Source ID */
unsigned int vinc_id; /*!< VIN controller ID */
char name[32]; /*!< The name of the VIN source */
unsigned int dev_type; /*!< The type of the VIN source, @sa vindev_type */
unsigned int sub_type; /*!< VIN source sub type, @sa vindev_subtype */
unsigned int sensor_id; /*!< Sensor ID */
unsigned int vsrc_num; /*!< Total VIN Source number registered */
unsigned int vsrc_ctx_switch_cap : 1; /*!< Possibility to support sensor context switch */
unsigned int reserved0 : 31;
};
struct vindev_mode {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int video_mode; /*!< Video mode, @sa amba_video_mode */
unsigned int hdr_mode; /*!< HDR mode, @sa amba_video_hdr_mode */
unsigned int bits; /*!< Bits depth */
unsigned int vsrc_ctx_auto_switch; /*!< Enable sensor context auto switch */
};
struct vindev_fps {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int fps; /*!< Video frame rate, @sa amba_video_fps */
};
struct vindev_video_info {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
struct amba_video_info info; /*!< Video infomation of the current VIN source */
};
struct vindev_shutter {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int vsrc_ctx; /*!< Context ID of current Sensor */
unsigned int shutter; /*!< The parameter shutter_time is expressed in Q9 format, which is 512000000*time_in_sec.
For example, 1/30 sec can be expressed as 512000000/30 = 17066667 = 0x1046aab */
};
struct vindev_shutter_row {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int shutter_row; /*!< Shutter Row */
};
struct vindev_agc_shutter {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int vsrc_ctx; /*!< Context ID of current Sensor */
unsigned int shutter_row; /*!< Shutter Row */
unsigned int agc_idx; /*!< AGC index of the current VIN source */
unsigned int mode; /*!< @sa vindev_set_type */
};
struct vindev_agc {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int vsrc_ctx; /*!< Context ID of current Sensor */
unsigned int agc; /*!< AGC value of the current VIN source */
unsigned int agc_max; /*!< AGC max value of the current VIN source */
unsigned int agc_min; /*!< AGC min value of the current VIN source */
unsigned int agc_step; /*!< AGC step of the current VIN source */
unsigned int wdr_again_idx_min; /*!< Minimum index of analog gain for sensor WDR mode */
unsigned int wdr_again_idx_max; /*!< Maximum index of analog gain for sensor WDR mode */
unsigned int wdr_dgain_idx_min; /*!< Minimum index of digital gain for sensor WDR mode */
unsigned int wdr_dgain_idx_max; /*!< Maximum index of digital gain for sensor WDR mode */
};
struct vindev_mirror {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int pattern; /*!< Mirror pattern for the sensor, @sa amba_vindev_mirror_pattern_e */
unsigned int bayer_pattern; /*!< Bayer pattern for the sensor, @sa amba_vindev_bayer_pattern_e */
};
struct vindev_reg {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int addr; /*!< Register DRAM address */
unsigned int data; /*!< Register Value */
};
struct vindev_eisinfo {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int vb_time; /*!< Vb time, ns */
unsigned short sensor_cell_width; /*!< Sensor cell width, um * 100 */
unsigned short sensor_cell_height; /*!< Sensor cell height, um * 100*/
unsigned char column_bin; /*!< Column of binning pixels */
unsigned char row_bin; /*!< Row of binning pixels */
};
struct vindev_wdr_gain_info {
unsigned int vsrc_id;
unsigned int vsrc_ctx;
unsigned int gain_idx;
};
struct vindev_aaa_info {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int sensor_id; /*!< Sensor ID of the current VIN */
unsigned int bayer_pattern; /*!< Bayer pattern of current VIN */
unsigned int agc_max; /*!< AGC max value of the current VIN source */
unsigned int agc_min; /*!< AGC min value of the current VIN source */
unsigned int agc_step; /*!< The minimum AGC step unit */
unsigned int wdr_again_idx_min; /*!< Minimum index of analog gain for sensor WDR mode */
unsigned int wdr_again_idx_max; /*!< Maximum index of analog gain for sensor WDR mode */
unsigned int wdr_dgain_idx_min; /*!< Minimum index of digital gain for sensor WDR mode */
unsigned int wdr_dgain_idx_max; /*!< Maximum index of digital gain for sensor WDR mode */
unsigned int hdr_mode; /*!< HDR mode of current VIN */
unsigned int hdr_long_offset; /*!< Line offset of the longest exposure frame */
unsigned int hdr_short1_offset; /*!< Line offset of the medium exposure frame */
unsigned int hdr_short2_offset; /*!< Line offset of the above medium exposure frame */
unsigned int hdr_short3_offset; /*!< Line offset of the shortest exposure frame */
unsigned int pixel_size; /*!< Pixel size in micro meter of the current sensor */
unsigned int dual_gain_mode; /*!< Flag to indicate if the current VIN supports the dual gain mode */
unsigned int line_time; /*!< The time duration of each capture line */
unsigned int vb_time; /*!< The time duration of video blank */
unsigned int ll_mode; /*!< ll mode */
unsigned int sht0_max; /*!< The maximum shutter value */
unsigned int sht1_max; /*!< The maximum shutter value */
unsigned int sht2_max; /*!< The maximum shutter value */
unsigned int sht0_min; /*!< The minimum shutter value */
unsigned int sht1_min; /*!< The minimum shutter value */
unsigned int sht2_min; /*!< The minimum shutter value */
unsigned int wdr0_ratio; /*!< long:short1 ratio */
unsigned int wdr1_ratio; /*!< short1:short2 ratio */
unsigned int wdr2_ratio; /*!< short2:short3 ratio */
};
struct vindev_dgain_ratio {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int vsrc_ctx; /*!< Context ID of current Sensor */
unsigned int r_ratio; /*!< Value of r_ratio */
unsigned int gr_ratio; /*!< Value of gr_ratio */
unsigned int gb_ratio; /*!< Value of gb_ratio */
unsigned int b_ratio; /*!< Value of b_ratio */
};
struct vindev_chip_status {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
int temperature; /*!< Chip temperature */
int access_status; /*!< Access status */
};
/*! @} */ /* End of iav-ioctl-vin-struct */
/*! @addtogroup iav-ioctl-vin-helper */
#define VINDEV_WDR_CFG_DELAY_MAX 8
/*! @addtogroup iav-ioctl-vin-struct
* @{
*/
struct vindev_wdr_gp_s {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int vsrc_ctx; /*!< Context ID of current Sensor */
unsigned int l;
unsigned int s1;
unsigned int s2;
unsigned int s3;
unsigned int s1_offset;
unsigned int s2_offset;
};
struct vindev_wdr_gp_info {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int vsrc_ctx; /*!< Context ID of current Sensor */
struct vindev_wdr_gp_s shutter_gp; /*!< Shutter */
struct vindev_wdr_gp_s again_gp; /*!< Again */
struct vindev_wdr_gp_s dgain_gp; /*!< Dgain */
struct vindev_wdr_gp_s rhs_gp; /*!< RHS */
};
/*! @} */ /* End of iav-ioctl-vin-struct */
/*! @addtogroup iav-ioctl-vin-helper
* @{
*/
#define VINDEV_SHT_AGC_DELAY_MAX 8
#define VINDEV_SHT_AGC_DELAY_INVALID VINDEV_SHT_AGC_DELAY_MAX
#define VINDEV_SHT_AGC_PARAM_NUM 4
/*! @} */ /* End of iav-ioctl-vin-struct */
/*! @addtogroup iav-ioctl-vin-struct
* @{
*/
struct vindev_sht_agc_seq {
unsigned short vsrc_id;
unsigned short max_exposure_num;
unsigned int shutter_delays[VINDEV_SHT_AGC_PARAM_NUM]; // unit: vsync
unsigned int again_delays[VINDEV_SHT_AGC_PARAM_NUM]; // unit: vsync
unsigned int dgain_delays[VINDEV_SHT_AGC_PARAM_NUM]; // unit: vsync
};
struct vindev_ae_check {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
char ae_check_flag; /*!< AE check flag */
};
struct vindev_stream_mode {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
char stream_mode; /*!< steam mode */
};
struct vindev_low_light_info {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
unsigned int ll_mode; /*!< Low light mode */
};
struct vindev_switch_vsrc_ctx {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
};
struct vindev_lock_vsrc_ctx_frame_cnt {
unsigned int vsrc_id; /*!< Source ID of the current VIN */
};
/*! @} */ /* End of iav-ioctl-vin-struct */
#ifdef __cplusplus
}
#endif
#endif //__IAV_VIN_IOCTL_H__