blob: 2d7c52c3dcb6cbcea5967176f5787ef9063c415d [file] [log] [blame]
/*
* Copyright (C) 2015 MediaTek Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef _KD_IMGSENSOR_DATA_H
#define _KD_IMGSENSOR_DATA_H
/* #include "../camera/kd_camera_hw.h" */
#include "kd_camera_feature.h"
#define SENSOR_CLOCK_POLARITY_HIGH 0
#define SENSOR_CLOCK_POLARITY_LOW 1
/* #define CONFIG_COMPAT */
#ifdef CONFIG_COMPAT
/* 64 bit */
#include <linux/fs.h>
#include <linux/compat.h>
#endif
/*************************************************
*
**************************************************/
/* In KERNEL mode,SHOULD be sync with mediatype.h */
/* CHECK before remove or modify */
/* #undef BOOL */
/* #define BOOL signed int */
#ifndef _MEDIA_TYPES_H
typedef unsigned char MUINT8;
typedef unsigned short MUINT16;
typedef unsigned int MUINT32;
typedef signed char MINT8;
typedef signed short MINT16;
typedef signed int MINT32;
#endif
/*******************************************************************************
*
********************************************************************************/
/* */
/* msdk_isp_exp.h */
/* */
#define BASEGAIN 0x40
#define BASEGAIN_SHIFT 6
typedef enum {
ISP_DRIVING_2MA = 0,
ISP_DRIVING_4MA,
ISP_DRIVING_6MA,
ISP_DRIVING_8MA
} ISP_DRIVING_CURRENT_ENUM;
enum {
IMAGE_NORMAL = 0,
IMAGE_H_MIRROR,
IMAGE_V_MIRROR,
IMAGE_HV_MIRROR
};
typedef enum {
MSDK_SCENARIO_ID_CAMERA_PREVIEW = 0,
MSDK_SCENARIO_ID_CAMERA_CAPTURE_JPEG,
MSDK_SCENARIO_ID_VIDEO_PREVIEW,
MSDK_SCENARIO_ID_HIGH_SPEED_VIDEO,
MSDK_SCENARIO_ID_CAMERA_ZSD,
MSDK_SCENARIO_ID_CAMERA_3D_PREVIEW,
MSDK_SCENARIO_ID_CAMERA_3D_CAPTURE,
MSDK_SCENARIO_ID_CAMERA_3D_VIDEO,
MSDK_SCENARIO_ID_TV_OUT,
MSDK_SCENARIO_ID_SLIM_VIDEO,
MSDK_SCENARIO_ID_CUSTOM1,
MSDK_SCENARIO_ID_CUSTOM2,
MSDK_SCENARIO_ID_CUSTOM3,
MSDK_SCENARIO_ID_CUSTOM4,
MSDK_SCENARIO_ID_CUSTOM5,
MSDK_SCENARIO_ID_MAX,
} MSDK_SCENARIO_ID_ENUM;
typedef enum {
MSDK_CAMERA_OPERATION_NORMAL_MODE = 0,
MSDK_CAMERA_OPERATION_META_MODE
} ACDK_CAMERA_OPERATION_MODE_ENUM;
/*******************************************************************************
*
********************************************************************************/
/* */
#define MAX_NUM_OF_SUPPORT_SENSOR 16
/* */
#define SENSOR_CLOCK_POLARITY_HIGH 0
#define SENSOR_CLOCK_POLARITY_LOW 1
/* */
#define LENS_DRIVER_ID_DO_NOT_CARE 0xFFFFFFFF
#define SENSOR_DOES_NOT_EXIST 0x00FFFFFF
#define SENSOR_DOES_NOT_KNOW 0xFFFFFFFF
#define SENSOR_FEATURE_START 3000
typedef enum {
SENSOR_FEATURE_BEGIN = SENSOR_FEATURE_START,
SENSOR_FEATURE_GET_RESOLUTION,
SENSOR_FEATURE_GET_PERIOD,
SENSOR_FEATURE_GET_PIXEL_CLOCK_FREQ,
SENSOR_FEATURE_SET_ESHUTTER,
SENSOR_FEATURE_SET_NIGHTMODE,
SENSOR_FEATURE_SET_GAIN,
SENSOR_FEATURE_SET_GAIN_AND_ESHUTTER,
SENSOR_FEATURE_SET_FLASHLIGHT,
SENSOR_FEATURE_SET_ISP_MASTER_CLOCK_FREQ,
SENSOR_FEATURE_SET_REGISTER,
SENSOR_FEATURE_GET_REGISTER,
SENSOR_FEATURE_SET_CCT_REGISTER,
SENSOR_FEATURE_GET_CCT_REGISTER,
SENSOR_FEATURE_SET_ENG_REGISTER,
SENSOR_FEATURE_GET_ENG_REGISTER,
SENSOR_FEATURE_GET_REGISTER_DEFAULT,
SENSOR_FEATURE_GET_CONFIG_PARA,
SENSOR_FEATURE_CAMERA_PARA_TO_SENSOR,
SENSOR_FEATURE_SENSOR_TO_CAMERA_PARA,
SENSOR_FEATURE_GET_GROUP_COUNT,
SENSOR_FEATURE_GET_GROUP_INFO,
SENSOR_FEATURE_GET_ITEM_INFO,
SENSOR_FEATURE_SET_ITEM_INFO,
SENSOR_FEATURE_GET_ENG_INFO,
SENSOR_FEATURE_GET_LENS_DRIVER_ID,
SENSOR_FEATURE_SET_YUV_CMD,
SENSOR_FEATURE_SET_VIDEO_MODE,
SENSOR_FEATURE_SET_TARGET_FRAME_RATE,
SENSOR_FEATURE_SET_CALIBRATION_DATA,
SENSOR_FEATURE_SET_SENSOR_SYNC,
SENSOR_FEATURE_INITIALIZE_AF,
SENSOR_FEATURE_CONSTANT_AF,
SENSOR_FEATURE_INFINITY_AF,
SENSOR_FEATURE_MOVE_FOCUS_LENS,
SENSOR_FEATURE_GET_AF_STATUS,
SENSOR_FEATURE_GET_AE_STATUS,
SENSOR_FEATURE_GET_AWB_STATUS,
SENSOR_FEATURE_GET_AF_INF,
SENSOR_FEATURE_GET_AF_MACRO,
SENSOR_FEATURE_CHECK_SENSOR_ID,
SENSOR_FEATURE_SET_AUTO_FLICKER_MODE,
SENSOR_FEATURE_SET_TEST_PATTERN,
SENSOR_FEATURE_SET_SOFTWARE_PWDN,
SENSOR_FEATURE_SINGLE_FOCUS_MODE,
SENSOR_FEATURE_CANCEL_AF,
SENSOR_FEATURE_SET_AF_WINDOW,
SENSOR_FEATURE_GET_EV_AWB_REF,
SENSOR_FEATURE_GET_SHUTTER_GAIN_AWB_GAIN,
SENSOR_FEATURE_GET_AF_MAX_NUM_FOCUS_AREAS,
SENSOR_FEATURE_GET_AE_MAX_NUM_METERING_AREAS,
SENSOR_FEATURE_SET_AE_WINDOW,
SENSOR_FEATURE_GET_EXIF_INFO,
SENSOR_FEATURE_GET_DELAY_INFO,
SENSOR_FEATURE_SET_SLAVE_I2C_ID,
SENSOR_FEATURE_SUSPEND,
SENSOR_FEATURE_RESUME,
SENSOR_FEATURE_SET_MAX_FRAME_RATE_BY_SCENARIO,
SENSOR_FEATURE_GET_DEFAULT_FRAME_RATE_BY_SCENARIO,
SENSOR_FEATURE_GET_AE_AWB_LOCK_INFO,
SENSOR_FEATURE_AUTOTEST_CMD,
SENSOR_FEATURE_GET_TEST_PATTERN_CHECKSUM_VALUE,
SENSOR_FEATURE_GET_TEMPERATURE_VALUE,
SENSOR_FEATURE_GET_SENSOR_CURRENT_TEMPERATURE,
SENSOR_FEATURE_GET_AE_FLASHLIGHT_INFO,
SENSOR_FEATURE_GET_TRIGGER_FLASHLIGHT_INFO, /* Trigger flashlight or not */
SENSOR_FEATURE_SET_YUV_3A_CMD,
SENSOR_FEATURE_SET_N3D_I2C_STREAM_REGDATA,
SENSOR_FEATURE_SET_N3D_STOP_STREAMING,
SENSOR_FEATURE_SET_N3D_START_STREAMING,
SENSOR_FEATURE_GET_SENSOR_N3D_STREAM_TO_VSYNC_TIME,
SENSOR_FEATURE_SET_ESHUTTER_GAIN,
SENSOR_FEATURE_SET_OB_LOCK,
SENSOR_FEATURE_SET_SENSOR_OTP_AWB_CMD,
SENSOR_FEATURE_SET_SENSOR_OTP_LSC_CMD,
SENSOR_FEATURE_GET_YUV_CAPTURE_OUTPUT_JPEG,
SENSOR_FEATURE_SET_YUV_JPEG_PARA,
SENSOR_FEATURE_GET_YUV_JPEG_INFO,
SENSOR_FEATURE_SET_FRAMERATE,
SENSOR_FEATURE_SET_HDR,
SENSOR_FEATURE_GET_CROP_INFO,
SENSOR_FEATURE_GET_VC_INFO,
SENSOR_FEATURE_SET_IHDR_SHUTTER_GAIN,
SENSOR_FEATURE_SET_AWB_GAIN,
SENSOR_FEATURE_SET_MIN_MAX_FPS,
SENSOR_FEATURE_GET_PDAF_INFO,
SENSOR_FEATURE_GET_PDAF_DATA,
SENSOR_FEATURE_SET_PDFOCUS_AREA,
SENSOR_FEATURE_GET_SENSOR_PDAF_CAPACITY,
SENSOR_FEATURE_DEBUG_IMGSENSOR,
SENSOR_FEATURE_SET_HDR_SHUTTER,
SENSOR_FEATURE_SET_ISO,
SENSOR_FEATURE_SET_PDAF,
SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME,
SENSOR_FEATURE_SET_SHUTTER_BUF_MODE,
SENSOR_FEATURE_SET_GAIN_BUF_MODE,
SENSOR_FEATURE_SET_I2C_BUF_MODE_EN,
SENSOR_FEATURE_MAX
} ACDK_SENSOR_FEATURE_ENUM;
typedef enum {
SENSOR_AF_IDLE = 0,
SENSOR_AF_FOCUSING,
SENSOR_AF_FOCUSED,
SENSOR_AF_ERROR,
SENSOR_AF_SCENE_DETECTING,
SENSOR_AF_STATUS_MAX
} ACDK_SENSOR_AF_STATUS_ENUM;
typedef enum {
SENSOR_AE_IDLE = 0,
SENSOR_AE_EXPOSING,
SENSOR_AE_EXPOSED,
SENSOR_AE_ERROR,
SENSOR_AE_LOCKED
} ACDK_SENSOR_AE_STATUS_ENUM;
typedef enum {
SENSOR_AWB_IDLE = 0,
SENSOR_AWB_BALANCING,
SENSOR_AWB_BALANCED,
SENSOR_AWB_ERROR,
SENSOR_AWB_LOCKED
} ACDK_SENSOR_AWB_STATUS_ENUM;
typedef enum {
SENSOR_INTERFACE_TYPE_PARALLEL = 0,
SENSOR_INTERFACE_TYPE_MIPI,
SENSOR_INTERFACE_TYPE_SERIAL, /* add for 72 ATV using serial interface */
SENSOR_INTERFACE_TYPE_MAX
} ACDK_SENSOR_INTERFACE_TYPE_ENUM;
typedef enum {
SENSOR_OUTPUT_FORMAT_RAW_B = 0,
SENSOR_OUTPUT_FORMAT_RAW_Gb,
SENSOR_OUTPUT_FORMAT_RAW_Gr,
SENSOR_OUTPUT_FORMAT_RAW_R,
SENSOR_OUTPUT_FORMAT_UYVY,
SENSOR_OUTPUT_FORMAT_VYUY,
SENSOR_OUTPUT_FORMAT_YUYV,
SENSOR_OUTPUT_FORMAT_YVYU,
SENSOR_OUTPUT_FORMAT_CbYCrY,
SENSOR_OUTPUT_FORMAT_CrYCbY,
SENSOR_OUTPUT_FORMAT_YCbYCr,
SENSOR_OUTPUT_FORMAT_YCrYCb,
SENSOR_OUTPUT_FORMAT_RAW8_B,
SENSOR_OUTPUT_FORMAT_RAW8_Gb,
SENSOR_OUTPUT_FORMAT_RAW8_Gr,
SENSOR_OUTPUT_FORMAT_RAW8_R,
SENSOR_OUTPUT_FORMAT_RAW_RWB_B,
SENSOR_OUTPUT_FORMAT_RAW_RWB_Wb,
SENSOR_OUTPUT_FORMAT_RAW_RWB_Wr,
SENSOR_OUTPUT_FORMAT_RAW_RWB_R,
SENSOR_OUTPUT_FORMAT_RAW_MONO
} ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM;
typedef enum {
SENSOR_MIPI_1_LANE = 0,
SENSOR_MIPI_2_LANE,
SENSOR_MIPI_3_LANE,
SENSOR_MIPI_4_LANE
} ACDK_SENSOR_MIPI_LANE_NUMBER_ENUM;
typedef enum {
SCAM_1_DATA_CHANNEL = 0,
SCAM_2_DATA_CHANNEL,
SCAM_3_DATA_CHANNEL,
SCAM_4_DATA_CHANNEL,
} SENSOR_SCAM_DATA_CHANNEL_ENUM;
typedef enum {
MIPI_OPHY_NCSI2 = 0,
MIPI_OPHY_CSI2 = 1,
MIPI_CPHY = 2,
} SENSOR_MIPI_TYPE_ENUM;
typedef enum {
MIPI_SETTLEDELAY_AUTO = 0,
MIPI_SETTLEDELAY_MANUAL = 1,
} SENSOR_SETTLEDELAY_MODE_ENUM;
typedef enum {
COMP8_NONE = 0,
COMP8_DI_30 = 0x30,
COMP8_DI_31 = 0x31,
COMP8_DI_32 = 0x32,
COMP8_DI_33 = 0x33,
COMP8_DI_34 = 0x34,
COMP8_DI_35 = 0x35,
COMP8_DI_36 = 0x36,
COMP8_DI_37 = 0x37,
COMP8_DI_2A = 0x2A,
} SENSOR_DPCM_TYPE_ENUM;
typedef struct {
MUINT16 SensorPreviewWidth;
MUINT16 SensorPreviewHeight;
MUINT16 SensorFullWidth;
MUINT16 SensorFullHeight;
MUINT16 SensorVideoWidth;
MUINT16 SensorVideoHeight;
MUINT16 SensorHighSpeedVideoWidth;
MUINT16 SensorHighSpeedVideoHeight;
MUINT16 SensorSlimVideoWidth;
MUINT16 SensorSlimVideoHeight;
MUINT16 SensorCustom1Width;
MUINT16 SensorCustom1Height;
MUINT16 SensorCustom2Width;
MUINT16 SensorCustom2Height;
MUINT16 SensorCustom3Width;
MUINT16 SensorCustom3Height;
MUINT16 SensorCustom4Width;
MUINT16 SensorCustom4Height;
MUINT16 SensorCustom5Width;
MUINT16 SensorCustom5Height;
MUINT16 Sensor3DPreviewWidth;
MUINT16 Sensor3DPreviewHeight;
MUINT16 Sensor3DFullWidth;
MUINT16 Sensor3DFullHeight;
MUINT16 Sensor3DVideoWidth;
MUINT16 Sensor3DVideoHeight;
MUINT16 SensorEffectivePreviewWidth;
MUINT16 SensorEffectivePreviewHeight;
MUINT16 SensorEffectiveFullWidth;
MUINT16 SensorEffectiveFullHeight;
MUINT16 SensorEffectiveVideoWidth;
MUINT16 SensorEffectiveVideoHeight;
MUINT16 SensorEffectiveHighSpeedVideoWidth;
MUINT16 SensorEffectiveHighSpeedVideoHeight;
MUINT16 SensorEffective3DPreviewWidth;
MUINT16 SensorEffective3DPreviewHeight;
MUINT16 SensorEffective3DFullWidth;
MUINT16 SensorEffective3DFullHeight;
MUINT16 SensorEffective3DVideoWidth;
MUINT16 SensorEffective3DVideoHeight;
MUINT16 SensorPreviewWidthOffset; /* from effective width to output width */
MUINT16 SensorPreviewHeightOffset; /* from effective height to output height */
MUINT16 SensorFullWidthOffset; /* from effective width to output width */
MUINT16 SensorFullHeightOffset; /* from effective height to output height */
MUINT16 SensorVideoWidthOffset; /* from effective width to output width */
MUINT16 SensorVideoHeightOffset; /* from effective height to output height */
MUINT16 SensorHighSpeedVideoWidthOffset; /* from effective width to output width */
MUINT16 SensorHighSpeedVideoHeightOffset; /* from effective height to output height */
MUINT16 Sensor3DPreviewWidthOffset; /* from effective width to output width */
MUINT16 Sensor3DPreviewHeightOffset; /* from effective height to output height */
MUINT16 Sensor3DFullWidthOffset; /* from effective width to output width */
MUINT16 Sensor3DFullHeightOffset; /* from effective height to output height */
MUINT16 Sensor3DVideoWidthOffset; /* from effective width to output width */
MUINT16 Sensor3DVideoHeightOffset; /* from effective height to output height */
} ACDK_SENSOR_RESOLUTION_INFO_STRUCT, *PACDK_SENSOR_RESOLUTION_INFO_STRUCT;
typedef struct {
MUINT16 SensorPreviewResolutionX;
MUINT16 SensorPreviewResolutionY;
MUINT16 SensorFullResolutionX;
MUINT16 SensorFullResolutionY;
MUINT8 SensorClockFreq; /* MHz */
MUINT8 SensorCameraPreviewFrameRate;
MUINT8 SensorVideoFrameRate;
MUINT8 SensorStillCaptureFrameRate;
MUINT8 SensorWebCamCaptureFrameRate;
MUINT8 SensorClockPolarity; /* SENSOR_CLOCK_POLARITY_HIGH/SENSOR_CLOCK_POLARITY_Low */
MUINT8 SensorClockFallingPolarity;
MUINT8 SensorClockRisingCount; /* 0..15 */
MUINT8 SensorClockFallingCount; /* 0..15 */
MUINT8 SensorClockDividCount; /* 0..15 */
MUINT8 SensorPixelClockCount; /* 0..15 */
MUINT8 SensorDataLatchCount; /* 0..15 */
MUINT8 SensorHsyncPolarity;
MUINT8 SensorVsyncPolarity;
MUINT8 SensorInterruptDelayLines;
MINT32 SensorResetActiveHigh;
MUINT32 SensorResetDelayCount;
ACDK_SENSOR_INTERFACE_TYPE_ENUM SensroInterfaceType;
ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM SensorOutputDataFormat;
ACDK_SENSOR_MIPI_LANE_NUMBER_ENUM SensorMIPILaneNumber;
MUINT32 CaptureDelayFrame;
MUINT32 PreviewDelayFrame;
MUINT32 VideoDelayFrame;
MUINT32 HighSpeedVideoDelayFrame;
MUINT32 SlimVideoDelayFrame;
MUINT32 YUVAwbDelayFrame;
MUINT32 YUVEffectDelayFrame;
MUINT32 Custom1DelayFrame;
MUINT32 Custom2DelayFrame;
MUINT32 Custom3DelayFrame;
MUINT32 Custom4DelayFrame;
MUINT32 Custom5DelayFrame;
MUINT16 SensorGrabStartX;
MUINT16 SensorGrabStartY;
MUINT16 SensorDrivingCurrent;
MUINT8 SensorMasterClockSwitch;
MUINT8 AEShutDelayFrame; /* The frame of setting shutter default 0 for TG int */
MUINT8 AESensorGainDelayFrame; /* The frame of setting sensor gain */
MUINT8 AEISPGainDelayFrame;
MUINT8 MIPIDataLowPwr2HighSpeedTermDelayCount;
MUINT8 MIPIDataLowPwr2HighSpeedSettleDelayCount;
MUINT8 MIPICLKLowPwr2HighSpeedTermDelayCount;
MUINT8 SensorWidthSampling;
MUINT8 SensorHightSampling;
MUINT8 SensorPacketECCOrder;
SENSOR_MIPI_TYPE_ENUM MIPIsensorType;
MUINT8 SensorCaptureOutputJPEG; /* JPEG file or not? */
MUINT8 SensorModeNum;
MUINT8 IHDR_Support;
MUINT16 IHDR_LE_FirstLine;
MUINT8 ZHDR_Mode;
SENSOR_SETTLEDELAY_MODE_ENUM SettleDelayMode;
MUINT8 PDAF_Support;/*0: NO PDAF, 1: PDAF Raw Data mode, 2:PDAF VC mode(Full), 3:PDAF VC mode(Binning)*/
MUINT8 HDR_Support;/*0: NO HDR, 1: iHDR, 2:mvHDR, 3:zHDR*/
MUINT8 DPCM_INFO;
MUINT8 PerFrameCTL_Support;
SENSOR_SCAM_DATA_CHANNEL_ENUM SCAM_DataNumber;
MUINT8 SCAM_DDR_En;
MUINT8 SCAM_CLK_INV;
MUINT8 SCAM_DEFAULT_DELAY;
MUINT8 SCAM_CRC_En;
MUINT8 SCAM_SOF_src;
MUINT32 SCAM_Timout_Cali;
MUINT32 SensorMIPIDeskew;
} ACDK_SENSOR_INFO_STRUCT, *PACDK_SENSOR_INFO_STRUCT;
typedef struct {
MUINT16 SensorPreviewResolutionX;
MUINT16 SensorPreviewResolutionY;
MUINT16 SensorFullResolutionX;
MUINT16 SensorFullResolutionY;
MUINT8 SensorClockFreq; /* MHz */
MUINT8 SensorCameraPreviewFrameRate;
MUINT8 SensorVideoFrameRate;
MUINT8 SensorStillCaptureFrameRate;
MUINT8 SensorWebCamCaptureFrameRate;
MUINT8 SensorClockPolarity; /* SENSOR_CLOCK_POLARITY_HIGH/SENSOR_CLOCK_POLARITY_Low */
MUINT8 SensorClockFallingPolarity;
MUINT8 SensorClockRisingCount; /* 0..15 */
MUINT8 SensorClockFallingCount; /* 0..15 */
MUINT8 SensorClockDividCount; /* 0..15 */
MUINT8 SensorPixelClockCount; /* 0..15 */
MUINT8 SensorDataLatchCount; /* 0..15 */
MUINT8 SensorHsyncPolarity;
MUINT8 SensorVsyncPolarity;
MUINT8 SensorInterruptDelayLines;
MINT32 SensorResetActiveHigh;
MUINT32 SensorResetDelayCount;
ACDK_SENSOR_INTERFACE_TYPE_ENUM SensroInterfaceType;
ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM SensorOutputDataFormat;
ACDK_SENSOR_MIPI_LANE_NUMBER_ENUM SensorMIPILaneNumber;
MUINT32 CaptureDelayFrame;
MUINT32 PreviewDelayFrame;
MUINT32 VideoDelayFrame;
MUINT32 HighSpeedVideoDelayFrame;
MUINT32 SlimVideoDelayFrame;
MUINT32 YUVAwbDelayFrame;
MUINT32 YUVEffectDelayFrame;
MUINT32 Custom1DelayFrame;
MUINT32 Custom2DelayFrame;
MUINT32 Custom3DelayFrame;
MUINT32 Custom4DelayFrame;
MUINT32 Custom5DelayFrame;
MUINT16 SensorGrabStartX_PRV;
MUINT16 SensorGrabStartY_PRV;
MUINT16 SensorGrabStartX_CAP;
MUINT16 SensorGrabStartY_CAP;
MUINT16 SensorGrabStartX_VD;
MUINT16 SensorGrabStartY_VD;
MUINT16 SensorGrabStartX_VD1;
MUINT16 SensorGrabStartY_VD1;
MUINT16 SensorGrabStartX_VD2;
MUINT16 SensorGrabStartY_VD2;
MUINT16 SensorGrabStartX_CST1;
MUINT16 SensorGrabStartY_CST1;
MUINT16 SensorGrabStartX_CST2;
MUINT16 SensorGrabStartY_CST2;
MUINT16 SensorGrabStartX_CST3;
MUINT16 SensorGrabStartY_CST3;
MUINT16 SensorGrabStartX_CST4;
MUINT16 SensorGrabStartY_CST4;
MUINT16 SensorGrabStartX_CST5;
MUINT16 SensorGrabStartY_CST5;
MUINT16 SensorDrivingCurrent;
MUINT8 SensorMasterClockSwitch;
MUINT8 AEShutDelayFrame; /* The frame of setting shutter default 0 for TG int */
MUINT8 AESensorGainDelayFrame; /* The frame of setting sensor gain */
MUINT8 AEISPGainDelayFrame;
MUINT8 MIPIDataLowPwr2HighSpeedTermDelayCount;
MUINT8 MIPIDataLowPwr2HighSpeedSettleDelayCount;
MUINT8 MIPIDataLowPwr2HSSettleDelayM0;
MUINT8 MIPIDataLowPwr2HSSettleDelayM1;
MUINT8 MIPIDataLowPwr2HSSettleDelayM2;
MUINT8 MIPIDataLowPwr2HSSettleDelayM3;
MUINT8 MIPIDataLowPwr2HSSettleDelayM4;
MUINT8 MIPICLKLowPwr2HighSpeedTermDelayCount;
MUINT8 SensorWidthSampling;
MUINT8 SensorHightSampling;
MUINT8 SensorPacketECCOrder;
SENSOR_MIPI_TYPE_ENUM MIPIsensorType;
MUINT8 SensorCaptureOutputJPEG; /* JPEG file or not? */
MUINT8 SensorModeNum;
MUINT8 IHDR_Support;
MUINT16 IHDR_LE_FirstLine;
MUINT8 ZHDR_Mode;
SENSOR_SETTLEDELAY_MODE_ENUM SettleDelayMode;
MUINT8 PDAF_Support;/*0: NO PDAF, 1: PDAF Raw Data mode, 2:PDAF VC mode(Full), 3:PDAF VC mode(Binning)*/
MUINT8 HDR_Support;/*0: NO HDR, 1: iHDR, 2:mvHDR, 3:zHDR*/
MUINT8 DPCM_INFO;
MUINT8 IMGSENSOR_DPCM_TYPE_PRE;
MUINT8 IMGSENSOR_DPCM_TYPE_CAP;
MUINT8 IMGSENSOR_DPCM_TYPE_VD;
MUINT8 IMGSENSOR_DPCM_TYPE_VD1;
MUINT8 IMGSENSOR_DPCM_TYPE_VD2;
MUINT8 PerFrameCTL_Support;
SENSOR_SCAM_DATA_CHANNEL_ENUM SCAM_DataNumber;
MUINT8 SCAM_DDR_En;
MUINT8 SCAM_CLK_INV;
MUINT8 SCAM_DEFAULT_DELAY;
MUINT8 SCAM_CRC_En;
MUINT8 SCAM_SOF_src;
MUINT32 SCAM_Timout_Cali;
MUINT32 SensorMIPIDeskew;
} ACDK_SENSOR_INFO2_STRUCT, *PACDK_SENSOR_INFO2_STRUCT;
typedef enum {
ACDK_CCT_REG_ISP = 0,
ACDK_CCT_REG_CMOS,
ACDK_CCT_REG_CCD
} ACDK_CCT_REG_TYPE_ENUM;
/* R/W ISP/Sensor Register */
typedef struct {
ACDK_CCT_REG_TYPE_ENUM Type;
MUINT32 RegAddr;
MUINT32 RegData;
} ACDK_CCT_REG_RW_STRUCT, *PACDK_CCT_REG_RW_STRUCT;
typedef struct {
ACDK_CCT_REG_TYPE_ENUM Type; /* ISP, CMOS_SENSOR, CCD_SENSOR */
MUINT32 DeviceId;
ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM StartPixelBayerPtn;
MUINT16 GrabXOffset;
MUINT16 GrabYOffset;
} ACDK_CCT_SENSOR_INFO_STRUCT, *PACDK_CCT_SENSOR_INFO_STRUCT;
typedef enum {
CMOS_SENSOR = 0,
CCD_SENSOR
} SENSOR_TYPE_ENUM;
typedef struct {
MUINT16 SensorId;
SENSOR_TYPE_ENUM SensorType;
ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM SensorOutputDataFormat;
} ACDK_SENSOR_ENG_INFO_STRUCT;
typedef struct {
MUINT32 RegAddr;
MUINT32 RegData;
} ACDK_SENSOR_REG_INFO_STRUCT;
typedef struct {
MUINT8 debugStruct[32];
MUINT8 debugSubstruct[32];
MUINT32 isGet; /* 1 means get, 0 means set */
MUINT32 value;
} ACDK_SENSOR_DBG_IMGSENSOR_STRUCT;
typedef struct {
MUINT32 GroupIdx;
MUINT32 ItemCount;
MUINT8 *GroupNamePtr;
} ACDK_SENSOR_GROUP_INFO_STRUCT;
typedef struct {
MUINT32 GroupIdx;
MUINT32 ItemIdx;
MUINT8 ItemNamePtr[50]; /* item name */
MUINT32 ItemValue; /* item value */
MINT32 IsTrueFalse; /* is this item for enable/disable functions */
MINT32 IsReadOnly; /* is this item read only */
MINT32 IsNeedRestart; /* after set this item need restart */
MUINT32 Min; /* min value of item value */
MUINT32 Max; /* max value of item value */
} ACDK_SENSOR_ITEM_INFO_STRUCT;
typedef enum {
ACDK_SENSOR_IMAGE_NORMAL = 0,
ACDK_SENSOR_IMAGE_H_MIRROR,
ACDK_SENSOR_IMAGE_V_MIRROR,
ACDK_SENSOR_IMAGE_HV_MIRROR
} ACDK_SENSOR_IMAGE_MIRROR_ENUM;
typedef enum {
ACDK_SENSOR_OPERATION_MODE_CAMERA_PREVIEW = 0,
ACDK_SENSOR_OPERATION_MODE_VIDEO,
ACDK_SENSOR_OPERATION_MODE_STILL_CAPTURE,
ACDK_SENSOR_OPERATION_MODE_HIGHSP_VIDEO1,
ACDK_SENSOR_OPERATION_MODE_HIGHSP_VIDEO2,
ACDK_SENSOR_OPERATION_MODE_WEB_CAPTURE,
ACDK_SENSOR_OPERATION_MODE_CUSTOM1,
ACDK_SENSOR_OPERATION_MODE_CUSTOM2,
ACDK_SENSOR_OPERATION_MODE_CUSTOM3,
ACDK_SENSOR_OPERATION_MODE_CUSTOM4,
ACDK_SENSOR_OPERATION_MODE_CUSTOM5,
ACDK_SENSOR_OPERATION_MODE_MAX
} ACDK_SENSOR_OPERATION_MODE_ENUM;
typedef struct {
MUINT16 GrabStartX; /* The first grabed column data of the image sensor in pixel clock count */
MUINT16 GrabStartY; /* The first grabed row data of the image sensor in pixel clock count */
MUINT16 ExposureWindowWidth; /* Exposure window width of image sensor */
MUINT16 ExposureWindowHeight; /* Exposure window height of image sensor */
MUINT16 ImageTargetWidth; /* image captured width */
MUINT16 ImageTargetHeight; /* image captuerd height */
MUINT16 ExposurePixel; /* exposure window width of image sensor + dummy pixel */
MUINT16 CurrentExposurePixel; /* exposure window width of image sensor + dummy pixel */
MUINT16 ExposureLine; /* exposure window width of image sensor + dummy line */
MUINT16 ZoomFactor; /* digital zoom factor */
} ACDK_SENSOR_EXPOSURE_WINDOW_STRUCT;
typedef struct {
ACDK_SENSOR_IMAGE_MIRROR_ENUM SensorImageMirror;
MINT32 EnableShutterTansfer; /* capture only */
MINT32 EnableFlashlightTansfer; /* flash light capture only */
ACDK_SENSOR_OPERATION_MODE_ENUM SensorOperationMode;
MUINT16 ImageTargetWidth; /* image captured width */
MUINT16 ImageTargetHeight; /* image captuerd height */
MUINT16 CaptureShutter; /* capture only */
MUINT16 FlashlightDuty; /* flash light capture only */
MUINT16 FlashlightOffset; /* flash light capture only */
MUINT16 FlashlightShutFactor; /* flash light capture only */
MUINT16 FlashlightMinShutter;
ACDK_CAMERA_OPERATION_MODE_ENUM MetaMode; /* capture only */
MUINT32 DefaultPclk; /* Sensor pixel clock(Ex:24000000) */
MUINT32 Pixels; /* Sensor active pixel number */
MUINT32 Lines; /* Sensor active line number */
MUINT32 Shutter; /* Sensor current shutter */
MUINT32 FrameLines; /* valid+dummy lines for minimum shutter */
} ACDK_SENSOR_CONFIG_STRUCT;
typedef enum {
MCLK_48MHZ_GROUP = 0x1,
MCLK_52MHZ_GROUP = 0x2,
} ACKD_SENSOR_MCLK_ENUM;
typedef struct {
MUINT8 on;
ACKD_SENSOR_MCLK_ENUM freq;
} ACDK_SENSOR_MCLK_STRUCT;
typedef struct {
MUINT16 full_w;
MUINT16 full_h;
MUINT16 x0_offset;
MUINT16 y0_offset;
MUINT16 w0_size;
MUINT16 h0_size;
MUINT16 scale_w;
MUINT16 scale_h;
MUINT16 x1_offset;
MUINT16 y1_offset;
MUINT16 w1_size;
MUINT16 h1_size;
MUINT16 x2_tg_offset;
MUINT16 y2_tg_offset;
MUINT16 w2_tg_size;
MUINT16 h2_tg_size;
} SENSOR_WINSIZE_INFO_STRUCT;
typedef struct {
MUINT32 SensorId;
SENSOR_WINSIZE_INFO_STRUCT SensorWinSize;
} SENSOR_WINSIZE_STRUCT, *pSENSOR_WINSIZE_STRUCT;
typedef struct {
MUINT16 VC_Num;
MUINT16 VC_PixelNum;
MUINT16 ModeSelect; /* 0: auto mode, 1:direct mode */
MUINT16 EXPO_Ratio; /* 1/1, 1/2, 1/4, 1/8 */
MUINT16 ODValue; /* OD Vaule */
MUINT16 RG_STATSMODE; /* STATS divistion mdoe 0: 16x16, 1:8x8, 2:4x4, 3:1x1*/
MUINT16 VC0_ID;
MUINT16 VC0_DataType;
MUINT16 VC0_SIZEH;
MUINT16 VC0_SIZEV;
MUINT16 VC1_ID;
MUINT16 VC1_DataType;
MUINT16 VC1_SIZEH;
MUINT16 VC1_SIZEV;
MUINT16 VC2_ID;
MUINT16 VC2_DataType;
MUINT16 VC2_SIZEH;
MUINT16 VC2_SIZEV;
MUINT16 VC3_ID;
MUINT16 VC3_DataType;
MUINT16 VC3_SIZEH;
MUINT16 VC3_SIZEV;
} SENSOR_VC_INFO_STRUCT, *pSENSOR_VC_INFO_STRUCT;
typedef struct {
MUINT16 VC_Num;
MUINT16 VC_PixelNum;
MUINT16 ModeSelect; /* 0: auto mode, 1:direct mode */
MUINT16 EXPO_Ratio; /* 1/1, 1/2, 1/4, 1/8 */
MUINT16 ODValue; /* OD Vaule */
MUINT16 RG_STATSMODE; /* STATS divistion mdoe 0: 16x16, 1:8x8, 2:4x4, 3:1x1*/
MUINT16 VC0_ID;
MUINT16 VC0_DataType; /*virtual channel 0*/
MUINT16 VC0_BitDepth;
MUINT16 VC0_SIZEH;
MUINT16 VC0_SIZEV;
MUINT16 VC1_ID; /*virtual channel 1*/
MUINT16 VC1_DataType;
MUINT16 VC1_BitDepth;
MUINT16 VC1_SIZEH;
MUINT16 VC1_SIZEV;
MUINT16 VC2_ID; /*virtual channel 2*/
MUINT16 VC2_DataType;
MUINT16 VC2_BitDepth;
MUINT16 VC2_SIZEH;
MUINT16 VC2_SIZEV;
MUINT16 VC3_ID; /*virtual channel 3*/
MUINT16 VC3_DataType;
MUINT16 VC3_BitDepth;
MUINT16 VC3_SIZEH;
MUINT16 VC3_SIZEV;
} SENSOR_VC_INFO2_STRUCT, *pSENSOR_VC_INFO2_STRUCT;
typedef struct {
MUINT32 ABS_GAIN_GR;
MUINT32 ABS_GAIN_R;
MUINT32 ABS_GAIN_B;
MUINT32 ABS_GAIN_GB;
} SET_SENSOR_AWB_GAIN, *PSET_SENSOR_AWB_GAIN;
typedef struct {
MUINT32 SENSOR_MODE;
MUINT32 ISO;
} SET_SENSOR_ISO, *PSET_SENSOR_ISO;
typedef struct {
MUINT32 i4OffsetX; /* start offset of first PD block */
MUINT32 i4OffsetY;
MUINT32 i4PitchX; /* PD block pitch */
MUINT32 i4PitchY;
MUINT32 i4PairNum; /* PD pair num in one block */
MUINT32 i4SubBlkW; /* sub block width (one PD pair in one sub block) */
MUINT32 i4SubBlkH; /* sub block height */
MUINT32 i4PosL[16][2]; /* left pd pixel position in one block*/
MUINT32 i4PosR[16][2]; /* right pd pixel position in one block*/
MUINT32 iMirrorFlip; /* 0:IMAGE_NORMAL,1:IMAGE_H_MIRROR,2:IMAGE_V_MIRROR,3:IMAGE_HV_MIRROR*/
} SET_PD_BLOCK_INFO_T, *PSET_PD_BLOCK_INFO_T;
typedef enum {
SENSORIF_PARALLEL = 0,
SENSORIF_SERIAL,
SENSORIF_MIPI_DHY0,
SENSORIF_MIPI_DHY1,
SENSORIF_MIPI_DHY2
} SENSOR_PHY_TYPE_ENUM;
typedef enum {
DATA_8BIT_FMT = 0x0,
DATA_10BIT_FMT = 0x1,
DATA_12BIT_FMT = 0x2,
DATA_YUV422_FMT = 0x3,
} INDATA_FORMAT_ENUM;
typedef struct {
MINT32 mSensorDev;
MUINT8 GpioEnable;
SENSOR_PHY_TYPE_ENUM SensroInterfaceType;
INDATA_FORMAT_ENUM SensorIndataformat;
} IMGSENSOR_GPIO_STRUCT;
/*******************************************************************************
*
********************************************************************************/
#define MAXIMUM_NVRAM_CAMERA_SENSOR_FILE_SIZE_KERNEL 4096
#define NVRAM_CAMERA_SENSOR_FILE_VERSION 1
/* Sensor table */
#define MAXIMUM_SENSOR_CCT_REG_NUMBER 100
#define MAXIMUM_SENSOR_ENG_REG_NUMBER 100
typedef struct {
MUINT32 Addr;
MUINT32 Para;
} SENSOR_REG_STRUCT;
typedef struct {
MUINT32 Version;
MUINT32 SensorId; /* ID of sensor module */
SENSOR_REG_STRUCT SensorEngReg[MAXIMUM_SENSOR_ENG_REG_NUMBER];
SENSOR_REG_STRUCT SensorCCTReg[MAXIMUM_SENSOR_CCT_REG_NUMBER];
MUINT8 CameraData[MAXIMUM_NVRAM_CAMERA_SENSOR_FILE_SIZE_KERNEL / 2 - 8 - sizeof(SENSOR_REG_STRUCT) * (MAXIMUM_SENSOR_ENG_REG_NUMBER + MAXIMUM_SENSOR_CCT_REG_NUMBER)];
} NVRAM_SENSOR_DATA_STRUCT, *PNVRAM_SENSOR_DATA_STRUCT;
#define MAX_SENSOR_CAL_SIZE_KERNEL (1024) /* Byte */
#define MAX_SHADING_DATA_TBL ((MAX_SENSOR_CAL_SIZE_KERNEL-8)/4)
typedef struct {
MUINT32 DataFormat;
MUINT32 DataSize;
MUINT32 ShadingData[MAX_SHADING_DATA_TBL];
} SET_SENSOR_CALIBRATION_DATA_STRUCT, *PSET_SENSOR_CALIBRATION_DATA_STRUCT;
typedef struct {
MSDK_SCENARIO_ID_ENUM ScenarioId[2];
ACDK_SENSOR_INFO_STRUCT * pInfo[2];
ACDK_SENSOR_CONFIG_STRUCT * pConfig[2];
} ACDK_SENSOR_GETINFO_STRUCT, *PACDK_SENSOR_GETINFO_STRUCT;
typedef struct {
MUINT32 SensorId;
ACDK_SENSOR_INFO2_STRUCT *pInfo;
ACDK_SENSOR_RESOLUTION_INFO_STRUCT *pSensorResolution;
} IMAGESENSOR_GETINFO_STRUCT, *PIMAGESENSOR_GETINFO_STRUCT;
typedef struct {
CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera;
ACDK_SENSOR_FEATURE_ENUM FeatureId;
MUINT8 *pFeaturePara;
MUINT32 *pFeatureParaLen;
} ACDK_SENSOR_FEATURECONTROL_STRUCT, *PACDK_SENSOR_FEATURECONTROL_STRUCT;
typedef struct {
CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera;
MSDK_SCENARIO_ID_ENUM ScenarioId;
ACDK_SENSOR_EXPOSURE_WINDOW_STRUCT *pImageWindow;
ACDK_SENSOR_CONFIG_STRUCT *pSensorConfigData;
} ACDK_SENSOR_CONTROL_STRUCT;
typedef struct {
ACDK_SENSOR_RESOLUTION_INFO_STRUCT *pResolution[2];
} ACDK_SENSOR_PRESOLUTION_STRUCT;
typedef struct regval_list {
MUINT32 reg_addr;
MUINT32 value;
MUINT32 bytes;
} REGVAL_LIST_STRUCT;
#define KDIMGSENSOR_REGVAL_LIST_MAX_NUM 256
typedef struct format_struct {
MUINT8 *desc;
MUINT32 pixelformat;
/* REGVAL_LIST_STRUCT regs[KDIMGSENSOR_REGVAL_LIST_MAX_NUM]; */
int (*pfInitCfg)(void);
} IMGSENSOR_FORMAT_STRUCT;
typedef struct {
IMGSENSOR_FORMAT_STRUCT format;
MUINT32 u4InClk; /* Common part //hard coded */
MUINT32 u4OutClk; /* Common part // */
MUINT32 u4TotalPixelPerLine; /* By modes */
MUINT32 u4TotalLinesPerFrame; /* By modes and frame rate setting */
MUINT32 u4ActualWidth; /* By modes */
MUINT32 u4ActualHeight; /* By modes */
MUINT32 u4Width; /* By modes */
MUINT32 u4Height; /* By modes */
MUINT32 u4FrameTimeInus; /* By modes and frame rate setting */
MUINT32 u4MinFrameTimeInus; /* By modes */
MUINT32 u4LineTimeInus; /* By modes */
MUINT32 u4FinePixCntPerus; /* Common part */
MUINT32 u4MinFineTimeInus; /* By modes */
MUINT32 u4MaxFineTimeInus; /* By modes */
MUINT32 u4XStart;
MUINT32 u4XEnd;
MUINT32 u4YStart;
MUINT32 u4YEnd;
} stImgSensorFormat;
#ifdef CONFIG_COMPAT
/* Redifne structures for compat_ioctl */
typedef struct {
MSDK_SCENARIO_ID_ENUM ScenarioId[2];
compat_uptr_t pInfo[2];
compat_uptr_t pConfig[2];
} COMPAT_ACDK_SENSOR_GETINFO_STRUCT;
typedef struct {
MUINT32 SensorId;
compat_uptr_t pInfo;
compat_uptr_t pSensorResolution;
} COMPAT_IMAGESENSOR_GETINFO_STRUCT;
typedef struct {
CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera;
ACDK_SENSOR_FEATURE_ENUM FeatureId;
compat_uptr_t pFeaturePara;
compat_uptr_t pFeatureParaLen;
} COMPAT_ACDK_SENSOR_FEATURECONTROL_STRUCT;
typedef struct {
CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera;
MSDK_SCENARIO_ID_ENUM ScenarioId;
compat_uptr_t pImageWindow;
compat_uptr_t pSensorConfigData;
} COMPAT_ACDK_SENSOR_CONTROL_STRUCT;
typedef struct {
compat_uptr_t pResolution[2];
} COMPAT_ACDK_SENSOR_PRESOLUTION_STRUCT;
#endif
/*******************************************************************************
*
********************************************************************************/
/* */
/* adoption to winmo driver files */
/* */
/* typedef */
/* #define kal_uint8 u8 */
/* #define MSDK_SCENARIO_ID_ENUM ACDK_SCENARIO_ID_ENUM */
#define MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT ACDK_SENSOR_EXPOSURE_WINDOW_STRUCT
#define MSDK_SENSOR_CONFIG_STRUCT ACDK_SENSOR_CONFIG_STRUCT
#define MSDK_SENSOR_FEATURE_ENUM ACDK_SENSOR_FEATURE_ENUM
#define MSDK_SENSOR_REG_INFO_STRUCT ACDK_SENSOR_REG_INFO_STRUCT
#define MSDK_SENSOR_GROUP_INFO_STRUCT ACDK_SENSOR_GROUP_INFO_STRUCT
#define MSDK_SENSOR_ITEM_INFO_STRUCT ACDK_SENSOR_ITEM_INFO_STRUCT
#define MSDK_SENSOR_ENG_INFO_STRUCT ACDK_SENSOR_ENG_INFO_STRUCT
#define MSDK_SENSOR_INFO_STRUCT ACDK_SENSOR_INFO_STRUCT
#define MSDK_SENSOR_RESOLUTION_INFO_STRUCT ACDK_SENSOR_RESOLUTION_INFO_STRUCT
#define MSDK_SENSOR_DBG_IMGSENSOR_INFO_STRUCT ACDK_SENSOR_DBG_IMGSENSOR_STRUCT
/* MSDK_SCENARIO_ID_ENUM => ACDK_SCENARIO_ID_ENUM */
/* #define MSDK_SCENARIO_ID_CAMERA_PREVIEW ACDK_SCENARIO_ID_CAMERA_PREVIEW */
/* #define MSDK_SCENARIO_ID_VIDEO_PREVIEW ACDK_SCENARIO_ID_VIDEO_PREVIEW */
/* #define MSDK_SCENARIO_ID_CAMERA_CAPTURE_JPEG ACDK_SCENARIO_ID_CAMERA_CAPTURE_JPEG */
#define MSDK_SENSOR_OPERATION_MODE_VIDEO ACDK_SENSOR_OPERATION_MODE_VIDEO
/* #define MSDK_SCENARIO_ID_CAMERA_ZSD ACDK_SCENARIO_ID_CAMERA_ZSD */
/* #define MSDK_SCENARIO_ID_CAMERA_3D_PREVIEW ACDK_SCENARIO_ID_CAMERA_3D_PREVIEW */
/* #define MSDK_SCENARIO_ID_CAMERA_3D_CAPTURE ACDK_SCENARIO_ID_CAMERA_3D_CAPTURE */
/* #define MSDK_SCENARIO_ID_CAMERA_3D_VIDEO ACDK_SCENARIO_ID_CAMERA_3D_VIDEO */
/*******************************************************************************
*
********************************************************************************/
/*******************************************************************************
*
********************************************************************************/
/* for new simplifed sensor driver */
typedef struct {
MUINT32(*SensorOpen)(void);
MUINT32(*SensorGetInfo)(MUINT32 *pScenarioId[2], MSDK_SENSOR_INFO_STRUCT * pSensorInfo[2], MSDK_SENSOR_CONFIG_STRUCT * pSensorConfigData[2]);
MUINT32(*SensorGetResolution)(MSDK_SENSOR_RESOLUTION_INFO_STRUCT * pSensorResolution[2]);
MUINT32(*SensorFeatureControl)(CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera, MSDK_SENSOR_FEATURE_ENUM FeatureId, MUINT8 *pFeaturePara, MUINT32 *pFeatureParaLen);
MUINT32(*SensorControl)(MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *pImageWindow, MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
MUINT32(*SensorClose)(void);
} MULTI_SENSOR_FUNCTION_STRUCT, *PMULTI_SENSOR_FUNCTION_STRUCT;
typedef struct {
MUINT32(*SensorOpen)(void);
MUINT32(*SensorGetInfo)(MUINT32 *pScenarioId[2], MSDK_SENSOR_INFO_STRUCT * pSensorInfo[2], MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData[2]);
MUINT32(*SensorGetResolution)(MSDK_SENSOR_RESOLUTION_INFO_STRUCT * pSensorResolution[2]);
MUINT32(*SensorFeatureControl)(CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera, MSDK_SENSOR_FEATURE_ENUM FeatureId, MUINT8 *pFeaturePara, MUINT32 *pFeatureParaLen);
MUINT32(*SensorControl)(CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera, MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *pImageWindow, MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
MUINT32(*SensorClose)(void);
} MULTI_SENSOR_FUNCTION_STRUCT2, *PMULTI_SENSOR_FUNCTION_STRUCT2;
typedef struct {
MUINT32(*SensorOpen)(void);
MUINT32(*SensorGetInfo)(MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_INFO_STRUCT *pSensorInfo,
MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
MUINT32(*SensorGetResolution)(MSDK_SENSOR_RESOLUTION_INFO_STRUCT *pSensorResolution);
MUINT32(*SensorFeatureControl)(MSDK_SENSOR_FEATURE_ENUM FeatureId, MUINT8 *pFeaturePara, MUINT32 *pFeatureParaLen);
MUINT32(*SensorControl)(MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *pImageWindow, MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
MUINT32(*SensorClose)(void);
#if 1 /* isp suspend resume patch */
MSDK_SCENARIO_ID_ENUM ScenarioId;
MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT imageWindow;
MSDK_SENSOR_CONFIG_STRUCT sensorConfigData;
#endif
} SENSOR_FUNCTION_STRUCT, *PSENSOR_FUNCTION_STRUCT;
typedef struct {
MUINT32 SensorId;
MUINT8 drvname[32];
MUINT32(*SensorInit)(PSENSOR_FUNCTION_STRUCT *pfFunc);
} ACDK_KD_SENSOR_INIT_FUNCTION_STRUCT, *PACDK_KD_SENSOR_INIT_FUNCTION_STRUCT;
#define KDIMGSENSOR_DUAL_SHIFT 16
#define KDIMGSENSOR_DUAL_MASK_MSB 0xFFFF0000
#define KDIMGSENSOR_DUAL_MASK_LSB 0x0000FFFF
#define KDIMGSENSOR_NOSENSOR "non_sensor"
#define KDIMGSENSOR_MAX_INVOKE_DRIVERS (2)
#define KDIMGSENSOR_INVOKE_DRIVER_0 (0)
#define KDIMGSENSOR_INVOKE_DRIVER_1 (1)
/* For sensor synchronize the exposure time / sensor gain and isp gain. */
typedef struct {
MUINT16 u2ISPNewRGain;
MUINT16 u2ISPNewGrGain;
MUINT16 u2ISPNewGbGain;
MUINT16 u2ISPNewBGain;
MUINT16 u2SensorNewExpTime;
MUINT16 u2SensorNewGain;
MUINT8 uSensorExpDelayFrame;
MUINT8 uSensorGainDelayFrame;
MUINT8 uISPGainDelayFrame;
MUINT8 uDummy;
} ACDK_KD_SENSOR_SYNC_STRUCT, *PACDK_KD_SENSOR_SYNC_STRUCT;
typedef struct {
MUINT16 AeRefLV05Shutter; /* Sensor AE Shutter under Lv05 */
MUINT16 AeRefLV13Shutter; /* Sensor AE Shutter under Lv13 */
MUINT16 AeRefLV05Gain; /* Sensor AE Gain under Lv05 */
MUINT16 AeRefLV13Gain; /* Sensor AE Gain under Lv13 */
} SENSOR_AE_REF_STRUCT, *PSENSOR_AE_REF_STRUCT;
typedef struct {
MUINT16 AwbRefD65Rgain; /* Sensor AWB R Gain under D65 */
MUINT16 AwbRefD65Bgain; /* Sensor AWB B Gain under D65 */
MUINT16 AwbRefCWFRgain; /* Sensor AWB R Gain under CWF */
MUINT16 AwbRefCWFBgain; /* Sensor AWB B Gain under CWF */
} SENSOR_AWB_GAIN_REF_STRUCT, *PSENSOR_AWB_GAIN_REF_STRUCT;
typedef struct {
SENSOR_AE_REF_STRUCT SensorAERef; /* AE Ref information for ASD usage */
SENSOR_AWB_GAIN_REF_STRUCT SensorAwbGainRef; /* AWB Gain Ref information for ASD usage */
MUINT32 SensorLV05LV13EVRef; /* EV calculate for ASD usage */
} SENSOR_AE_AWB_REF_STRUCT, *PSENSOR_AE_AWB_REF_STRUCT;
typedef struct {
MUINT16 AeCurShutter; /* Current Sensor AE Shutter */
MUINT16 AeCurGain; /* Current Sensor AE Gain */
} SENSOR_AE_CUR_STRUCT, *PSENSOR_AE_CUR_STRUCT;
typedef struct {
MUINT16 AwbCurRgain; /* Current Sensor AWB R Gain */
MUINT16 AwbCurBgain; /* Current Sensor AWB R Gain */
} SENSOR_AWB_GAIN_CUR_STRUCT, *PSENSOR_AWB_GAIN_CUR_STRUCT;
typedef struct {
SENSOR_AE_CUR_STRUCT SensorAECur; /* AE Current information for ASD usage */
SENSOR_AWB_GAIN_CUR_STRUCT SensorAwbGainCur; /* AWB Gain Current information for ASD usage */
} SENSOR_AE_AWB_CUR_STRUCT, *PSENSOR_AE_AWB_CUR_STRUCT;
typedef struct {
MUINT32 FNumber;
MUINT32 AEISOSpeed;
MUINT32 AWBMode;
MUINT32 CapExposureTime;
MUINT32 FlashLightTimeus;
MUINT32 RealISOValue;
} SENSOR_EXIF_INFO_STRUCT, *PSENSOR_EXIF_INFO_STRUCT;
typedef struct {
MUINT32 InitDelay;
MUINT32 EffectDelay;
MUINT32 AwbDelay;
MUINT32 AFSwitchDelayFrame;
MUINT32 EvDelay;
MUINT32 SatDelay;
MUINT32 BrightDelay;
MUINT32 ContrastDelay;
} SENSOR_DELAY_INFO_STRUCT, *PSENSOR_DELAY_INFO_STRUCT;
typedef struct {
MUINT32 u4Fno;
MUINT32 Exposuretime;
MUINT32 Gain;
MUINT32 GAIN_BASE;
} SENSOR_FLASHLIGHT_AE_INFO_STRUCT, *PSENSOR_FLASHLIGHT_AE_INFO_STRUCT;
/* multisensor driver */
typedef struct {
MUINT32 drvIndex[KDIMGSENSOR_MAX_INVOKE_DRIVERS]; /* max 2 driver sumultaneously */
} SENSOR_DRIVER_INDEX_STRUCT, *PSENSOR_DRIVER_INDEX_STRUCT;
/* hardcode by GPIO module, should be sync with.(cust_gpio_usage.h) */
#define GPIO_CAMERA_INVALID 0xFF
/* */
typedef enum {
IMGSENSOR_SOCKET_POS_NONE = 0xFFFFFFFF,
IMGSENSOR_SOCKET_POS_RIGHT = 0x1,
IMGSENSOR_SOCKET_POS_LEFT = 0x2,
} IMGSENSOR_SOCKET_POSITION_ENUM;
/* */
typedef enum {
IMGSENSOR_SET_I2C_ID_STATE = 0x00,
IMGSENSOR_SET_I2C_ID_FORCE
} IMGSENSOR_SET_I2C_ID_ENUM;
typedef enum {
SENSOR_3A_AE_LOCK = 0,
SENSOR_3A_AE_UNLOCK,
SENSOR_3A_AWB_LOCK,
SENSOR_3A_AWB_UNLOCK,
SENSOR_3A_AE_ON,
SENSOR_3A_AE_OFF,
SENSOR_3A_AWB_ON,
SENSOR_3A_AWB_OFF,
SENSOR_3A_AF_INFINITY,
/* SENSOR_3A_AF_LOCK, */
/* SENSOR_3A_AF_UNLOCK, */
} ACDK_SENSOR_3A_LOCK_ENUM;
typedef struct {
MUINT32 tgtWidth;
MUINT32 tgtHeight;
MUINT32 quality;
} ACDK_SENSOR_JPEG_OUTPUT_PARA;
/* for JPEG Sensor Info */
typedef struct {
MUINT32 u4FileSize; /* For input sensor width */
MUINT32 u4SrcW; /* For input sensor width */
MUINT32 u4SrcH; /* For input sensor height */
} ACDK_SENSOR_JPEG_INFO;
#endif /* _KD_IMGSENSOR_DATA_H */