gd_sensor.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. /*!
  2. *******************************************************************************
  3. **
  4. ** \file gd_sensor.h
  5. **
  6. ** \brief sensor driver.
  7. **
  8. ** (C) Goke Microelectronics China 2002 - 2014
  9. **
  10. ** \attention THIS SAMPLE CODE IS PROVIDED AS IS. GOKE MICROELECTRONICS
  11. ** ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR
  12. ** OMMISSIONS.
  13. **
  14. ** \version \$Id: gd_sensor.h, v1.00 2014/07/14 08:13:54 $
  15. **
  16. ******************************************************************************/
  17. #ifndef _GD_SENSOR_H_
  18. #define _GD_SENSOR_H_
  19. #include <gtypes.h>
  20. #include <gmodids.h>
  21. #include "gd_i2c.h"
  22. #include "gd_spi.h"
  23. //*****************************************************************************
  24. //*****************************************************************************
  25. //** Defines and Macros
  26. //*****************************************************************************
  27. //*****************************************************************************
  28. #define GD_SENSOR_GPIO_NOT_USED 0xFF
  29. /*! \brief The base error code for the sensor driver.*/
  30. //#define GD_SENSOR_ERR_BASE (GD_SENSOR_MODULE_ID<<16)
  31. #define GD_SENSOR_ERR_BASE (0x09<<16)
  32. /*=========================Start GD_VIDEO_INFO==============================*/
  33. #define GD_VIDEO_FPS(fps) (512000000 / fps)
  34. #define GD_VIDEO_FPS_AUTO 0 //0
  35. #define GD_VIDEO_FPS_1 512000000 //(512000000 / 1)
  36. #define GD_VIDEO_FPS_2 256000000 //(512000000 / 2)
  37. #define GD_VIDEO_FPS_3 170666667 //(512000000 / 3)
  38. #define GD_VIDEO_FPS_3_125 163840000 //(512000000 / 25 * 8)
  39. #define GD_VIDEO_FPS_3_75 136533333 //(512000000 / 15 * 4)
  40. #define GD_VIDEO_FPS_4 128000000 //(512000000 / 4)
  41. #define GD_VIDEO_FPS_5 102400000 //(512000000 / 5)
  42. #define GD_VIDEO_FPS_6 85333333 //(512000000 / 6)
  43. #define GD_VIDEO_FPS_6_25 81920000 //(512000000 / 25 * 4)
  44. #define GD_VIDEO_FPS_7_5 68266667 //(512000000 / 15 * 2)
  45. #define GD_VIDEO_FPS_10 51200000 //(512000000 / 10)
  46. #define GD_VIDEO_FPS_12 42666667 //(512000000 / 12)
  47. #define GD_VIDEO_FPS_12_5 40960000 //(512000000 / 25 * 2)
  48. #define GD_VIDEO_FPS_13 39384615 //(512000000 / 13)
  49. #define GD_VIDEO_FPS_14 36571428 //(512000000 / 14)
  50. #define GD_VIDEO_FPS_15 34133333 //(512000000 / 15)
  51. #define GD_VIDEO_FPS_20 25600000 //(512000000 / 20)
  52. #define GD_VIDEO_FPS_23_976 21354688 //(512000000 / 23976 * 1000)
  53. #define GD_VIDEO_FPS_24 21333333 //(512000000 / 24)
  54. #define GD_VIDEO_FPS_25 20480000 //(512000000 / 25)
  55. #define GD_VIDEO_FPS_29_97 17083750 //(512000000 / 2997 * 100)
  56. #define GD_VIDEO_FPS_30 17066667 //(512000000 / 30)
  57. #define GD_VIDEO_FPS_50 10240000 //(512000000 / 50)
  58. #define GD_VIDEO_FPS_59_94 8541875 //(512000000 / 5994 * 100)
  59. #define GD_VIDEO_FPS_60 8533333 //(512000000 / 60)
  60. #define GD_VIDEO_FPS_120 4266667 //(512000000 / 120)
  61. #define GD_VIDEO_BITS(bits) (bits)
  62. #define GD_VIDEO_BITS_AUTO GD_VIDEO_BITS(0)
  63. #define GD_VIDEO_BITS_8 GD_VIDEO_BITS(8)
  64. #define GD_VIDEO_BITS_10 GD_VIDEO_BITS(10)
  65. #define GD_VIDEO_BITS_12 GD_VIDEO_BITS(12)
  66. #define GD_VIDEO_BITS_14 GD_VIDEO_BITS(14)
  67. #define GD_VIDEO_BITS_16 GD_VIDEO_BITS(16)
  68. #define GD_VIDEO_RATIO(ratio) (ratio)
  69. #define GD_VIDEO_RATIO_AUTO GD_VIDEO_RATIO(0)
  70. #define GD_VIDEO_RATIO_4_3 GD_VIDEO_RATIO(1)
  71. #define GD_VIDEO_RATIO_16_9 GD_VIDEO_RATIO(2)
  72. #define GD_VIDEO_RATIO_1_1 GD_VIDEO_RATIO(4)
  73. // SENSOR READ-OUT MODES
  74. #define GD_SENSOR_SONYICX495_FRAME_READ_OUT (0x0)
  75. #define GD_SENSOR_SONYICX495_4_16_HORI (0x1)
  76. #define GD_SENSOR_SONYICX495_4_16_NO_HORI (0x2)
  77. #define GD_SENSOR_SONYICX495_4_8_HORI (0x3)
  78. #define GD_SENSOR_SONYICX495_4_8_NO_HORI (0x4)
  79. #define GD_SENSOR_SONYICX495_AF_MODE (0x5)
  80. #define GD_SENSOR_MICRON_MP9T001_2xV_2xH_Binning (0x1)
  81. #define GD_SENSOR_MICRON_MP9T001_CFA_PHHASE_CORRECTION_VERTICAL_ONLY (0x2)
  82. #define GD_SENSOR_MICRON_MP9T001_CFA_PHHASE_CORRECTION_HORIZONTAL_ONLY (0x3)
  83. //*****************************************************************************
  84. //*****************************************************************************
  85. //** Enumerated types
  86. //*****************************************************************************
  87. //*****************************************************************************
  88. enum
  89. {
  90. /*!
  91. ** The SENSOR is not of the right mode to to perform
  92. ** a requested function, e.g. writing to a GPIO which was
  93. ** configured as input.
  94. */
  95. /*! IC could not be identified. */
  96. GD_ERR_SENSOR_UNKNOWN_DEVICE = GD_SENSOR_ERR_BASE,
  97. /*! Opening a sensor instance failed. */
  98. GD_ERR_SENSOR_OPEN,
  99. /*! The SENSOR is busy, e.g. with tuning. */
  100. GD_ERR_SENSOR_BUSY,
  101. /*! GPIO error, e.g. for reseting the SENSOR. */
  102. GD_ERR_SENSOR_GPIO,
  103. /*! I2C communication error. */
  104. GD_ERR_SENSOR_I2C,
  105. /*! SPI communication error. */
  106. GD_ERR_SENSOR_SPI,
  107. /*! Timeout, i.e. the SENSOR did not respond in time. */
  108. GD_ERR_SENSOR_TIMER,
  109. /*! Other error, not further specified. */
  110. GD_ERR_SENSOR_OTHER,
  111. GD_ERR_FUNC_NOT_SUPPORTED,
  112. };
  113. /*!
  114. *******************************************************************************
  115. **
  116. ** \brief Delivery system types.
  117. **
  118. ******************************************************************************/
  119. // SENSOR IDs
  120. typedef enum
  121. {
  122. GD_SENSOR_SYSTEM_TYPE_UNKOWN = 0, //
  123. GD_SENSOR_SYSTEM_TYPE_MICRON_MT9T001 = 1,
  124. GD_SENSOR_SYSTEM_TYPE_ALTASENS_PROCAMHD = 2,
  125. GD_SENSOR_SYSTEM_TYPE_SONY_ICX495CCD = 3,
  126. GD_SENSOR_SYSTEM_TYPE_MICRON_MT9P001 = 4, //micron 5meg, same for MT9P031
  127. GD_SENSOR_SYSTEM_TYPE_OV5260 = 5,
  128. GD_SENSOR_SYSTEM_TYPE_MICRON_MT9M002 = 6, // micron 1.6meg
  129. GD_SENSOR_SYSTEM_TYPE_MICRON_MT9P401 = 7,
  130. GD_SENSOR_SYSTEM_TYPE_Altasens_ALTA3372 = 8,
  131. GD_SENSOR_SYSTEM_TYPE_Altasens_ALTA5262 = 9,
  132. GD_SENSOR_SYSTEM_TYPE_SONY_IMX017 = 10,
  133. GD_SENSOR_SYSTEM_TYPE_MICRON_MT9N001 = 11, // micron 9meg
  134. GD_SENSOR_SYSTEM_TYPE_SONY_IMX039 = 12,
  135. GD_SENSOR_SYSTEM_TYPE_MICRON_MT9J001 = 13, // micron 10meg
  136. GD_SENSOR_SYSTEM_TYPE_SEMCOYHD = 14,
  137. GD_SENSOR_SYSTEM_TYPE_SONYIMX044 = 15,
  138. GD_SENSOR_SYSTEM_TYPE_OV5633 = 16,
  139. GD_SENSOR_SYSTEM_TYPE_OV9710 = 17,
  140. GD_SENSOR_SYSTEM_TYPE_OV9715 = 17,
  141. GD_SENSOR_SYSTEM_TYPE_MICRON_MT9V136 = 18,
  142. GD_SENSOR_SYSTEM_TYPE_OV7720 = 19,
  143. GD_SENSOR_SYSTEM_TYPE_OV7725 = 19,
  144. GD_SENSOR_SYSTEM_TYPE_OV7740 = 20,
  145. GD_SENSOR_SYSTEM_TYPE_OV10620 = 21,
  146. GD_SENSOR_SYSTEM_TYPE_OV10630 = 21,
  147. GD_SENSOR_SYSTEM_TYPE_MICRON_MT9P031 = 22, // variant of micron5m
  148. GD_SENSOR_SYSTEM_TYPE_OV9810 = 23,
  149. GD_SENSOR_SYSTEM_TYPE_OV8810 = 24,
  150. GD_SENSOR_SYSTEM_TYPE_SONYIMX032 = 25,
  151. GD_SENSOR_SYSTEM_TYPE_MICRON_MT9P014 = 26,
  152. GD_SENSOR_SYSTEM_TYPE_OV2710 = 27,
  153. GD_SENSOR_SYSTEM_TYPE_OV2715 = 27,
  154. GD_SENSOR_SYSTEM_TYPE_OV5653 = 28,
  155. GD_SENSOR_SYSTEM_TYPE_SONYIMX035 = 29,
  156. GD_SENSOR_SYSTEM_TYPE_OV14810 = 29,
  157. GD_SENSOR_SYSTEM_TYPE_MICRON_MT9M033 = 30,
  158. GD_SENSOR_SYSTEM_TYPE_OV7962 = 31,
  159. GD_SENSOR_SYSTEM_TYPE_SEC_S5K4AWFX = 32, //Samsung
  160. GD_SENSOR_SYSTEM_TYPE_MICRON_MT9T002 = 32, // copy from uItron iOne
  161. GD_SENSOR_SYSTEM_TYPE_SAMSUNG_S5K5B3GX = 32,
  162. GD_SENSOR_SYSTEM_TYPE_SONYIMX072 = 33,
  163. GD_SENSOR_SYSTEM_TYPE_SONYIMX122 = 34,
  164. GD_SENSOR_SYSTEM_TYPE_SONYIMX222 = 34,
  165. GD_SENSOR_SYSTEM_TYPE_SONYIMX121 = 35,
  166. GD_SENSOR_SYSTEM_TYPE_MICRON_AR0331 = 42,
  167. GD_SENSOR_SYSTEM_TYPE_GENERIC_SENSOR = 127, //changed to 127 in new DSP firmware
  168. }GD_SENSOR_SYSTEM_TYPE_E;
  169. typedef enum
  170. {
  171. GD_VIDEO_SYSTEM_AUTO = 0,
  172. GD_VIDEO_SYSTEM_NTSC,
  173. GD_VIDEO_SYSTEM_PAL,
  174. GD_VIDEO_SYSTEM_SECAM,
  175. GD_VIDEO_SYSTEM_ALL,
  176. }GD_SENSOR_VIDEO_SYSTEM_E;
  177. typedef enum
  178. {
  179. GD_VIN_SRC_IDLE = 20000,
  180. GD_VIN_SRC_RESET,
  181. GD_VIN_SRC_SET_POWER,
  182. GD_VIN_SRC_SUSPEND,
  183. GD_VIN_SRC_RESUME,
  184. GD_VIN_SRC_GET_INFO = 20100,
  185. GD_VIN_SRC_GET_VIDEO_INFO,
  186. GD_VIN_SRC_GET_CAPABILITY,
  187. GD_VIN_SRC_CHECK_VIDEO_MODE,
  188. GD_VIN_SRC_SELECT_CHANNEL,
  189. GD_VIN_SRC_GET_AGC_INFO,
  190. GD_VIN_SRC_GET_SHUTTER_INFO,
  191. GD_VIN_SRC_GET_VBLANK_TIME,
  192. GD_VIN_SRC_GET_VIDEO_MODE = 21000,
  193. GD_VIN_SRC_GET_STILL_MODE,
  194. GD_VIN_SRC_GET_FPN,
  195. GD_VIN_SRC_GET_BLC,
  196. GD_VIN_SRC_GET_CAP_WINDOW,
  197. GD_VIN_SRC_GET_FRAME_RATE, //Ref GD_VIDEO_FPS
  198. GD_VIN_SRC_GET_BLANK,
  199. GD_VIN_SRC_GET_PIXEL_SKIP_BIN,
  200. GD_VIN_SRC_GET_SHUTTER_TIME,
  201. GD_VIN_SRC_GET_GAIN_DB,
  202. GD_VIN_SRC_GET_CAPTURE_MODE,
  203. GD_VIN_SRC_GET_TRIGGER_MODE,
  204. GD_VIN_SRC_GET_LOW_LIGHT_MODE,
  205. GD_VIN_SRC_GET_SLOWSHUTTER_MODE,
  206. GD_VIN_SRC_GET_MIRROR_MODE,
  207. GD_VIN_SRC_GET_ANTI_FLICKER,
  208. GD_VIN_SRC_GET_DGAIN_RATIO,
  209. GD_VIN_SRC_GET_OPERATION_MODE,
  210. GD_VIN_SRC_GET_SENSOR_TEMPERATURE,
  211. GD_VIN_SRC_SET_VIDEO_MODE = 22000,
  212. GD_VIN_SRC_SET_STILL_MODE,
  213. GD_VIN_SRC_SET_FPN,
  214. GD_VIN_SRC_SET_BLC,
  215. GD_VIN_SRC_SET_CAP_WINDOW,
  216. GD_VIN_SRC_SET_FRAME_RATE, //Ref GD_VIDEO_FPS
  217. GD_VIN_SRC_SET_BLANK,
  218. GD_VIN_SRC_SET_PIXEL_SKIP_BIN,
  219. GD_VIN_SRC_SET_SHUTTER_TIME,
  220. GD_VIN_SRC_SET_GAIN_DB,
  221. GD_VIN_SRC_SET_CAPTURE_MODE,
  222. GD_VIN_SRC_SET_TRIGGER_MODE,
  223. GD_VIN_SRC_SET_LOW_LIGHT_MODE,
  224. GD_VIN_SRC_SET_SLOWSHUTTER_MODE,
  225. GD_VIN_SRC_SET_MIRROR_MODE,
  226. GD_VIN_SRC_SET_ANTI_FLICKER,
  227. GD_VIN_SRC_SET_OPERATION_MODE,
  228. GD_VIN_SRC_SET_DGAIN_RATIO,
  229. GD_VIN_SRC_TEST_DUMP_REG = 29000,
  230. GD_VIN_SRC_TEST_GET_DEV_ID,
  231. GD_VIN_SRC_TEST_GET_REG_DATA,
  232. GD_VIN_SRC_TEST_SET_REG_DATA,
  233. GD_VIN_SRC_TEST_DUMP_SBRG_REG = 30000,
  234. GD_VIN_SRC_TEST_GET_SBRG_REG_DATA,
  235. GD_VIN_SRC_TEST_SET_SBRG_REG_DATA,
  236. }GD_SENSOR_CMD_E;
  237. /* ======================= Standart format defines ========================== */
  238. typedef enum
  239. {
  240. GD_VIDEO_MODE_MISC_FIRST = 0,
  241. GD_VIDEO_MODE_AUTO = 0,
  242. GD_VIDEO_MODE_320_240 = 1, //320x240
  243. GD_VIDEO_MODE_320_288 = 2, //320x288
  244. GD_VIDEO_MODE_360_240 = 3, //360x240
  245. GD_VIDEO_MODE_360_288 = 4, //360x288
  246. GD_VIDEO_MODE_480_240 = 5, //480x240
  247. GD_VIDEO_MODE_720_240 = 6, //720x240
  248. GD_VIDEO_MODE_960_240 = 7, //960x240
  249. GD_VIDEO_MODE_VGA = 8, //640x480
  250. GD_VIDEO_MODE_SVGA = 9, //800x600
  251. GD_VIDEO_MODE_XGA = 10, //1024x768
  252. GD_VIDEO_MODE_SXGA = 11, //1280x1024
  253. GD_VIDEO_MODE_UXGA = 12, //1600x1200
  254. GD_VIDEO_MODE_QXGA = 13, //2048x1536
  255. GD_VIDEO_MODE_WVGA = 14, //800x480
  256. GD_VIDEO_MODE_WSVGA = 15, //1024x600
  257. GD_VIDEO_MODE_1280_960 = 16, //1280x960
  258. GD_VIDEO_MODE_WXGA = 17, //1280x800
  259. GD_VIDEO_MODE_WSXGA = 18, //1440x900
  260. GD_VIDEO_MODE_WSXGAP = 19, //1680x1050
  261. GD_VIDEO_MODE_WUXGA = 20, //1920x1200
  262. /* Add new format below and update GD_VIDEO_MODE_NUM*/
  263. GD_VIDEO_MODE_480_640 = 21, //480x640
  264. GD_VIDEO_MODE_SXGAP = 22, //1400x1050
  265. GD_VIDEO_MODE_QSXGA = 23, //2592x1944
  266. GD_VIDEO_MODE_HVGA = 24, //320x480
  267. GD_VIDEO_MODE_480_800 = 25, //480x800
  268. GD_VIDEO_MODE_2048_1152 = 26, //2048x1152
  269. GD_VIDEO_MODE_1920_1440 = 27, //1920x1440
  270. GD_VIDEO_MODE_2560x1440 = 28, //2560x1440, 3.7MP
  271. GD_VIDEO_MODE_2208x1242 = 29, //2208x1242, 2.7MP
  272. GD_VIDEO_MODE_2304x1296 = 30, //2304x1296
  273. GD_VIDEO_MODE_2304x1536 = 31, //2304x1536, 3.4MP
  274. GD_VIDEO_MODE_240_400 = 32, //240x400
  275. GD_VIDEO_MODE_2160P30 = 33, //3840x2160@30fps
  276. GD_VIDEO_MODE_2160P25 = 34, //3840x2160@25fps
  277. GD_VIDEO_MODE_2160P24 = 35, //3840x2160@24fps
  278. GD_VIDEO_MODE_2160P24_SE = 36, //4096x2160@24fps, SMPTE
  279. GD_VIDEO_MODE_HDMI_NATIVE = 37, //Best Native Resolution
  280. GD_VIDEO_MODE_720P24 = 38, //720p24
  281. GD_VIDEO_MODE_720P25 = 39, //720p25
  282. GD_VIDEO_MODE_720P30 = 40, //720p30
  283. GD_VIDEO_MODE_1296P60 = 41, //2304x1296@60fps
  284. GD_VIDEO_MODE_1152x648 = 42, //1152x648
  285. GD_VIDEO_MODE_4096x2160 = 43, //4096x2160
  286. GD_VIDEO_MODE_4016x3016 = 44, //4016x3016
  287. GD_VIDEO_MODE_4000x3000 = 45, //4000x3000
  288. GD_VIDEO_MODE_960_540 = 46, //960x540
  289. GD_VIDEO_MODE_3280_2464 = 47, //3280x2464
  290. GD_VIDEO_MODE_3280_1852 = 48, //3280x1852
  291. GD_VIDEO_MODE_2520_1424 = 49, //2520x1424
  292. GD_VIDEO_MODE_1640_1232 = 50, //1640x1232
  293. GD_VIDEO_MODE_2048_1080 = 51, //2048x1080
  294. GD_VIDEO_MODE_3840x2160 = 52, //3840x2160
  295. GD_VIDEO_MODE_768_512 = 53, //768x512
  296. GD_VIDEO_MODE_FWVGA = 54, //854x480
  297. GD_VIDEO_MODE_1296_972 = 55, //1296x972
  298. GD_VIDEO_MODE_640_400 = 56, //640x400
  299. GD_VIDEO_MODE_1296_1032 = 57, //1296x1032
  300. GD_VIDEO_MODE_3264_2448 = 58, //3264x2448
  301. GD_VIDEO_MODE_2304_1836 = 59, //2304x1836
  302. GD_VIDEO_MODE_3264_1836 = 60, //3264x1836
  303. GD_VIDEO_MODE_2208_1836 = 61, //2208x1836
  304. GD_VIDEO_MODE_1280_918 = 62, //1280x918
  305. GD_VIDEO_MODE_816_612 = 63, //816x612
  306. GD_VIDEO_MODE_320_306 = 64, //320x306
  307. GD_VIDEO_MODE_3072_2048 = 65, //3072x2048
  308. GD_VIDEO_MODE_2592_1944 = 66, //2592x1944
  309. GD_VIDEO_MODE_1536_1024 = 67, //1536x1024
  310. GD_VIDEO_MODE_2560_2048 = 68, //2560x2048
  311. GD_VIDEO_MODE_MISC_LAST,
  312. GD_VIDEO_MODE_OFF = 0xF000,
  313. //Still Standard
  314. GD_VIDEO_MODE_STILL_FIRST = 0xFFE0,
  315. GD_VIDEO_MODE_3M_4_3 = 0xFFE0,
  316. GD_VIDEO_MODE_3M_16_9 = 0xFFE1,
  317. GD_VIDEO_MODE_4M_4_3 = 0xFFE2,
  318. GD_VIDEO_MODE_4M_16_9 = 0xFFE3,
  319. GD_VIDEO_MODE_5M_4_3 = 0xFFE4,
  320. GD_VIDEO_MODE_5M_16_9 = 0xFFE5,
  321. GD_VIDEO_MODE_STILL_LAST,
  322. //Video Standard
  323. GD_VIDEO_MODE_STANDARD_FIRST= 0xFFF0,
  324. GD_VIDEO_MODE_480I = 0xFFF0,
  325. GD_VIDEO_MODE_576I = 0xFFF1,
  326. GD_VIDEO_MODE_D1_NTSC = 0xFFF2, //480p
  327. GD_VIDEO_MODE_D1_PAL = 0xFFF3, //576p
  328. GD_VIDEO_MODE_720P = 0xFFF4,
  329. GD_VIDEO_MODE_720P_PAL = 0xFFF5, //720p50
  330. GD_VIDEO_MODE_1080I = 0xFFF6,
  331. GD_VIDEO_MODE_1080I_PAL = 0xFFF7, //1080i50
  332. GD_VIDEO_MODE_1080P = 0xFFF8,
  333. GD_VIDEO_MODE_1080P_PAL = 0xFFF9, //1080i50
  334. GD_VIDEO_MODE_1080I48 = 0xFFFA, //1080i48
  335. GD_VIDEO_MODE_1080P24 = 0xFFFB, //1080p24
  336. GD_VIDEO_MODE_1080P25 = 0xFFFC, //1080p25
  337. GD_VIDEO_MODE_1080P30 = 0xFFFD, //1080p30
  338. GD_VIDEO_MODE_1080P60 = 0xFFFE,
  339. GD_VIDEO_MODE_STANDARD_LAST = 0xFFFF,
  340. GD_VIDEO_MODE_TEST = 0xFFFE,
  341. GD_VIDEO_MODE_MAX = 0xFFFF,
  342. }GD_VIDEO_MODE_E;
  343. typedef enum
  344. {
  345. GD_VIN_SRC_MIRROR_HORRIZONTALLY_VERTICALLY = 0,
  346. GD_VIN_SRC_MIRROR_HORRIZONTALLY,
  347. GD_VIN_SRC_MIRROR_VERTICALLY,
  348. GD_VIN_SRC_MIRROR_NONE,
  349. GD_VIN_SRC_MIRROR_AUTO = 255,
  350. }GD_SENSOR_MIRROR_PATTERN_E;
  351. typedef enum
  352. {
  353. GD_VIN_SRC_BAYER_PATTERN_RG = 0,
  354. GD_VIN_SRC_BAYER_PATTERN_BG,
  355. GD_VIN_SRC_BAYER_PATTERN_GR,
  356. GD_VIN_SRC_BAYER_PATTERN_GB,
  357. GD_VIN_SRC_BAYER_PATTERN_AUTO = 255,
  358. }GD_SENSOR_BAYER_PATTERN_E;
  359. //*****************************************************************************
  360. //*****************************************************************************
  361. //** Data Structures
  362. //*****************************************************************************
  363. //*****************************************************************************
  364. /*!
  365. *******************************************************************************
  366. **
  367. ** \brief Front-end device data parameters.
  368. **
  369. ** \sa GD_SENSOR_OPEN_PARAMS_S
  370. **
  371. ******************************************************************************/
  372. typedef struct
  373. {
  374. /* Delivery system type of sensor. */
  375. GD_SENSOR_SYSTEM_TYPE_E systemType;
  376. /*! I2C device address for Sensor. */
  377. U8 i2cAddrSensor;
  378. /*! Handle of I2C channel for communication. */
  379. GD_HANDLE handleI2C;
  380. /*! Handle of I2C channel for communication. */
  381. GD_HANDLE handleSPI;
  382. GD_HANDLE spicsGPIO;
  383. /*! Handle of GPIO pin to reset the sensor (NULL = no HW reset). */
  384. GD_HANDLE resetGPIO;
  385. GD_HANDLE powerGPIO;
  386. /*! Device specific function for docmd the sensor. */
  387. GERR (*sensorDoCmdFct)(GD_HANDLE*, GD_SENSOR_CMD_E, void*);
  388. /*! Device specific function for closing the sensor. */
  389. GERR (*sensorCloseFct)(GD_HANDLE*);
  390. /*! Device specific function for resetting the sensor. */
  391. GERR (*sensorResetFct)(GD_HANDLE*);
  392. void* pinfo;
  393. char* name;
  394. }GD_SENSOR_DEVICE_DATA_S;
  395. /*!
  396. *******************************************************************************
  397. **
  398. ** \brief Open parameters.
  399. **
  400. ** \sa GD_SENSOR_Open()
  401. **
  402. ******************************************************************************/
  403. typedef struct
  404. {
  405. /*! I2C open parameters (NULL = not used). */
  406. GD_I2C_OPEN_PARAMS_S* pI2COpenParams;
  407. /*! I2C device address for Sensor. */
  408. U8 i2cAddrSensor;
  409. GD_SPI_OPEN_PARAMS_S* pSPIOpenParams;
  410. GBOOL usei2c;
  411. S8 resetGPIO;
  412. S8 powerGPIO;
  413. /*! Delivery system type. */
  414. GD_SENSOR_SYSTEM_TYPE_E systemType;
  415. /*!
  416. ** Pointer to open function of device specific driver.
  417. ** If set to NULL, the low level sensor drivers provided
  418. ** by the GOKESDK will be used.
  419. */
  420. GERR (*sensorOpenFct)(GD_SENSOR_DEVICE_DATA_S*);
  421. char* name;
  422. }GD_SENSOR_OPEN_PARAMS_S;
  423. typedef struct
  424. {
  425. U32 width;
  426. U32 height;
  427. U32 fps;
  428. U8 format;
  429. U8 type;
  430. U8 bits;
  431. U8 ratio;
  432. U8 system;
  433. U8 flip;
  434. U8 rotate;
  435. U16 rev;
  436. }GD_SENSOR_VIDEO_INFO_S;
  437. /* agc info */
  438. typedef struct
  439. {
  440. S32 db_max;
  441. S32 db_min;
  442. S32 db_step;
  443. }GD_SENSOR_AGC_INFO_S;
  444. typedef struct
  445. {
  446. U16 max_shutter_value; // not used
  447. U16 min_shutter_value; // not used
  448. U16 shutter_step; // shutter_step/gain_step
  449. }GD_SENSOR_SHUTTER_INFO_S;
  450. typedef struct
  451. {
  452. GD_SENSOR_MIRROR_PATTERN_E pattern;
  453. GD_SENSOR_BAYER_PATTERN_E bayer_pattern;
  454. }GD_SENSOR_MIRROR_MODE_S;
  455. typedef struct
  456. {
  457. U32 reg;
  458. U32 data;
  459. U32 regmap;
  460. }GD_SENSOR_REG_DATA_S;
  461. //*****************************************************************************
  462. //*****************************************************************************
  463. //** Global Data
  464. //*****************************************************************************
  465. //*****************************************************************************
  466. //*****************************************************************************
  467. //*****************************************************************************
  468. //** API Functions
  469. //*****************************************************************************
  470. //*****************************************************************************
  471. #ifdef __cplusplus
  472. extern "C" {
  473. #endif
  474. GERR GD_SENSOR_Init(void);
  475. GERR GD_SENSOR_Open(GD_SENSOR_OPEN_PARAMS_S* pOpenParams, GD_HANDLE* pHandle);
  476. GERR GD_SENSOR_Close(GD_HANDLE* pHandle);
  477. GERR GD_SENSOR_Reset(GD_HANDLE* pHandle);
  478. GERR GD_SENSOR_Sleep(U32 nMesc);
  479. GERR GD_SENSOR_DoCmd(GD_HANDLE* pHandle, GD_SENSOR_CMD_E cmd, void *args);
  480. /* open functions for front end detect */
  481. GERR GD_SENSOR_DetectOpen_OV2710_parallel(GD_SENSOR_OPEN_PARAMS_S* pOpenParams, GD_HANDLE* pHandle);
  482. GERR GD_SENSOR_Detect_OV2710_parallel(GD_I2C_OPEN_PARAMS_S* pI2COpenParams);
  483. GERR GD_SENSOR_DetectOpen_OV9710(GD_SENSOR_OPEN_PARAMS_S* pOpenParams, GD_HANDLE* pHandle);
  484. GERR GD_SENSOR_Detect_OV9710(GD_I2C_OPEN_PARAMS_S* pI2COpenParams);
  485. GERR GD_SENSOR_DetectOpen_IMX222(GD_SENSOR_OPEN_PARAMS_S* pOpenParams, GD_HANDLE* pHandle);
  486. GERR GD_SENSOR_Detect_IMX222(GD_SPI_OPEN_PARAMS_S* pSPIOpenParams);
  487. #ifdef __cplusplus
  488. }
  489. #endif
  490. #endif /* _GD_SENSOR_H_ */
  491. /* end of gd_sensor.h */