kd_imgsensor_define.h 35 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109
  1. #ifndef _KD_IMGSENSOR_DATA_H
  2. #define _KD_IMGSENSOR_DATA_H
  3. /* #include "../camera/kd_camera_hw.h" */
  4. #include "kd_camera_feature.h"
  5. #define SENSOR_CLOCK_POLARITY_HIGH 0
  6. #define SENSOR_CLOCK_POLARITY_LOW 1
  7. /* #define CONFIG_COMPAT */
  8. #ifdef CONFIG_COMPAT
  9. /* 64 bit */
  10. #include <linux/fs.h>
  11. #include <linux/compat.h>
  12. #endif
  13. /*************************************************
  14. *
  15. **************************************************/
  16. /* In KERNEL mode,SHOULD be sync with mediatype.h */
  17. /* CHECK before remove or modify */
  18. /* #undef BOOL */
  19. /* #define BOOL signed int */
  20. #ifndef _MEDIA_TYPES_H
  21. typedef unsigned char MUINT8;
  22. typedef unsigned short MUINT16;
  23. typedef unsigned int MUINT32;
  24. typedef signed char MINT8;
  25. typedef signed short MINT16;
  26. typedef signed int MINT32;
  27. #endif
  28. /*******************************************************************************
  29. *
  30. ********************************************************************************/
  31. /* */
  32. /* msdk_isp_exp.h */
  33. /* */
  34. #define BASEGAIN 0x40
  35. #define BASEGAIN_SHIFT 6
  36. typedef enum {
  37. ISP_DRIVING_2MA = 0,
  38. ISP_DRIVING_4MA,
  39. ISP_DRIVING_6MA,
  40. ISP_DRIVING_8MA
  41. } ISP_DRIVING_CURRENT_ENUM;
  42. enum {
  43. IMAGE_NORMAL = 0,
  44. IMAGE_H_MIRROR,
  45. IMAGE_V_MIRROR,
  46. IMAGE_HV_MIRROR
  47. };
  48. typedef enum {
  49. MSDK_SCENARIO_ID_CAMERA_PREVIEW = 0,
  50. MSDK_SCENARIO_ID_CAMERA_CAPTURE_JPEG,
  51. MSDK_SCENARIO_ID_VIDEO_PREVIEW,
  52. MSDK_SCENARIO_ID_HIGH_SPEED_VIDEO,
  53. MSDK_SCENARIO_ID_CAMERA_ZSD,
  54. MSDK_SCENARIO_ID_CAMERA_3D_PREVIEW,
  55. MSDK_SCENARIO_ID_CAMERA_3D_CAPTURE,
  56. MSDK_SCENARIO_ID_CAMERA_3D_VIDEO,
  57. MSDK_SCENARIO_ID_TV_OUT,
  58. MSDK_SCENARIO_ID_SLIM_VIDEO,
  59. MSDK_SCENARIO_ID_CUSTOM1,
  60. MSDK_SCENARIO_ID_CUSTOM2,
  61. MSDK_SCENARIO_ID_CUSTOM3,
  62. MSDK_SCENARIO_ID_CUSTOM4,
  63. MSDK_SCENARIO_ID_CUSTOM5,
  64. MSDK_SCENARIO_ID_MAX,
  65. } MSDK_SCENARIO_ID_ENUM;
  66. typedef enum {
  67. MSDK_CAMERA_OPERATION_NORMAL_MODE = 0,
  68. MSDK_CAMERA_OPERATION_META_MODE
  69. } ACDK_CAMERA_OPERATION_MODE_ENUM;
  70. /*******************************************************************************
  71. *
  72. ********************************************************************************/
  73. /* */
  74. #define MAX_NUM_OF_SUPPORT_SENSOR 16
  75. /* */
  76. #define SENSOR_CLOCK_POLARITY_HIGH 0
  77. #define SENSOR_CLOCK_POLARITY_LOW 1
  78. /* */
  79. #define LENS_DRIVER_ID_DO_NOT_CARE 0xFFFFFFFF
  80. #define SENSOR_DOES_NOT_EXIST 0x00FFFFFF
  81. #define SENSOR_DOES_NOT_KNOW 0xFFFFFFFF
  82. #define SENSOR_FEATURE_START 3000
  83. typedef enum {
  84. SENSOR_FEATURE_BEGIN = SENSOR_FEATURE_START,
  85. SENSOR_FEATURE_GET_RESOLUTION,
  86. SENSOR_FEATURE_GET_PERIOD,
  87. SENSOR_FEATURE_GET_PIXEL_CLOCK_FREQ,
  88. SENSOR_FEATURE_SET_ESHUTTER,
  89. SENSOR_FEATURE_SET_NIGHTMODE,
  90. SENSOR_FEATURE_SET_GAIN,
  91. SENSOR_FEATURE_SET_GAIN_AND_ESHUTTER,
  92. SENSOR_FEATURE_SET_FLASHLIGHT,
  93. SENSOR_FEATURE_SET_ISP_MASTER_CLOCK_FREQ,
  94. SENSOR_FEATURE_SET_REGISTER,
  95. SENSOR_FEATURE_GET_REGISTER,
  96. SENSOR_FEATURE_SET_CCT_REGISTER,
  97. SENSOR_FEATURE_GET_CCT_REGISTER,
  98. SENSOR_FEATURE_SET_ENG_REGISTER,
  99. SENSOR_FEATURE_GET_ENG_REGISTER,
  100. SENSOR_FEATURE_GET_REGISTER_DEFAULT,
  101. SENSOR_FEATURE_GET_CONFIG_PARA,
  102. SENSOR_FEATURE_CAMERA_PARA_TO_SENSOR,
  103. SENSOR_FEATURE_SENSOR_TO_CAMERA_PARA,
  104. SENSOR_FEATURE_GET_GROUP_COUNT,
  105. SENSOR_FEATURE_GET_GROUP_INFO,
  106. SENSOR_FEATURE_GET_ITEM_INFO,
  107. SENSOR_FEATURE_SET_ITEM_INFO,
  108. SENSOR_FEATURE_GET_ENG_INFO,
  109. SENSOR_FEATURE_GET_LENS_DRIVER_ID,
  110. SENSOR_FEATURE_SET_YUV_CMD,
  111. SENSOR_FEATURE_SET_VIDEO_MODE,
  112. SENSOR_FEATURE_SET_TARGET_FRAME_RATE,
  113. SENSOR_FEATURE_SET_CALIBRATION_DATA,
  114. SENSOR_FEATURE_SET_SENSOR_SYNC,
  115. SENSOR_FEATURE_INITIALIZE_AF,
  116. SENSOR_FEATURE_CONSTANT_AF,
  117. SENSOR_FEATURE_INFINITY_AF,
  118. SENSOR_FEATURE_MOVE_FOCUS_LENS,
  119. SENSOR_FEATURE_GET_AF_STATUS,
  120. SENSOR_FEATURE_GET_AE_STATUS,
  121. SENSOR_FEATURE_GET_AWB_STATUS,
  122. SENSOR_FEATURE_GET_AF_INF,
  123. SENSOR_FEATURE_GET_AF_MACRO,
  124. SENSOR_FEATURE_CHECK_SENSOR_ID,
  125. SENSOR_FEATURE_SET_AUTO_FLICKER_MODE,
  126. SENSOR_FEATURE_SET_TEST_PATTERN,
  127. SENSOR_FEATURE_SET_SOFTWARE_PWDN,
  128. SENSOR_FEATURE_SINGLE_FOCUS_MODE,
  129. SENSOR_FEATURE_CANCEL_AF,
  130. SENSOR_FEATURE_SET_AF_WINDOW,
  131. SENSOR_FEATURE_GET_EV_AWB_REF,
  132. SENSOR_FEATURE_GET_SHUTTER_GAIN_AWB_GAIN,
  133. SENSOR_FEATURE_GET_AF_MAX_NUM_FOCUS_AREAS,
  134. SENSOR_FEATURE_GET_AE_MAX_NUM_METERING_AREAS,
  135. SENSOR_FEATURE_SET_AE_WINDOW,
  136. SENSOR_FEATURE_GET_EXIF_INFO,
  137. SENSOR_FEATURE_GET_DELAY_INFO,
  138. SENSOR_FEATURE_SET_SLAVE_I2C_ID,
  139. SENSOR_FEATURE_SUSPEND,
  140. SENSOR_FEATURE_RESUME,
  141. SENSOR_FEATURE_SET_MAX_FRAME_RATE_BY_SCENARIO,
  142. SENSOR_FEATURE_GET_DEFAULT_FRAME_RATE_BY_SCENARIO,
  143. SENSOR_FEATURE_GET_AE_AWB_LOCK_INFO,
  144. SENSOR_FEATURE_AUTOTEST_CMD,
  145. SENSOR_FEATURE_GET_TEST_PATTERN_CHECKSUM_VALUE,
  146. SENSOR_FEATURE_GET_TEMPERATURE_VALUE,
  147. SENSOR_FEATURE_GET_SENSOR_CURRENT_TEMPERATURE,
  148. SENSOR_FEATURE_GET_AE_FLASHLIGHT_INFO,
  149. SENSOR_FEATURE_GET_TRIGGER_FLASHLIGHT_INFO, /* Trigger flashlight or not */
  150. SENSOR_FEATURE_SET_YUV_3A_CMD,
  151. SENSOR_FEATURE_SET_N3D_I2C_STREAM_REGDATA,
  152. SENSOR_FEATURE_SET_N3D_STOP_STREAMING,
  153. SENSOR_FEATURE_SET_N3D_START_STREAMING,
  154. SENSOR_FEATURE_GET_SENSOR_N3D_STREAM_TO_VSYNC_TIME,
  155. SENSOR_FEATURE_SET_ESHUTTER_GAIN,
  156. SENSOR_FEATURE_SET_OB_LOCK,
  157. SENSOR_FEATURE_SET_SENSOR_OTP_AWB_CMD,
  158. SENSOR_FEATURE_SET_SENSOR_OTP_LSC_CMD,
  159. SENSOR_FEATURE_GET_YUV_CAPTURE_OUTPUT_JPEG,
  160. SENSOR_FEATURE_SET_YUV_JPEG_PARA,
  161. SENSOR_FEATURE_GET_YUV_JPEG_INFO,
  162. SENSOR_FEATURE_SET_FRAMERATE,
  163. SENSOR_FEATURE_SET_HDR,
  164. SENSOR_FEATURE_GET_CROP_INFO,
  165. SENSOR_FEATURE_GET_VC_INFO,
  166. SENSOR_FEATURE_SET_IHDR_SHUTTER_GAIN,
  167. SENSOR_FEATURE_SET_AWB_GAIN,
  168. SENSOR_FEATURE_SET_MIN_MAX_FPS,
  169. SENSOR_FEATURE_GET_PDAF_INFO,
  170. SENSOR_FEATURE_GET_PDAF_DATA,
  171. SENSOR_FEATURE_GET_SENSOR_PDAF_CAPACITY,
  172. SENSOR_FEATURE_DEBUG_IMGSENSOR,
  173. SENSOR_FEATURE_SET_HDR_SHUTTER,
  174. SENSOR_FEATURE_SET_ISO,
  175. SENSOR_FEATURE_SET_PDAF,
  176. SENSOR_FEATURE_MAX
  177. } ACDK_SENSOR_FEATURE_ENUM;
  178. typedef enum {
  179. SENSOR_AF_IDLE = 0,
  180. SENSOR_AF_FOCUSING,
  181. SENSOR_AF_FOCUSED,
  182. SENSOR_AF_ERROR,
  183. SENSOR_AF_SCENE_DETECTING,
  184. SENSOR_AF_STATUS_MAX
  185. } ACDK_SENSOR_AF_STATUS_ENUM;
  186. typedef enum {
  187. SENSOR_AE_IDLE = 0,
  188. SENSOR_AE_EXPOSING,
  189. SENSOR_AE_EXPOSED,
  190. SENSOR_AE_ERROR,
  191. SENSOR_AE_LOCKED
  192. } ACDK_SENSOR_AE_STATUS_ENUM;
  193. typedef enum {
  194. SENSOR_AWB_IDLE = 0,
  195. SENSOR_AWB_BALANCING,
  196. SENSOR_AWB_BALANCED,
  197. SENSOR_AWB_ERROR,
  198. SENSOR_AWB_LOCKED
  199. } ACDK_SENSOR_AWB_STATUS_ENUM;
  200. typedef enum {
  201. SENSOR_INTERFACE_TYPE_PARALLEL = 0,
  202. SENSOR_INTERFACE_TYPE_MIPI,
  203. SENSOR_INTERFACE_TYPE_SERIAL, /* add for 72 ATV using serial interface */
  204. SENSOR_INTERFACE_TYPE_MAX
  205. } ACDK_SENSOR_INTERFACE_TYPE_ENUM;
  206. typedef enum {
  207. SENSOR_OUTPUT_FORMAT_RAW_B = 0,
  208. SENSOR_OUTPUT_FORMAT_RAW_Gb,
  209. SENSOR_OUTPUT_FORMAT_RAW_Gr,
  210. SENSOR_OUTPUT_FORMAT_RAW_R,
  211. SENSOR_OUTPUT_FORMAT_UYVY,
  212. SENSOR_OUTPUT_FORMAT_VYUY,
  213. SENSOR_OUTPUT_FORMAT_YUYV,
  214. SENSOR_OUTPUT_FORMAT_YVYU,
  215. SENSOR_OUTPUT_FORMAT_CbYCrY,
  216. SENSOR_OUTPUT_FORMAT_CrYCbY,
  217. SENSOR_OUTPUT_FORMAT_YCbYCr,
  218. SENSOR_OUTPUT_FORMAT_YCrYCb,
  219. SENSOR_OUTPUT_FORMAT_RAW8_B,
  220. SENSOR_OUTPUT_FORMAT_RAW8_Gb,
  221. SENSOR_OUTPUT_FORMAT_RAW8_Gr,
  222. SENSOR_OUTPUT_FORMAT_RAW8_R,
  223. SENSOR_OUTPUT_FORMAT_RAW_RWB_B,
  224. SENSOR_OUTPUT_FORMAT_RAW_RWB_Wb,
  225. SENSOR_OUTPUT_FORMAT_RAW_RWB_Wr,
  226. SENSOR_OUTPUT_FORMAT_RAW_RWB_R,
  227. SENSOR_OUTPUT_FORMAT_RAW_MONO
  228. } ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM;
  229. typedef enum {
  230. SENSOR_MIPI_1_LANE = 0,
  231. SENSOR_MIPI_2_LANE,
  232. SENSOR_MIPI_3_LANE,
  233. SENSOR_MIPI_4_LANE
  234. } ACDK_SENSOR_MIPI_LANE_NUMBER_ENUM;
  235. typedef enum {
  236. SCAM_1_DATA_CHANNEL = 0,
  237. SCAM_2_DATA_CHANNEL,
  238. SCAM_3_DATA_CHANNEL,
  239. SCAM_4_DATA_CHANNEL,
  240. } SENSOR_SCAM_DATA_CHANNEL_ENUM;
  241. typedef enum {
  242. MIPI_OPHY_NCSI2 = 0,
  243. MIPI_OPHY_CSI2 = 1,
  244. } SENSOR_MIPI_TYPE_ENUM;
  245. typedef enum {
  246. MIPI_SETTLEDELAY_AUTO = 0,
  247. MIPI_SETTLEDELAY_MANUAL = 1,
  248. } SENSOR_SETTLEDELAY_MODE_ENUM;
  249. typedef enum {
  250. COMP8_NONE = 0,
  251. COMP8_DI_30 = 0x30,
  252. COMP8_DI_31 = 0x31,
  253. COMP8_DI_32 = 0x32,
  254. COMP8_DI_33 = 0x33,
  255. COMP8_DI_34 = 0x34,
  256. COMP8_DI_35 = 0x35,
  257. COMP8_DI_36 = 0x36,
  258. COMP8_DI_37 = 0x37,
  259. COMP8_DI_2A = 0x2A,
  260. } SENSOR_DPCM_TYPE_ENUM;
  261. typedef struct {
  262. MUINT16 SensorPreviewWidth;
  263. MUINT16 SensorPreviewHeight;
  264. MUINT16 SensorFullWidth;
  265. MUINT16 SensorFullHeight;
  266. MUINT16 SensorVideoWidth;
  267. MUINT16 SensorVideoHeight;
  268. MUINT16 SensorHighSpeedVideoWidth;
  269. MUINT16 SensorHighSpeedVideoHeight;
  270. MUINT16 SensorSlimVideoWidth;
  271. MUINT16 SensorSlimVideoHeight;
  272. MUINT16 SensorCustom1Width;
  273. MUINT16 SensorCustom1Height;
  274. MUINT16 SensorCustom2Width;
  275. MUINT16 SensorCustom2Height;
  276. MUINT16 SensorCustom3Width;
  277. MUINT16 SensorCustom3Height;
  278. MUINT16 SensorCustom4Width;
  279. MUINT16 SensorCustom4Height;
  280. MUINT16 SensorCustom5Width;
  281. MUINT16 SensorCustom5Height;
  282. MUINT16 Sensor3DPreviewWidth;
  283. MUINT16 Sensor3DPreviewHeight;
  284. MUINT16 Sensor3DFullWidth;
  285. MUINT16 Sensor3DFullHeight;
  286. MUINT16 Sensor3DVideoWidth;
  287. MUINT16 Sensor3DVideoHeight;
  288. MUINT16 SensorEffectivePreviewWidth;
  289. MUINT16 SensorEffectivePreviewHeight;
  290. MUINT16 SensorEffectiveFullWidth;
  291. MUINT16 SensorEffectiveFullHeight;
  292. MUINT16 SensorEffectiveVideoWidth;
  293. MUINT16 SensorEffectiveVideoHeight;
  294. MUINT16 SensorEffectiveHighSpeedVideoWidth;
  295. MUINT16 SensorEffectiveHighSpeedVideoHeight;
  296. MUINT16 SensorEffective3DPreviewWidth;
  297. MUINT16 SensorEffective3DPreviewHeight;
  298. MUINT16 SensorEffective3DFullWidth;
  299. MUINT16 SensorEffective3DFullHeight;
  300. MUINT16 SensorEffective3DVideoWidth;
  301. MUINT16 SensorEffective3DVideoHeight;
  302. MUINT16 SensorPreviewWidthOffset; /* from effective width to output width */
  303. MUINT16 SensorPreviewHeightOffset; /* from effective height to output height */
  304. MUINT16 SensorFullWidthOffset; /* from effective width to output width */
  305. MUINT16 SensorFullHeightOffset; /* from effective height to output height */
  306. MUINT16 SensorVideoWidthOffset; /* from effective width to output width */
  307. MUINT16 SensorVideoHeightOffset; /* from effective height to output height */
  308. MUINT16 SensorHighSpeedVideoWidthOffset; /* from effective width to output width */
  309. MUINT16 SensorHighSpeedVideoHeightOffset; /* from effective height to output height */
  310. MUINT16 Sensor3DPreviewWidthOffset; /* from effective width to output width */
  311. MUINT16 Sensor3DPreviewHeightOffset; /* from effective height to output height */
  312. MUINT16 Sensor3DFullWidthOffset; /* from effective width to output width */
  313. MUINT16 Sensor3DFullHeightOffset; /* from effective height to output height */
  314. MUINT16 Sensor3DVideoWidthOffset; /* from effective width to output width */
  315. MUINT16 Sensor3DVideoHeightOffset; /* from effective height to output height */
  316. } ACDK_SENSOR_RESOLUTION_INFO_STRUCT, *PACDK_SENSOR_RESOLUTION_INFO_STRUCT;
  317. typedef struct {
  318. MUINT16 SensorPreviewResolutionX;
  319. MUINT16 SensorPreviewResolutionY;
  320. MUINT16 SensorFullResolutionX;
  321. MUINT16 SensorFullResolutionY;
  322. MUINT8 SensorClockFreq; /* MHz */
  323. MUINT8 SensorCameraPreviewFrameRate;
  324. MUINT8 SensorVideoFrameRate;
  325. MUINT8 SensorStillCaptureFrameRate;
  326. MUINT8 SensorWebCamCaptureFrameRate;
  327. MUINT8 SensorClockPolarity; /* SENSOR_CLOCK_POLARITY_HIGH/SENSOR_CLOCK_POLARITY_Low */
  328. MUINT8 SensorClockFallingPolarity;
  329. MUINT8 SensorClockRisingCount; /* 0..15 */
  330. MUINT8 SensorClockFallingCount; /* 0..15 */
  331. MUINT8 SensorClockDividCount; /* 0..15 */
  332. MUINT8 SensorPixelClockCount; /* 0..15 */
  333. MUINT8 SensorDataLatchCount; /* 0..15 */
  334. MUINT8 SensorHsyncPolarity;
  335. MUINT8 SensorVsyncPolarity;
  336. MUINT8 SensorInterruptDelayLines;
  337. MINT32 SensorResetActiveHigh;
  338. MUINT32 SensorResetDelayCount;
  339. ACDK_SENSOR_INTERFACE_TYPE_ENUM SensroInterfaceType;
  340. ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM SensorOutputDataFormat;
  341. ACDK_SENSOR_MIPI_LANE_NUMBER_ENUM SensorMIPILaneNumber;
  342. MUINT32 CaptureDelayFrame;
  343. MUINT32 PreviewDelayFrame;
  344. MUINT32 VideoDelayFrame;
  345. MUINT32 HighSpeedVideoDelayFrame;
  346. MUINT32 SlimVideoDelayFrame;
  347. MUINT32 YUVAwbDelayFrame;
  348. MUINT32 YUVEffectDelayFrame;
  349. MUINT32 Custom1DelayFrame;
  350. MUINT32 Custom2DelayFrame;
  351. MUINT32 Custom3DelayFrame;
  352. MUINT32 Custom4DelayFrame;
  353. MUINT32 Custom5DelayFrame;
  354. MUINT16 SensorGrabStartX;
  355. MUINT16 SensorGrabStartY;
  356. MUINT16 SensorDrivingCurrent;
  357. MUINT8 SensorMasterClockSwitch;
  358. MUINT8 AEShutDelayFrame; /* The frame of setting shutter default 0 for TG int */
  359. MUINT8 AESensorGainDelayFrame; /* The frame of setting sensor gain */
  360. MUINT8 AEISPGainDelayFrame;
  361. MUINT8 MIPIDataLowPwr2HighSpeedTermDelayCount;
  362. MUINT8 MIPIDataLowPwr2HighSpeedSettleDelayCount;
  363. MUINT8 MIPICLKLowPwr2HighSpeedTermDelayCount;
  364. MUINT8 SensorWidthSampling;
  365. MUINT8 SensorHightSampling;
  366. MUINT8 SensorPacketECCOrder;
  367. SENSOR_MIPI_TYPE_ENUM MIPIsensorType;
  368. MUINT8 SensorCaptureOutputJPEG; /* JPEG file or not? */
  369. MUINT8 SensorModeNum;
  370. MUINT8 IHDR_Support;
  371. MUINT16 IHDR_LE_FirstLine;
  372. SENSOR_SETTLEDELAY_MODE_ENUM SettleDelayMode;
  373. MUINT8 PDAF_Support;
  374. MUINT8 DPCM_INFO;
  375. MUINT8 PerFrameCTL_Support;
  376. SENSOR_SCAM_DATA_CHANNEL_ENUM SCAM_DataNumber;
  377. MUINT8 SCAM_DDR_En;
  378. MUINT8 SCAM_CLK_INV;
  379. MUINT8 SCAM_DEFAULT_DELAY;
  380. MUINT8 SCAM_CRC_En;
  381. MUINT8 SCAM_SOF_src;
  382. MUINT32 SCAM_Timout_Cali;
  383. } ACDK_SENSOR_INFO_STRUCT, *PACDK_SENSOR_INFO_STRUCT;
  384. typedef struct {
  385. MUINT16 SensorPreviewResolutionX;
  386. MUINT16 SensorPreviewResolutionY;
  387. MUINT16 SensorFullResolutionX;
  388. MUINT16 SensorFullResolutionY;
  389. MUINT8 SensorClockFreq; /* MHz */
  390. MUINT8 SensorCameraPreviewFrameRate;
  391. MUINT8 SensorVideoFrameRate;
  392. MUINT8 SensorStillCaptureFrameRate;
  393. MUINT8 SensorWebCamCaptureFrameRate;
  394. MUINT8 SensorClockPolarity; /* SENSOR_CLOCK_POLARITY_HIGH/SENSOR_CLOCK_POLARITY_Low */
  395. MUINT8 SensorClockFallingPolarity;
  396. MUINT8 SensorClockRisingCount; /* 0..15 */
  397. MUINT8 SensorClockFallingCount; /* 0..15 */
  398. MUINT8 SensorClockDividCount; /* 0..15 */
  399. MUINT8 SensorPixelClockCount; /* 0..15 */
  400. MUINT8 SensorDataLatchCount; /* 0..15 */
  401. MUINT8 SensorHsyncPolarity;
  402. MUINT8 SensorVsyncPolarity;
  403. MUINT8 SensorInterruptDelayLines;
  404. MINT32 SensorResetActiveHigh;
  405. MUINT32 SensorResetDelayCount;
  406. ACDK_SENSOR_INTERFACE_TYPE_ENUM SensroInterfaceType;
  407. ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM SensorOutputDataFormat;
  408. ACDK_SENSOR_MIPI_LANE_NUMBER_ENUM SensorMIPILaneNumber;
  409. MUINT32 CaptureDelayFrame;
  410. MUINT32 PreviewDelayFrame;
  411. MUINT32 VideoDelayFrame;
  412. MUINT32 HighSpeedVideoDelayFrame;
  413. MUINT32 SlimVideoDelayFrame;
  414. MUINT32 YUVAwbDelayFrame;
  415. MUINT32 YUVEffectDelayFrame;
  416. MUINT32 Custom1DelayFrame;
  417. MUINT32 Custom2DelayFrame;
  418. MUINT32 Custom3DelayFrame;
  419. MUINT32 Custom4DelayFrame;
  420. MUINT32 Custom5DelayFrame;
  421. MUINT16 SensorGrabStartX_PRV;
  422. MUINT16 SensorGrabStartY_PRV;
  423. MUINT16 SensorGrabStartX_CAP;
  424. MUINT16 SensorGrabStartY_CAP;
  425. MUINT16 SensorGrabStartX_VD;
  426. MUINT16 SensorGrabStartY_VD;
  427. MUINT16 SensorGrabStartX_VD1;
  428. MUINT16 SensorGrabStartY_VD1;
  429. MUINT16 SensorGrabStartX_VD2;
  430. MUINT16 SensorGrabStartY_VD2;
  431. MUINT16 SensorGrabStartX_CST1;
  432. MUINT16 SensorGrabStartY_CST1;
  433. MUINT16 SensorGrabStartX_CST2;
  434. MUINT16 SensorGrabStartY_CST2;
  435. MUINT16 SensorGrabStartX_CST3;
  436. MUINT16 SensorGrabStartY_CST3;
  437. MUINT16 SensorGrabStartX_CST4;
  438. MUINT16 SensorGrabStartY_CST4;
  439. MUINT16 SensorGrabStartX_CST5;
  440. MUINT16 SensorGrabStartY_CST5;
  441. MUINT16 SensorDrivingCurrent;
  442. MUINT8 SensorMasterClockSwitch;
  443. MUINT8 AEShutDelayFrame; /* The frame of setting shutter default 0 for TG int */
  444. MUINT8 AESensorGainDelayFrame; /* The frame of setting sensor gain */
  445. MUINT8 AEISPGainDelayFrame;
  446. MUINT8 MIPIDataLowPwr2HighSpeedTermDelayCount;
  447. MUINT8 MIPIDataLowPwr2HighSpeedSettleDelayCount;
  448. MUINT8 MIPIDataLowPwr2HSSettleDelayM0;
  449. MUINT8 MIPIDataLowPwr2HSSettleDelayM1;
  450. MUINT8 MIPIDataLowPwr2HSSettleDelayM2;
  451. MUINT8 MIPIDataLowPwr2HSSettleDelayM3;
  452. MUINT8 MIPIDataLowPwr2HSSettleDelayM4;
  453. MUINT8 MIPICLKLowPwr2HighSpeedTermDelayCount;
  454. MUINT8 SensorWidthSampling;
  455. MUINT8 SensorHightSampling;
  456. MUINT8 SensorPacketECCOrder;
  457. SENSOR_MIPI_TYPE_ENUM MIPIsensorType;
  458. MUINT8 SensorCaptureOutputJPEG; /* JPEG file or not? */
  459. MUINT8 SensorModeNum;
  460. MUINT8 IHDR_Support;
  461. MUINT16 IHDR_LE_FirstLine;
  462. SENSOR_SETTLEDELAY_MODE_ENUM SettleDelayMode;
  463. MUINT8 PDAF_Support;
  464. MUINT8 DPCM_INFO;
  465. MUINT8 IMGSENSOR_DPCM_TYPE_PRE;
  466. MUINT8 IMGSENSOR_DPCM_TYPE_CAP;
  467. MUINT8 IMGSENSOR_DPCM_TYPE_VD;
  468. MUINT8 IMGSENSOR_DPCM_TYPE_VD1;
  469. MUINT8 IMGSENSOR_DPCM_TYPE_VD2;
  470. MUINT8 PerFrameCTL_Support;
  471. SENSOR_SCAM_DATA_CHANNEL_ENUM SCAM_DataNumber;
  472. MUINT8 SCAM_DDR_En;
  473. MUINT8 SCAM_CLK_INV;
  474. MUINT8 SCAM_DEFAULT_DELAY;
  475. MUINT8 SCAM_CRC_En;
  476. MUINT8 SCAM_SOF_src;
  477. MUINT32 SCAM_Timout_Cali;
  478. } ACDK_SENSOR_INFO2_STRUCT, *PACDK_SENSOR_INFO2_STRUCT;
  479. typedef enum {
  480. ACDK_CCT_REG_ISP = 0,
  481. ACDK_CCT_REG_CMOS,
  482. ACDK_CCT_REG_CCD
  483. } ACDK_CCT_REG_TYPE_ENUM;
  484. /* R/W ISP/Sensor Register */
  485. typedef struct {
  486. ACDK_CCT_REG_TYPE_ENUM Type;
  487. MUINT32 RegAddr;
  488. MUINT32 RegData;
  489. } ACDK_CCT_REG_RW_STRUCT, *PACDK_CCT_REG_RW_STRUCT;
  490. typedef struct {
  491. ACDK_CCT_REG_TYPE_ENUM Type; /* ISP, CMOS_SENSOR, CCD_SENSOR */
  492. MUINT32 DeviceId;
  493. ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM StartPixelBayerPtn;
  494. MUINT16 GrabXOffset;
  495. MUINT16 GrabYOffset;
  496. } ACDK_CCT_SENSOR_INFO_STRUCT, *PACDK_CCT_SENSOR_INFO_STRUCT;
  497. typedef enum {
  498. CMOS_SENSOR = 0,
  499. CCD_SENSOR
  500. } SENSOR_TYPE_ENUM;
  501. typedef struct {
  502. MUINT16 SensorId;
  503. SENSOR_TYPE_ENUM SensorType;
  504. ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUM SensorOutputDataFormat;
  505. } ACDK_SENSOR_ENG_INFO_STRUCT;
  506. typedef struct {
  507. MUINT32 RegAddr;
  508. MUINT32 RegData;
  509. } ACDK_SENSOR_REG_INFO_STRUCT;
  510. typedef struct {
  511. MUINT8 debugStruct[32];
  512. MUINT8 debugSubstruct[32];
  513. MUINT32 isGet; /* 1 means get, 0 means set */
  514. MUINT32 value;
  515. } ACDK_SENSOR_DBG_IMGSENSOR_STRUCT;
  516. typedef struct {
  517. MUINT32 GroupIdx;
  518. MUINT32 ItemCount;
  519. MUINT8 *GroupNamePtr;
  520. } ACDK_SENSOR_GROUP_INFO_STRUCT;
  521. typedef struct {
  522. MUINT32 GroupIdx;
  523. MUINT32 ItemIdx;
  524. MUINT8 ItemNamePtr[50]; /* item name */
  525. MUINT32 ItemValue; /* item value */
  526. MINT32 IsTrueFalse; /* is this item for enable/disable functions */
  527. MINT32 IsReadOnly; /* is this item read only */
  528. MINT32 IsNeedRestart; /* after set this item need restart */
  529. MUINT32 Min; /* min value of item value */
  530. MUINT32 Max; /* max value of item value */
  531. } ACDK_SENSOR_ITEM_INFO_STRUCT;
  532. typedef enum {
  533. ACDK_SENSOR_IMAGE_NORMAL = 0,
  534. ACDK_SENSOR_IMAGE_H_MIRROR,
  535. ACDK_SENSOR_IMAGE_V_MIRROR,
  536. ACDK_SENSOR_IMAGE_HV_MIRROR
  537. } ACDK_SENSOR_IMAGE_MIRROR_ENUM;
  538. typedef enum {
  539. ACDK_SENSOR_OPERATION_MODE_CAMERA_PREVIEW = 0,
  540. ACDK_SENSOR_OPERATION_MODE_VIDEO,
  541. ACDK_SENSOR_OPERATION_MODE_STILL_CAPTURE,
  542. ACDK_SENSOR_OPERATION_MODE_HIGHSP_VIDEO1,
  543. ACDK_SENSOR_OPERATION_MODE_HIGHSP_VIDEO2,
  544. ACDK_SENSOR_OPERATION_MODE_WEB_CAPTURE,
  545. ACDK_SENSOR_OPERATION_MODE_CUSTOM1,
  546. ACDK_SENSOR_OPERATION_MODE_CUSTOM2,
  547. ACDK_SENSOR_OPERATION_MODE_CUSTOM3,
  548. ACDK_SENSOR_OPERATION_MODE_CUSTOM4,
  549. ACDK_SENSOR_OPERATION_MODE_CUSTOM5,
  550. ACDK_SENSOR_OPERATION_MODE_MAX
  551. } ACDK_SENSOR_OPERATION_MODE_ENUM;
  552. typedef struct {
  553. MUINT16 GrabStartX; /* The first grabed column data of the image sensor in pixel clock count */
  554. MUINT16 GrabStartY; /* The first grabed row data of the image sensor in pixel clock count */
  555. MUINT16 ExposureWindowWidth; /* Exposure window width of image sensor */
  556. MUINT16 ExposureWindowHeight; /* Exposure window height of image sensor */
  557. MUINT16 ImageTargetWidth; /* image captured width */
  558. MUINT16 ImageTargetHeight; /* image captuerd height */
  559. MUINT16 ExposurePixel; /* exposure window width of image sensor + dummy pixel */
  560. MUINT16 CurrentExposurePixel; /* exposure window width of image sensor + dummy pixel */
  561. MUINT16 ExposureLine; /* exposure window width of image sensor + dummy line */
  562. MUINT16 ZoomFactor; /* digital zoom factor */
  563. } ACDK_SENSOR_EXPOSURE_WINDOW_STRUCT;
  564. typedef struct {
  565. ACDK_SENSOR_IMAGE_MIRROR_ENUM SensorImageMirror;
  566. MINT32 EnableShutterTansfer; /* capture only */
  567. MINT32 EnableFlashlightTansfer; /* flash light capture only */
  568. ACDK_SENSOR_OPERATION_MODE_ENUM SensorOperationMode;
  569. MUINT16 ImageTargetWidth; /* image captured width */
  570. MUINT16 ImageTargetHeight; /* image captuerd height */
  571. MUINT16 CaptureShutter; /* capture only */
  572. MUINT16 FlashlightDuty; /* flash light capture only */
  573. MUINT16 FlashlightOffset; /* flash light capture only */
  574. MUINT16 FlashlightShutFactor; /* flash light capture only */
  575. MUINT16 FlashlightMinShutter;
  576. ACDK_CAMERA_OPERATION_MODE_ENUM MetaMode; /* capture only */
  577. MUINT32 DefaultPclk; /* Sensor pixel clock(Ex:24000000) */
  578. MUINT32 Pixels; /* Sensor active pixel number */
  579. MUINT32 Lines; /* Sensor active line number */
  580. MUINT32 Shutter; /* Sensor current shutter */
  581. MUINT32 FrameLines; /* valid+dummy lines for minimum shutter */
  582. } ACDK_SENSOR_CONFIG_STRUCT;
  583. typedef enum {
  584. MCLK_48MHZ_GROUP = 0x1,
  585. MCLK_52MHZ_GROUP = 0x2,
  586. } ACKD_SENSOR_MCLK_ENUM;
  587. typedef struct {
  588. MUINT8 on;
  589. ACKD_SENSOR_MCLK_ENUM freq;
  590. } ACDK_SENSOR_MCLK_STRUCT;
  591. typedef struct {
  592. MUINT16 full_w;
  593. MUINT16 full_h;
  594. MUINT16 x0_offset;
  595. MUINT16 y0_offset;
  596. MUINT16 w0_size;
  597. MUINT16 h0_size;
  598. MUINT16 scale_w;
  599. MUINT16 scale_h;
  600. MUINT16 x1_offset;
  601. MUINT16 y1_offset;
  602. MUINT16 w1_size;
  603. MUINT16 h1_size;
  604. MUINT16 x2_tg_offset;
  605. MUINT16 y2_tg_offset;
  606. MUINT16 w2_tg_size;
  607. MUINT16 h2_tg_size;
  608. } SENSOR_WINSIZE_INFO_STRUCT;
  609. typedef struct {
  610. MUINT32 SensorId;
  611. SENSOR_WINSIZE_INFO_STRUCT SensorWinSize;
  612. } SENSOR_WINSIZE_STRUCT, *pSENSOR_WINSIZE_STRUCT;
  613. typedef struct {
  614. MUINT16 VC_Num;
  615. MUINT16 VC_PixelNum;
  616. MUINT16 ModeSelect; /* 0: auto mode, 1:direct mode */
  617. MUINT16 EXPO_Ratio; /* 1/1, 1/2, 1/4, 1/8 */
  618. MUINT16 ODValue; /* OD Vaule */
  619. MUINT16 RG_STATSMODE; /* STATS divistion mdoe 0: 16x16, 1:8x8, 2:4x4, 3:1x1*/
  620. MUINT16 VC0_ID;
  621. MUINT16 VC0_DataType;
  622. MUINT16 VC0_SIZEH;
  623. MUINT16 VC0_SIZEV;
  624. MUINT16 VC1_ID;
  625. MUINT16 VC1_DataType;
  626. MUINT16 VC1_SIZEH;
  627. MUINT16 VC1_SIZEV;
  628. MUINT16 VC2_ID;
  629. MUINT16 VC2_DataType;
  630. MUINT16 VC2_SIZEH;
  631. MUINT16 VC2_SIZEV;
  632. MUINT16 VC3_ID;
  633. MUINT16 VC3_DataType;
  634. MUINT16 VC3_SIZEH;
  635. MUINT16 VC3_SIZEV;
  636. } SENSOR_VC_INFO_STRUCT, *pSENSOR_VC_INFO_STRUCT;
  637. typedef struct {
  638. MUINT32 ABS_GAIN_GR;
  639. MUINT32 ABS_GAIN_R;
  640. MUINT32 ABS_GAIN_B;
  641. MUINT32 ABS_GAIN_GB;
  642. } SET_SENSOR_AWB_GAIN, *PSET_SENSOR_AWB_GAIN;
  643. typedef struct {
  644. MUINT32 SENSOR_MODE;
  645. MUINT32 ISO;
  646. } SET_SENSOR_ISO, *PSET_SENSOR_ISO;
  647. typedef struct {
  648. MUINT32 i4OffsetX; /* start offset of first PD block */
  649. MUINT32 i4OffsetY;
  650. MUINT32 i4PitchX; /* PD block pitch */
  651. MUINT32 i4PitchY;
  652. MUINT32 i4PairNum; /* PD pair num in one block */
  653. MUINT32 i4SubBlkW; /* sub block width (one PD pair in one sub block) */
  654. MUINT32 i4SubBlkH; /* sub block height */
  655. MUINT32 i4PosL[16][2]; /* left pd pixel position in one block*/
  656. MUINT32 i4PosR[16][2]; /* right pd pixel position in one block*/
  657. MUINT32 iMirrorFlip; /* 0:IMAGE_NORMAL,1:IMAGE_H_MIRROR,2:IMAGE_V_MIRROR,3:IMAGE_HV_MIRROR*/
  658. } SET_PD_BLOCK_INFO_T, *PSET_PD_BLOCK_INFO_T;
  659. typedef enum {
  660. SENSORIF_PARALLEL = 0,
  661. SENSORIF_SERIAL,
  662. SENSORIF_MIPI_DHY0,
  663. SENSORIF_MIPI_DHY1,
  664. SENSORIF_MIPI_DHY2
  665. } SENSOR_PHY_TYPE_ENUM;
  666. typedef enum {
  667. DATA_8BIT_FMT = 0x0,
  668. DATA_10BIT_FMT = 0x1,
  669. DATA_12BIT_FMT = 0x2,
  670. DATA_YUV422_FMT = 0x3,
  671. } INDATA_FORMAT_ENUM;
  672. typedef struct {
  673. MINT32 mSensorDev;
  674. MUINT8 GpioEnable;
  675. SENSOR_PHY_TYPE_ENUM SensroInterfaceType;
  676. INDATA_FORMAT_ENUM SensorIndataformat;
  677. } IMGSENSOR_GPIO_STRUCT;
  678. /*******************************************************************************
  679. *
  680. ********************************************************************************/
  681. #define MAXIMUM_NVRAM_CAMERA_SENSOR_FILE_SIZE_KERNEL 4096
  682. #define NVRAM_CAMERA_SENSOR_FILE_VERSION 1
  683. /* Sensor table */
  684. #define MAXIMUM_SENSOR_CCT_REG_NUMBER 100
  685. #define MAXIMUM_SENSOR_ENG_REG_NUMBER 100
  686. typedef struct {
  687. MUINT32 Addr;
  688. MUINT32 Para;
  689. } SENSOR_REG_STRUCT;
  690. typedef struct {
  691. MUINT32 Version;
  692. MUINT32 SensorId; /* ID of sensor module */
  693. SENSOR_REG_STRUCT SensorEngReg[MAXIMUM_SENSOR_ENG_REG_NUMBER];
  694. SENSOR_REG_STRUCT SensorCCTReg[MAXIMUM_SENSOR_CCT_REG_NUMBER];
  695. 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)];
  696. } NVRAM_SENSOR_DATA_STRUCT, *PNVRAM_SENSOR_DATA_STRUCT;
  697. #define MAX_SENSOR_CAL_SIZE_KERNEL (1024) /* Byte */
  698. #define MAX_SHADING_DATA_TBL ((MAX_SENSOR_CAL_SIZE_KERNEL-8)/4)
  699. typedef struct {
  700. MUINT32 DataFormat;
  701. MUINT32 DataSize;
  702. MUINT32 ShadingData[MAX_SHADING_DATA_TBL];
  703. } SET_SENSOR_CALIBRATION_DATA_STRUCT, *PSET_SENSOR_CALIBRATION_DATA_STRUCT;
  704. typedef struct {
  705. MSDK_SCENARIO_ID_ENUM ScenarioId[2];
  706. ACDK_SENSOR_INFO_STRUCT * pInfo[2];
  707. ACDK_SENSOR_CONFIG_STRUCT * pConfig[2];
  708. } ACDK_SENSOR_GETINFO_STRUCT, *PACDK_SENSOR_GETINFO_STRUCT;
  709. typedef struct {
  710. MUINT32 SensorId;
  711. ACDK_SENSOR_INFO2_STRUCT *pInfo;
  712. ACDK_SENSOR_RESOLUTION_INFO_STRUCT *pSensorResolution;
  713. } IMAGESENSOR_GETINFO_STRUCT, *PIMAGESENSOR_GETINFO_STRUCT;
  714. typedef struct {
  715. CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera;
  716. ACDK_SENSOR_FEATURE_ENUM FeatureId;
  717. MUINT8 *pFeaturePara;
  718. MUINT32 *pFeatureParaLen;
  719. } ACDK_SENSOR_FEATURECONTROL_STRUCT, *PACDK_SENSOR_FEATURECONTROL_STRUCT;
  720. typedef struct {
  721. CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera;
  722. MSDK_SCENARIO_ID_ENUM ScenarioId;
  723. ACDK_SENSOR_EXPOSURE_WINDOW_STRUCT *pImageWindow;
  724. ACDK_SENSOR_CONFIG_STRUCT *pSensorConfigData;
  725. } ACDK_SENSOR_CONTROL_STRUCT;
  726. typedef struct {
  727. ACDK_SENSOR_RESOLUTION_INFO_STRUCT *pResolution[2];
  728. } ACDK_SENSOR_PRESOLUTION_STRUCT;
  729. typedef struct regval_list {
  730. MUINT32 reg_addr;
  731. MUINT32 value;
  732. MUINT32 bytes;
  733. } REGVAL_LIST_STRUCT;
  734. #define KDIMGSENSOR_REGVAL_LIST_MAX_NUM 256
  735. typedef struct format_struct {
  736. MUINT8 *desc;
  737. MUINT32 pixelformat;
  738. /* REGVAL_LIST_STRUCT regs[KDIMGSENSOR_REGVAL_LIST_MAX_NUM]; */
  739. int (*pfInitCfg)(void);
  740. } IMGSENSOR_FORMAT_STRUCT;
  741. typedef struct {
  742. IMGSENSOR_FORMAT_STRUCT format;
  743. MUINT32 u4InClk; /* Common part //hard coded */
  744. MUINT32 u4OutClk; /* Common part // */
  745. MUINT32 u4TotalPixelPerLine; /* By modes */
  746. MUINT32 u4TotalLinesPerFrame; /* By modes and frame rate setting */
  747. MUINT32 u4ActualWidth; /* By modes */
  748. MUINT32 u4ActualHeight; /* By modes */
  749. MUINT32 u4Width; /* By modes */
  750. MUINT32 u4Height; /* By modes */
  751. MUINT32 u4FrameTimeInus; /* By modes and frame rate setting */
  752. MUINT32 u4MinFrameTimeInus; /* By modes */
  753. MUINT32 u4LineTimeInus; /* By modes */
  754. MUINT32 u4FinePixCntPerus; /* Common part */
  755. MUINT32 u4MinFineTimeInus; /* By modes */
  756. MUINT32 u4MaxFineTimeInus; /* By modes */
  757. MUINT32 u4XStart;
  758. MUINT32 u4XEnd;
  759. MUINT32 u4YStart;
  760. MUINT32 u4YEnd;
  761. } stImgSensorFormat;
  762. #ifdef CONFIG_COMPAT
  763. /* Redifne structures for compat_ioctl */
  764. typedef struct {
  765. MSDK_SCENARIO_ID_ENUM ScenarioId[2];
  766. compat_uptr_t pInfo[2];
  767. compat_uptr_t pConfig[2];
  768. } COMPAT_ACDK_SENSOR_GETINFO_STRUCT;
  769. typedef struct {
  770. MUINT32 SensorId;
  771. compat_uptr_t pInfo;
  772. compat_uptr_t pSensorResolution;
  773. } COMPAT_IMAGESENSOR_GETINFO_STRUCT;
  774. typedef struct {
  775. CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera;
  776. ACDK_SENSOR_FEATURE_ENUM FeatureId;
  777. compat_uptr_t pFeaturePara;
  778. compat_uptr_t pFeatureParaLen;
  779. } COMPAT_ACDK_SENSOR_FEATURECONTROL_STRUCT;
  780. typedef struct {
  781. CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera;
  782. MSDK_SCENARIO_ID_ENUM ScenarioId;
  783. compat_uptr_t pImageWindow;
  784. compat_uptr_t pSensorConfigData;
  785. } COMPAT_ACDK_SENSOR_CONTROL_STRUCT;
  786. typedef struct {
  787. compat_uptr_t pResolution[2];
  788. } COMPAT_ACDK_SENSOR_PRESOLUTION_STRUCT;
  789. #endif
  790. /*******************************************************************************
  791. *
  792. ********************************************************************************/
  793. /* */
  794. /* adoption to winmo driver files */
  795. /* */
  796. /* typedef */
  797. /* #define kal_uint8 u8 */
  798. /* #define MSDK_SCENARIO_ID_ENUM ACDK_SCENARIO_ID_ENUM */
  799. #define MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT ACDK_SENSOR_EXPOSURE_WINDOW_STRUCT
  800. #define MSDK_SENSOR_CONFIG_STRUCT ACDK_SENSOR_CONFIG_STRUCT
  801. #define MSDK_SENSOR_FEATURE_ENUM ACDK_SENSOR_FEATURE_ENUM
  802. #define MSDK_SENSOR_REG_INFO_STRUCT ACDK_SENSOR_REG_INFO_STRUCT
  803. #define MSDK_SENSOR_GROUP_INFO_STRUCT ACDK_SENSOR_GROUP_INFO_STRUCT
  804. #define MSDK_SENSOR_ITEM_INFO_STRUCT ACDK_SENSOR_ITEM_INFO_STRUCT
  805. #define MSDK_SENSOR_ENG_INFO_STRUCT ACDK_SENSOR_ENG_INFO_STRUCT
  806. #define MSDK_SENSOR_INFO_STRUCT ACDK_SENSOR_INFO_STRUCT
  807. #define MSDK_SENSOR_RESOLUTION_INFO_STRUCT ACDK_SENSOR_RESOLUTION_INFO_STRUCT
  808. #define MSDK_SENSOR_DBG_IMGSENSOR_INFO_STRUCT ACDK_SENSOR_DBG_IMGSENSOR_STRUCT
  809. /* MSDK_SCENARIO_ID_ENUM => ACDK_SCENARIO_ID_ENUM */
  810. /* #define MSDK_SCENARIO_ID_CAMERA_PREVIEW ACDK_SCENARIO_ID_CAMERA_PREVIEW */
  811. /* #define MSDK_SCENARIO_ID_VIDEO_PREVIEW ACDK_SCENARIO_ID_VIDEO_PREVIEW */
  812. /* #define MSDK_SCENARIO_ID_CAMERA_CAPTURE_JPEG ACDK_SCENARIO_ID_CAMERA_CAPTURE_JPEG */
  813. #define MSDK_SENSOR_OPERATION_MODE_VIDEO ACDK_SENSOR_OPERATION_MODE_VIDEO
  814. /* #define MSDK_SCENARIO_ID_CAMERA_ZSD ACDK_SCENARIO_ID_CAMERA_ZSD */
  815. /* #define MSDK_SCENARIO_ID_CAMERA_3D_PREVIEW ACDK_SCENARIO_ID_CAMERA_3D_PREVIEW */
  816. /* #define MSDK_SCENARIO_ID_CAMERA_3D_CAPTURE ACDK_SCENARIO_ID_CAMERA_3D_CAPTURE */
  817. /* #define MSDK_SCENARIO_ID_CAMERA_3D_VIDEO ACDK_SCENARIO_ID_CAMERA_3D_VIDEO */
  818. /*******************************************************************************
  819. *
  820. ********************************************************************************/
  821. /*******************************************************************************
  822. *
  823. ********************************************************************************/
  824. /* for new simplifed sensor driver */
  825. typedef struct {
  826. MUINT32(*SensorOpen)(void);
  827. MUINT32(*SensorGetInfo)(MUINT32 *pScenarioId[2], MSDK_SENSOR_INFO_STRUCT * pSensorInfo[2], MSDK_SENSOR_CONFIG_STRUCT * pSensorConfigData[2]);
  828. MUINT32(*SensorGetResolution)(MSDK_SENSOR_RESOLUTION_INFO_STRUCT * pSensorResolution[2]);
  829. MUINT32(*SensorFeatureControl)(CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera, MSDK_SENSOR_FEATURE_ENUM FeatureId, MUINT8 *pFeaturePara, MUINT32 *pFeatureParaLen);
  830. MUINT32(*SensorControl)(MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *pImageWindow, MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
  831. MUINT32(*SensorClose)(void);
  832. } MULTI_SENSOR_FUNCTION_STRUCT, *PMULTI_SENSOR_FUNCTION_STRUCT;
  833. typedef struct {
  834. MUINT32(*SensorOpen)(void);
  835. MUINT32(*SensorGetInfo)(MUINT32 *pScenarioId[2], MSDK_SENSOR_INFO_STRUCT * pSensorInfo[2], MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData[2]);
  836. MUINT32(*SensorGetResolution)(MSDK_SENSOR_RESOLUTION_INFO_STRUCT * pSensorResolution[2]);
  837. MUINT32(*SensorFeatureControl)(CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera, MSDK_SENSOR_FEATURE_ENUM FeatureId, MUINT8 *pFeaturePara, MUINT32 *pFeatureParaLen);
  838. MUINT32(*SensorControl)(CAMERA_DUAL_CAMERA_SENSOR_ENUM InvokeCamera, MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *pImageWindow, MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
  839. MUINT32(*SensorClose)(void);
  840. } MULTI_SENSOR_FUNCTION_STRUCT2, *PMULTI_SENSOR_FUNCTION_STRUCT2;
  841. typedef struct {
  842. MUINT32(*SensorOpen)(void);
  843. MUINT32(*SensorGetInfo)(MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_INFO_STRUCT *pSensorInfo,
  844. MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
  845. MUINT32(*SensorGetResolution)(MSDK_SENSOR_RESOLUTION_INFO_STRUCT *pSensorResolution);
  846. MUINT32(*SensorFeatureControl)(MSDK_SENSOR_FEATURE_ENUM FeatureId, MUINT8 *pFeaturePara, MUINT32 *pFeatureParaLen);
  847. MUINT32(*SensorControl)(MSDK_SCENARIO_ID_ENUM ScenarioId, MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *pImageWindow, MSDK_SENSOR_CONFIG_STRUCT *pSensorConfigData);
  848. MUINT32(*SensorClose)(void);
  849. #if 1 /* isp suspend resume patch */
  850. MSDK_SCENARIO_ID_ENUM ScenarioId;
  851. MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT imageWindow;
  852. MSDK_SENSOR_CONFIG_STRUCT sensorConfigData;
  853. #endif
  854. } SENSOR_FUNCTION_STRUCT, *PSENSOR_FUNCTION_STRUCT;
  855. typedef struct {
  856. MUINT32 SensorId;
  857. MUINT8 drvname[32];
  858. MUINT32(*SensorInit)(PSENSOR_FUNCTION_STRUCT *pfFunc);
  859. } ACDK_KD_SENSOR_INIT_FUNCTION_STRUCT, *PACDK_KD_SENSOR_INIT_FUNCTION_STRUCT;
  860. #define KDIMGSENSOR_DUAL_SHIFT 16
  861. #define KDIMGSENSOR_DUAL_MASK_MSB 0xFFFF0000
  862. #define KDIMGSENSOR_DUAL_MASK_LSB 0x0000FFFF
  863. #define KDIMGSENSOR_NOSENSOR "non_sensor"
  864. #define KDIMGSENSOR_MAX_INVOKE_DRIVERS (2)
  865. #define KDIMGSENSOR_INVOKE_DRIVER_0 (0)
  866. #define KDIMGSENSOR_INVOKE_DRIVER_1 (1)
  867. /* For sensor synchronize the exposure time / sensor gain and isp gain. */
  868. typedef struct {
  869. MUINT16 u2ISPNewRGain;
  870. MUINT16 u2ISPNewGrGain;
  871. MUINT16 u2ISPNewGbGain;
  872. MUINT16 u2ISPNewBGain;
  873. MUINT16 u2SensorNewExpTime;
  874. MUINT16 u2SensorNewGain;
  875. MUINT8 uSensorExpDelayFrame;
  876. MUINT8 uSensorGainDelayFrame;
  877. MUINT8 uISPGainDelayFrame;
  878. MUINT8 uDummy;
  879. } ACDK_KD_SENSOR_SYNC_STRUCT, *PACDK_KD_SENSOR_SYNC_STRUCT;
  880. typedef struct {
  881. MUINT16 AeRefLV05Shutter; /* Sensor AE Shutter under Lv05 */
  882. MUINT16 AeRefLV13Shutter; /* Sensor AE Shutter under Lv13 */
  883. MUINT16 AeRefLV05Gain; /* Sensor AE Gain under Lv05 */
  884. MUINT16 AeRefLV13Gain; /* Sensor AE Gain under Lv13 */
  885. } SENSOR_AE_REF_STRUCT, *PSENSOR_AE_REF_STRUCT;
  886. typedef struct {
  887. MUINT16 AwbRefD65Rgain; /* Sensor AWB R Gain under D65 */
  888. MUINT16 AwbRefD65Bgain; /* Sensor AWB B Gain under D65 */
  889. MUINT16 AwbRefCWFRgain; /* Sensor AWB R Gain under CWF */
  890. MUINT16 AwbRefCWFBgain; /* Sensor AWB B Gain under CWF */
  891. } SENSOR_AWB_GAIN_REF_STRUCT, *PSENSOR_AWB_GAIN_REF_STRUCT;
  892. typedef struct {
  893. SENSOR_AE_REF_STRUCT SensorAERef; /* AE Ref information for ASD usage */
  894. SENSOR_AWB_GAIN_REF_STRUCT SensorAwbGainRef; /* AWB Gain Ref information for ASD usage */
  895. MUINT32 SensorLV05LV13EVRef; /* EV calculate for ASD usage */
  896. } SENSOR_AE_AWB_REF_STRUCT, *PSENSOR_AE_AWB_REF_STRUCT;
  897. typedef struct {
  898. MUINT16 AeCurShutter; /* Current Sensor AE Shutter */
  899. MUINT16 AeCurGain; /* Current Sensor AE Gain */
  900. } SENSOR_AE_CUR_STRUCT, *PSENSOR_AE_CUR_STRUCT;
  901. typedef struct {
  902. MUINT16 AwbCurRgain; /* Current Sensor AWB R Gain */
  903. MUINT16 AwbCurBgain; /* Current Sensor AWB R Gain */
  904. } SENSOR_AWB_GAIN_CUR_STRUCT, *PSENSOR_AWB_GAIN_CUR_STRUCT;
  905. typedef struct {
  906. SENSOR_AE_CUR_STRUCT SensorAECur; /* AE Current information for ASD usage */
  907. SENSOR_AWB_GAIN_CUR_STRUCT SensorAwbGainCur; /* AWB Gain Current information for ASD usage */
  908. } SENSOR_AE_AWB_CUR_STRUCT, *PSENSOR_AE_AWB_CUR_STRUCT;
  909. typedef struct {
  910. MUINT32 FNumber;
  911. MUINT32 AEISOSpeed;
  912. MUINT32 AWBMode;
  913. MUINT32 CapExposureTime;
  914. MUINT32 FlashLightTimeus;
  915. MUINT32 RealISOValue;
  916. } SENSOR_EXIF_INFO_STRUCT, *PSENSOR_EXIF_INFO_STRUCT;
  917. typedef struct {
  918. MUINT32 InitDelay;
  919. MUINT32 EffectDelay;
  920. MUINT32 AwbDelay;
  921. MUINT32 AFSwitchDelayFrame;
  922. MUINT32 EvDelay;
  923. MUINT32 SatDelay;
  924. MUINT32 BrightDelay;
  925. MUINT32 ContrastDelay;
  926. } SENSOR_DELAY_INFO_STRUCT, *PSENSOR_DELAY_INFO_STRUCT;
  927. typedef struct {
  928. MUINT32 u4Fno;
  929. MUINT32 Exposuretime;
  930. MUINT32 Gain;
  931. MUINT32 GAIN_BASE;
  932. } SENSOR_FLASHLIGHT_AE_INFO_STRUCT, *PSENSOR_FLASHLIGHT_AE_INFO_STRUCT;
  933. /* multisensor driver */
  934. typedef struct {
  935. MUINT32 drvIndex[KDIMGSENSOR_MAX_INVOKE_DRIVERS]; /* max 2 driver sumultaneously */
  936. } SENSOR_DRIVER_INDEX_STRUCT, *PSENSOR_DRIVER_INDEX_STRUCT;
  937. /* hardcode by GPIO module, should be sync with.(cust_gpio_usage.h) */
  938. #define GPIO_CAMERA_INVALID 0xFF
  939. /* */
  940. typedef enum {
  941. IMGSENSOR_SOCKET_POS_NONE = 0xFFFFFFFF,
  942. IMGSENSOR_SOCKET_POS_RIGHT = 0x1,
  943. IMGSENSOR_SOCKET_POS_LEFT = 0x2,
  944. } IMGSENSOR_SOCKET_POSITION_ENUM;
  945. /* */
  946. typedef enum {
  947. IMGSENSOR_SET_I2C_ID_STATE = 0x00,
  948. IMGSENSOR_SET_I2C_ID_FORCE
  949. } IMGSENSOR_SET_I2C_ID_ENUM;
  950. typedef enum {
  951. SENSOR_3A_AE_LOCK = 0,
  952. SENSOR_3A_AE_UNLOCK,
  953. SENSOR_3A_AWB_LOCK,
  954. SENSOR_3A_AWB_UNLOCK,
  955. SENSOR_3A_AE_ON,
  956. SENSOR_3A_AE_OFF,
  957. SENSOR_3A_AWB_ON,
  958. SENSOR_3A_AWB_OFF,
  959. SENSOR_3A_AF_INFINITY,
  960. /* SENSOR_3A_AF_LOCK, */
  961. /* SENSOR_3A_AF_UNLOCK, */
  962. } ACDK_SENSOR_3A_LOCK_ENUM;
  963. typedef struct {
  964. MUINT32 tgtWidth;
  965. MUINT32 tgtHeight;
  966. MUINT32 quality;
  967. } ACDK_SENSOR_JPEG_OUTPUT_PARA;
  968. /* for JPEG Sensor Info */
  969. typedef struct {
  970. MUINT32 u4FileSize; /* For input sensor width */
  971. MUINT32 u4SrcW; /* For input sensor width */
  972. MUINT32 u4SrcH; /* For input sensor height */
  973. } ACDK_SENSOR_JPEG_INFO;
  974. #endif /* _KD_IMGSENSOR_DATA_H */