diff options
| author | Mister Oyster <oysterized@gmail.com> | 2017-01-02 12:44:35 +0100 |
|---|---|---|
| committer | Mister Oyster <oysterized@gmail.com> | 2017-01-02 12:44:35 +0100 |
| commit | a184d985bf43d3fe6eeba971bc6b32f79ea38b37 (patch) | |
| tree | 6f6e56e090777cc149bc1ab39e5987cc2b03e867 /kernel-headers/kd_imgsensor_define.h | |
initial releasecm-13.0
Diffstat (limited to 'kernel-headers/kd_imgsensor_define.h')
| -rw-r--r-- | kernel-headers/kd_imgsensor_define.h | 1108 |
1 files changed, 1108 insertions, 0 deletions
diff --git a/kernel-headers/kd_imgsensor_define.h b/kernel-headers/kd_imgsensor_define.h new file mode 100644 index 0000000..8eab108 --- /dev/null +++ b/kernel-headers/kd_imgsensor_define.h @@ -0,0 +1,1108 @@ +#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_GET_SENSOR_PDAF_CAPACITY, + SENSOR_FEATURE_DEBUG_IMGSENSOR, + SENSOR_FEATURE_SET_HDR_SHUTTER, + SENSOR_FEATURE_SET_ISO, + SENSOR_FEATURE_SET_PDAF, + 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, +} 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; + SENSOR_SETTLEDELAY_MODE_ENUM SettleDelayMode; + MUINT8 PDAF_Support; + 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; +} 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; + SENSOR_SETTLEDELAY_MODE_ENUM SettleDelayMode; + MUINT8 PDAF_Support; + 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; +} 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 { + 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*/ +} 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 */ |
