1
0

hpm_mt9m114.h 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867
  1. /*
  2. * Copyright (c) 2023 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_MT9M114_H
  8. #define HPM_MT9M114_H
  9. #include "hpm_camera_config.h"
  10. #include "hpm_common.h"
  11. /* MT9M114_ERROR_ACTION_BLOCK
  12. * 0 : return fail
  13. * 1 : print error message to console and block
  14. */
  15. #define MT9M114_ERROR_ACTION_BLOCK 0
  16. #define MT9M114_HOST_CMD_TIMEOUT 100
  17. #ifndef MT9M114_ACTIVE_IMAGE_WIDTH
  18. #define MT9M114_ACTIVE_IMAGE_WIDTH (640U)
  19. #endif
  20. #ifndef MT9M114_ACTIVE_IMAGE_HEIGHT
  21. #define MT9M114_ACTIVE_IMAGE_HEIGHT (480U)
  22. #endif
  23. #define DUMMY_LINES 8
  24. #define DUMMY_COLUMNS 8
  25. #define SENSOR_WIDTH 1296
  26. #define SENSOR_HEIGHT 976
  27. #define DUMMY_WIDTH_BUFFER 8
  28. #define DUMMY_HEIGHT_BUFFER 8
  29. #define ACTIVE_SENSOR_WIDTH (SENSOR_WIDTH - (2 * DUMMY_COLUMNS))
  30. #define ACTIVE_SENSOR_HEIGHT (SENSOR_HEIGHT - (2 * DUMMY_LINES))
  31. /**
  32. * @brief MT9M114 sensor driver APIs
  33. * @defgroup MT9M114_interface sensor driver APIs
  34. * @ingroup component_interfaces
  35. * @{
  36. *
  37. */
  38. /***********************************************************************************************************************
  39. *
  40. * Definitions
  41. *
  42. **********************************************************************************************************************/
  43. /**
  44. * @brief MT9M114 definition
  45. */
  46. /*******************************************************************************
  47. * Definitions
  48. ******************************************************************************/
  49. #if defined(MT9M114_DUAL_CAMERA)
  50. #define MT9M114_I2C_ADDR 0x48
  51. #define MT9M114_I2C_ADDR_IR 0x5D
  52. #else
  53. #define MT9M114_I2C_ADDR 0x48
  54. #endif
  55. #define MT9M114_CHIP_ID 0x2481
  56. #define MT9M114_REG_ADDR_LEN (2)
  57. /*! @brief MT9M114 register definitions.*/
  58. /* 1.Core registers */
  59. #define MT9M114_REG_Y_ADDR_START 0x3002
  60. #define MT9M114_REG_X_ADDR_START 0x3004
  61. #define MT9M114_REG_Y_ADDR_END 0x3006
  62. #define MT9M114_REG_X_ADDR_END 0x3008
  63. #define MT9M114_REG_FRAME_LENGTH_LINES 0x300A
  64. #define MT9M114_REG_LINE_LENGTH_PCK_ 0x300C
  65. #define MT9M114_REG_COARSE_INTEGRATION_TIME 0x3012
  66. #define MT9M114_REG_FINE_INTEGRATION_TIME 0x3014
  67. #define MT9M114_REG_RESET_REGISTER 0x301A
  68. #define MT9M114_REG_FLASH 0x3046
  69. #define MT9M114_REG_FLASH_COUNT 0x3048
  70. #define MT9M114_REG_GREEN1_GAIN 0x3056
  71. #define MT9M114_REG_BLUE_GAIN 0x3058
  72. #define MT9M114_REG_RED_GAIN 0x305A
  73. #define MT9M114_REG_GREEN2_GAIN 0x305C
  74. #define MT9M114_REG_GLOBAL_GAIN 0x305E
  75. #define MT9M114_REG_FUSE_ID1 0x31F4
  76. #define MT9M114_REG_FUSE_ID2 0x31F6
  77. #define MT9M114_REG_FUSE_ID3 0x31F8
  78. #define MT9M114_REG_FUSE_ID4 0x31FA
  79. #define MT9M114_REG_CHAIN_CONTROL 0x31FC
  80. #define MT9M114_REG_CUSTOMER_REV 0x31FE
  81. /* 2.SOC1 registers */
  82. #define MT9M114_REG_COLOR_PIPELINE_CONTROL 0x3210
  83. /* 3.SOC2 registers */
  84. #define MT9M114_REG_P_G1_P0Q0 0x3640
  85. #define MT9M114_REG_P_G1_P0Q1 0x3642
  86. #define MT9M114_REG_P_G1_P0Q2 0x3644
  87. #define MT9M114_REG_P_G1_P0Q3 0x3646
  88. #define MT9M114_REG_P_G1_P0Q4 0x3648
  89. #define MT9M114_REG_P_R_P0Q0 0x364A
  90. #define MT9M114_REG_P_R_P0Q1 0x364C
  91. #define MT9M114_REG_P_R_P0Q2 0x364E
  92. #define MT9M114_REG_P_R_P0Q3 0x3650
  93. #define MT9M114_REG_P_R_P0Q4 0x3652
  94. #define MT9M114_REG_P_B_P0Q0 0x3654
  95. #define MT9M114_REG_P_B_P0Q1 0x3656
  96. #define MT9M114_REG_P_B_P0Q2 0x3658
  97. #define MT9M114_REG_P_B_P0Q3 0x365A
  98. #define MT9M114_REG_P_B_P0Q4 0x365C
  99. #define MT9M114_REG_P_G2_P0Q0 0x365E
  100. #define MT9M114_REG_P_G2_P0Q1 0x3660
  101. #define MT9M114_REG_P_G2_P0Q2 0x3662
  102. #define MT9M114_REG_P_G2_P0Q3 0x3664
  103. #define MT9M114_REG_P_G2_P0Q4 0x3666
  104. #define MT9M114_REG_P_G1_P1Q0 0x3680
  105. #define MT9M114_REG_P_G1_P1Q1 0x3682
  106. #define MT9M114_REG_P_G1_P1Q2 0x3684
  107. #define MT9M114_REG_P_G1_P1Q3 0x3686
  108. #define MT9M114_REG_P_G1_P1Q4 0x3688
  109. #define MT9M114_REG_P_R_P1Q0 0x368A
  110. #define MT9M114_REG_P_R_P1Q1 0x368C
  111. #define MT9M114_REG_P_R_P1Q2 0x368E
  112. #define MT9M114_REG_P_R_P1Q3 0x3690
  113. #define MT9M114_REG_P_R_P1Q4 0x3692
  114. #define MT9M114_REG_P_B_P1Q0 0x3694
  115. #define MT9M114_REG_P_B_P1Q1 0x3696
  116. #define MT9M114_REG_P_B_P1Q2 0x3698
  117. #define MT9M114_REG_P_B_P1Q3 0x369A
  118. #define MT9M114_REG_P_B_P1Q4 0x369C
  119. #define MT9M114_REG_P_G2_P1Q0 0x369E
  120. #define MT9M114_REG_P_G2_P1Q1 0x36A0
  121. #define MT9M114_REG_P_G2_P1Q2 0x36A2
  122. #define MT9M114_REG_P_G2_P1Q3 0x36A4
  123. #define MT9M114_REG_P_G2_P1Q4 0x36A6
  124. #define MT9M114_REG_P_G1_P2Q0 0x36C0
  125. #define MT9M114_REG_P_G1_P2Q1 0x36C2
  126. #define MT9M114_REG_P_G1_P2Q2 0x36C4
  127. #define MT9M114_REG_P_G1_P2Q3 0x36C6
  128. #define MT9M114_REG_P_G1_P2Q4 0x36C8
  129. #define MT9M114_REG_P_R_P2Q0 0x36CA
  130. #define MT9M114_REG_P_R_P2Q1 0x36CC
  131. #define MT9M114_REG_P_R_P2Q2 0x36CE
  132. #define MT9M114_REG_P_R_P2Q3 0x36D0
  133. #define MT9M114_REG_P_R_P2Q4 0x36D2
  134. #define MT9M114_REG_P_B_P2Q0 0x36D4
  135. #define MT9M114_REG_P_B_P2Q1 0x36D6
  136. #define MT9M114_REG_P_B_P2Q2 0x36D8
  137. #define MT9M114_REG_P_B_P2Q3 0x36DA
  138. #define MT9M114_REG_P_B_P2Q4 0x36DC
  139. #define MT9M114_REG_P_G2_P2Q0 0x36DE
  140. #define MT9M114_REG_P_G2_P2Q1 0x36E0
  141. #define MT9M114_REG_P_G2_P2Q2 0x36E2
  142. #define MT9M114_REG_P_G2_P2Q3 0x36E4
  143. #define MT9M114_REG_P_G2_P2Q4 0x36E6
  144. #define MT9M114_REG_P_G1_P3Q0 0x3700
  145. #define MT9M114_REG_P_G1_P3Q1 0x3702
  146. #define MT9M114_REG_P_G1_P3Q2 0x3704
  147. #define MT9M114_REG_P_G1_P3Q3 0x3706
  148. #define MT9M114_REG_P_G1_P3Q4 0x3708
  149. #define MT9M114_REG_P_R_P3Q0 0x370A
  150. #define MT9M114_REG_P_R_P3Q1 0x370C
  151. #define MT9M114_REG_P_R_P3Q2 0x370E
  152. #define MT9M114_REG_P_R_P3Q3 0x3710
  153. #define MT9M114_REG_P_R_P3Q4 0x3712
  154. #define MT9M114_REG_P_B_P3Q0 0x3714
  155. #define MT9M114_REG_P_B_P3Q1 0x3716
  156. #define MT9M114_REG_P_B_P3Q2 0x3718
  157. #define MT9M114_REG_P_B_P3Q3 0x371A
  158. #define MT9M114_REG_P_B_P3Q4 0x371C
  159. #define MT9M114_REG_P_G2_P3Q0 0x371E
  160. #define MT9M114_REG_P_G2_P3Q1 0x3720
  161. #define MT9M114_REG_P_G2_P3Q2 0x3722
  162. #define MT9M114_REG_P_G2_P3Q3 0x3724
  163. #define MT9M114_REG_P_G2_P3Q4 0x3726
  164. #define MT9M114_REG_P_G1_P4Q0 0x3740
  165. #define MT9M114_REG_P_G1_P4Q1 0x3742
  166. #define MT9M114_REG_P_G1_P4Q2 0x3744
  167. #define MT9M114_REG_P_G1_P4Q3 0x3746
  168. #define MT9M114_REG_P_G1_P4Q4 0x3748
  169. #define MT9M114_REG_P_R_P4Q0 0x374A
  170. #define MT9M114_REG_P_R_P4Q1 0x374C
  171. #define MT9M114_REG_P_R_P4Q2 0x374E
  172. #define MT9M114_REG_P_R_P4Q3 0x3750
  173. #define MT9M114_REG_P_R_P4Q4 0x3752
  174. #define MT9M114_REG_P_B_P4Q0 0x3754
  175. #define MT9M114_REG_P_B_P4Q1 0x3756
  176. #define MT9M114_REG_P_B_P4Q2 0x3758
  177. #define MT9M114_REG_P_B_P4Q3 0x375A
  178. #define MT9M114_REG_P_B_P4Q4 0x375C
  179. #define MT9M114_REG_P_G2_P4Q0 0x375E
  180. #define MT9M114_REG_P_G2_P4Q1 0x3760
  181. #define MT9M114_REG_P_G2_P4Q2 0x3762
  182. #define MT9M114_REG_P_G2_P4Q3 0x3764
  183. #define MT9M114_REG_P_G2_P4Q4 0x3766
  184. #define MT9M114_REG_CENTER_ROW 0x3782
  185. #define MT9M114_REG_CENTER_COLUMN 0x3784
  186. /* 4.SYSCTL registers */
  187. #define MT9M114_REG_CHIP_ID 0x0000
  188. #define MT9M114_REG_CLOCKS_CONTROL 0x0016
  189. #define MT9M114_REG_RESET_AND_MISC_CONTROL 0x001A
  190. #define MT9M114_REG_PAD_SLEW 0x001E
  191. #define MT9M114_REG_USER_DEFINED_DEVICE_ADDRESS_ID 0x002E
  192. #define MT9M114_REG_PAD_CONTROL 0x0032
  193. #define MT9M114_REG_COMMAND_REGISTER 0x0080
  194. /* 5.XDMA registers */
  195. #define MT9M114_REG_ACCESS_CTL_STAT 0x0982
  196. #define MT9M114_REG_PHYSICAL_ADDRESS_ACCESS 0x098A
  197. #define MT9M114_REG_LOGICAL_ADDRESS_ACCESS 0x098E
  198. #define MT9M114_REG_MCU_VARIABLE_DATA0 0x0990
  199. #define MT9M114_REG_MCU_VARIABLE_DATA1 0x0992
  200. #define MT9M114_REG_MCU_VARIABLE_DATA2 0x0994
  201. #define MT9M114_REG_MCU_VARIABLE_DATA3 0x0996
  202. #define MT9M114_REG_MCU_VARIABLE_DATA4 0x0998
  203. #define MT9M114_REG_MCU_VARIABLE_DATA5 0x099A
  204. #define MT9M114_REG_MCU_VARIABLE_DATA6 0x099C
  205. #define MT9M114_REG_MCU_VARIABLE_DATA7 0x099E
  206. /*! @brief MT9M114 variables definitions.*/
  207. /* 01.Monitor variables */
  208. #define MT9M114_VAR_MON_MAJOR_VERSION 0x8000
  209. #define MT9M114_VAR_MON_MINOR_VERSION 0x8002
  210. #define MT9M114_VAR_MON_RELEASE_VERSION 0x8004
  211. #define MT9M114_VAR_MON_HEARTBEAT 0x8006
  212. /* 02.Sequencer variables */
  213. #define MT9M114_VAR_SEQ_ERROR_CODE 0x8406
  214. /* 03.AE_Rule variables */
  215. #define MT9M114_VAR_AE_RULE_ALGO 0xA404
  216. #define MT9M114_VAR_AE_RULE_AVG_Y_FROM_STATS 0xA406
  217. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_0 0xA407
  218. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_1 0xA408
  219. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_2 0xA409
  220. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_3 0xA40A
  221. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_0_4 0xA40B
  222. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_0 0xA40C
  223. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_1 0xA40D
  224. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_2 0xA40E
  225. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_3 0xA40F
  226. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_1_4 0xA410
  227. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_0 0xA411
  228. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_1 0xA412
  229. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_2 0xA413
  230. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_3 0xA414
  231. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_2_4 0xA415
  232. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_0 0xA416
  233. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_1 0xA417
  234. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_2 0xA418
  235. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_3 0xA419
  236. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_3_4 0xA41A
  237. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_0 0xA41B
  238. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_1 0xA41C
  239. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_2 0xA41D
  240. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_3 0xA41E
  241. #define MT9M114_VAR_AE_RULE_AE_WEIGHT_TABLE_4_4 0xA41F
  242. #define MT9M114_VAR_AE_RULE_AE_ADAPTIVE_STRENGTH 0xA420
  243. /* 04.AE_Track variables */
  244. #define MT9M114_VAR_AE_TRACK_STATUS 0xA800
  245. #define MT9M114_VAR_AE_TRACK_ALGO 0xA804
  246. #define MT9M114_VAR_AE_TRACK_TARGET_AVERAGE_LUMA 0xA807
  247. #define MT9M114_VAR_AE_TRACK_GATE_PERCENTAGE 0xA808
  248. #define MT9M114_VAR_AE_TRACK_CURRENT_AVERAGE_LUMA 0xA809
  249. #define MT9M114_VAR_AE_TRACK_AE_TRACKING_DAMPENING_SPEED 0xA80A
  250. #define MT9M114_VAR_AE_TRACK_AE_DAMPENING_SPEED 0xA80B
  251. #define MT9M114_VAR_AE_TRACK_SKIP_FRAMES_COUNTER 0xA80D
  252. #define MT9M114_VAR_AE_TRACK_CURRENT_FLICKER_LINES 0xA80E
  253. #define MT9M114_VAR_AE_TRACK_FDZONE 0xA818
  254. #define MT9M114_VAR_AE_TRACK_ZONE 0xA81B
  255. #define MT9M114_VAR_AE_TRACK_FLICKER_LINES_50HZ 0xA826
  256. #define MT9M114_VAR_AE_TRACK_VIRT_EXPOSURE_LOG 0xA828
  257. #define MT9M114_VAR_AE_TRACK_MIN_VIRT_EXPOSURE_LOG_ZONE0 0xA82A
  258. #define MT9M114_VAR_AE_TRACK_MAX_VIRT_EXPOSURE_LOG_ZONE0 0xA82C
  259. #define MT9M114_VAR_AE_TRACK_MAX_VIRT_EXPOSURE_LOG_ZONE1 0xA82E
  260. #define MT9M114_VAR_AE_TRACK_VIRT_GAIN 0xA838
  261. /* 05.AWB variables */
  262. #define MT9M114_VAR_AWB_STATUS 0xAC00
  263. #define MT9M114_VAR_AWB_MODE 0xAC02
  264. #define MT9M114_VAR_AWB_R_RATIO_LOWER 0xAC06
  265. #define MT9M114_VAR_AWB_R_RATIO_UPPER 0xAC07
  266. #define MT9M114_VAR_AWB_B_RATIO_LOWER 0xAC08
  267. #define MT9M114_VAR_AWB_B_RATIO_UPPER 0xAC09
  268. #define MT9M114_VAR_AWB_R_SCENE_RATIO_LOWER 0xAC0A
  269. #define MT9M114_VAR_AWB_R_SCENE_RATIO_UPPER 0xAC0B
  270. #define MT9M114_VAR_AWB_B_SCENE_RATIO_LOWER 0xAC0C
  271. #define MT9M114_VAR_AWB_B_SCENE_RATIO_UPPER 0xAC0D
  272. #define MT9M114_VAR_AWB_R_RATIO_PRE_AWB 0xAC0E
  273. #define MT9M114_VAR_AWB_B_RATIO_PRE_AWB 0xAC0F
  274. #define MT9M114_VAR_AWB_R_GAIN 0xAC12
  275. #define MT9M114_VAR_AWB_B_GAIN 0xAC14
  276. #define MT9M114_VAR_AWB_PRE_AWB_RATIOS_TRACKING_SPEED 0xAC16
  277. #define MT9M114_VAR_AWB_PIXEL_THRESHOLD_COUNT 0xAC18
  278. /* 06.BlackLevel variables */
  279. #define MT9M114_VAR_BLACKLEVEL_ALGO 0xB004
  280. #define MT9M114_VAR_BLACKLEVEL_MAX_BLACK_LEVEL 0xB00C
  281. #define MT9M114_VAR_BLACKLEVEL_BLACK_LEVEL_DAMPENING 0xB00D
  282. /* 07.CCM variables */
  283. #define MT9M114_VAR_CCM_ALGO 0xB404
  284. #define MT9M114_VAR_CCM_0 0xB406
  285. #define MT9M114_VAR_CCM_1 0xB408
  286. #define MT9M114_VAR_CCM_2 0xB40A
  287. #define MT9M114_VAR_CCM_3 0xB40C
  288. #define MT9M114_VAR_CCM_4 0xB40E
  289. #define MT9M114_VAR_CCM_5 0xB410
  290. #define MT9M114_VAR_CCM_6 0xB412
  291. #define MT9M114_VAR_CCM_7 0xB414
  292. #define MT9M114_VAR_CCM_8 0xB416
  293. #define MT9M114_VAR_CCM_LL_DELTA_CCM_0 0xB418
  294. #define MT9M114_VAR_CCM_LL_DELTA_CCM_1 0xB41A
  295. #define MT9M114_VAR_CCM_LL_DELTA_CCM_2 0xB41C
  296. #define MT9M114_VAR_CCM_LL_DELTA_CCM_3 0xB41E
  297. #define MT9M114_VAR_CCM_LL_DELTA_CCM_4 0xB420
  298. #define MT9M114_VAR_CCM_LL_DELTA_CCM_5 0xB422
  299. #define MT9M114_VAR_CCM_LL_DELTA_CCM_6 0xB424
  300. #define MT9M114_VAR_CCM_LL_DELTA_CCM_7 0xB426
  301. #define MT9M114_VAR_CCM_LL_DELTA_CCM_8 0xB428
  302. #define MT9M114_VAR_CCM_DELTA_GAIN 0xB42A
  303. #define MT9M114_VAR_CCM_DELTA_THRESH 0xB42B
  304. /* 08.LowLight variables */
  305. #define MT9M114_VAR_LL_MODE 0xBC02
  306. #define MT9M114_VAR_LL_ALGO 0xBC04
  307. #define MT9M114_VAR_LL_GAMMA_SELECT 0xBC07
  308. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_0 0xBC0A
  309. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_1 0xBC0B
  310. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_2 0xBC0C
  311. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_3 0xBC0D
  312. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_4 0xBC0E
  313. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_5 0xBC0F
  314. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_6 0xBC10
  315. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_7 0xBC11
  316. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_8 0xBC12
  317. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_9 0xBC13
  318. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_10 0xBC14
  319. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_11 0xBC15
  320. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_12 0xBC16
  321. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_13 0xBC17
  322. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_14 0xBC18
  323. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_15 0xBC19
  324. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_16 0xBC1A
  325. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_17 0xBC1B
  326. #define MT9M114_VAR_LL_GAMMA_CONTRAST_CURVE_18 0xBC1C
  327. #define MT9M114_VAR_LL_GAMMA_NRCURVE_0 0xBC1D
  328. #define MT9M114_VAR_LL_GAMMA_NRCURVE_1 0xBC1E
  329. #define MT9M114_VAR_LL_GAMMA_NRCURVE_2 0xBC1F
  330. #define MT9M114_VAR_LL_GAMMA_NRCURVE_3 0xBC20
  331. #define MT9M114_VAR_LL_GAMMA_NRCURVE_4 0xBC21
  332. #define MT9M114_VAR_LL_GAMMA_NRCURVE_5 0xBC22
  333. #define MT9M114_VAR_LL_GAMMA_NRCURVE_6 0xBC23
  334. #define MT9M114_VAR_LL_GAMMA_NRCURVE_7 0xBC24
  335. #define MT9M114_VAR_LL_GAMMA_NRCURVE_8 0xBC25
  336. #define MT9M114_VAR_LL_GAMMA_NRCURVE_9 0xBC26
  337. #define MT9M114_VAR_LL_GAMMA_NRCURVE_10 0xBC27
  338. #define MT9M114_VAR_LL_GAMMA_NRCURVE_11 0xBC28
  339. #define MT9M114_VAR_LL_GAMMA_NRCURVE_12 0xBC29
  340. #define MT9M114_VAR_LL_GAMMA_NRCURVE_13 0xBC2A
  341. #define MT9M114_VAR_LL_GAMMA_NRCURVE_14 0xBC2B
  342. #define MT9M114_VAR_LL_GAMMA_NRCURVE_15 0xBC2C
  343. #define MT9M114_VAR_LL_GAMMA_NRCURVE_16 0xBC2D
  344. #define MT9M114_VAR_LL_GAMMA_NRCURVE_17 0xBC2E
  345. #define MT9M114_VAR_LL_GAMMA_NRCURVE_18 0xBC2F
  346. #define MT9M114_VAR_LL_BM_PRECISION_BITS 0xBC31
  347. #define MT9M114_VAR_LL_AVERAGE_LUMA_FADE_TO_BLACK 0xBC3A
  348. #define MT9M114_VAR_LL_FADE_TO_BLACK_DAMPENING_SPEED 0xBC3C
  349. /* 09.CameraControl variables */
  350. #define MT9M114_VAR_CAM_SENSOR_CFG_Y_ADDR_START 0xC800
  351. #define MT9M114_VAR_CAM_SENSOR_CFG_X_ADDR_START 0xC802
  352. #define MT9M114_VAR_CAM_SENSOR_CFG_Y_ADDR_END 0xC804
  353. #define MT9M114_VAR_CAM_SENSOR_CFG_X_ADDR_END 0xC806
  354. #define MT9M114_VAR_CAM_SENSOR_CFG_PIXCLK 0xC808
  355. #define MT9M114_VAR_CAM_SENSOR_CFG_ROW_SPEED 0xC80C
  356. #define MT9M114_VAR_CAM_SENSOR_CFG_FINE_INTEG_TIME_MIN 0xC80E
  357. #define MT9M114_VAR_CAM_SENSOR_CFG_FINE_INTEG_TIME_MAX 0xC810
  358. #define MT9M114_VAR_CAM_SENSOR_CFG_FRAME_LENGTH_LINES 0xC812
  359. #define MT9M114_VAR_CAM_SENSOR_CFG_LINE_LENGTH_PCK 0xC814
  360. #define MT9M114_VAR_CAM_SENSOR_CFG_FINE_CORRECTION 0xC816
  361. #define MT9M114_VAR_CAM_SENSOR_CFG_CPIPE_LAST_ROW 0xC818
  362. #define MT9M114_VAR_CAM_SENSOR_CFG_REG_0_DATA 0xC826
  363. #define MT9M114_VAR_CAM_SENSOR_CONTROL_READ_MODE 0xC834
  364. #define MT9M114_VAR_CAM_SENSOR_CONTROL_ANALOG_GAIN 0xC836
  365. #define MT9M114_VAR_CAM_SENSOR_CONTROL_VIRT_COLUMN_GAIN 0xC838
  366. #define MT9M114_VAR_CAM_SENSOR_CONTROL_FRAME_LENGTH_LINES 0xC83A
  367. #define MT9M114_VAR_CAM_SENSOR_CONTROL_COARSE_INTEGRATION_TIME 0xC83C
  368. #define MT9M114_VAR_CAM_SENSOR_CONTROL_FINE_INTEGRATION_TIME 0xC83E
  369. #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_RED 0xC840
  370. #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_GREEN1 0xC842
  371. #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_GREEN2 0xC844
  372. #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_BLUE 0xC846
  373. #define MT9M114_VAR_CAM_CPIPE_CONTROL_DGAIN_SECOND 0xC848
  374. #define MT9M114_VAR_CAM_CPIPE_CONTROL_SECOND_BLACK_LEVEL 0xC84B
  375. #define MT9M114_VAR_CAM_MODE_SELECT 0xC84C
  376. #define MT9M114_VAR_CAM_MODE_TEST_PATTERN_SELECT 0xC84D
  377. #define MT9M114_VAR_CAM_MODE_TEST_PATTERN_RED 0xC84E
  378. #define MT9M114_VAR_CAM_MODE_TEST_PATTERN_GREEN 0xC850
  379. #define MT9M114_VAR_CAM_MODE_TEST_PATTERN_BLUE 0xC852
  380. #define MT9M114_VAR_CAM_CROP_WINDOW_XOFFSET 0xC854
  381. #define MT9M114_VAR_CAM_CROP_WINDOW_YOFFSET 0xC856
  382. #define MT9M114_VAR_CAM_CROP_WINDOW_WIDTH 0xC858
  383. #define MT9M114_VAR_CAM_CROP_WINDOW_HEIGHT 0xC85A
  384. #define MT9M114_VAR_CAM_CROP_CROPMODE 0xC85C
  385. #define MT9M114_VAR_CAM_SCALE_VERTICAL_TC_MODE 0xC85E
  386. #define MT9M114_VAR_CAM_SCALE_VERTICAL_TC_PERCENTAGE 0xC860
  387. #define MT9M114_VAR_CAM_SCALE_VERTICAL_TC_STRETCH_FACTOR 0xC862
  388. #define MT9M114_VAR_CAM_OUTPUT_WIDTH 0xC868
  389. #define MT9M114_VAR_CAM_OUTPUT_HEIGHT 0xC86A
  390. #define MT9M114_VAR_CAM_OUTPUT_FORMAT 0xC86C
  391. #define MT9M114_VAR_CAM_OUTPUT_FORMAT_YUV 0xC86E
  392. #define MT9M114_VAR_CAM_OUTPUT_Y_OFFSET 0xC870
  393. #define MT9M114_VAR_CAM_HUE_ANGLE 0xC873
  394. #define MT9M114_VAR_CAM_SFX_CONTROL 0xC874
  395. #define MT9M114_VAR_CAM_SFX_SOLARIZATION_THRESH 0xC875
  396. #define MT9M114_VAR_CAM_SFX_SEPIA_CR 0xC876
  397. #define MT9M114_VAR_CAM_SFX_SEPIA_CB 0xC877
  398. #define MT9M114_VAR_CAM_AET_AEMODE 0xC878
  399. #define MT9M114_VAR_CAM_AET_SKIP_FRAMES 0xC879
  400. #define MT9M114_VAR_CAM_AET_TARGET_AVERAGE_LUMA 0xC87A
  401. #define MT9M114_VAR_CAM_AET_TARGET_AVERAGE_LUMA_DARK 0xC87B
  402. #define MT9M114_VAR_CAM_AET_BLACK_CLIPPING_TARGET 0xC87C
  403. #define MT9M114_VAR_CAM_AET_AE_MIN_VIRT_INT_TIME_PCLK 0xC87E
  404. #define MT9M114_VAR_CAM_AET_AE_MIN_VIRT_DGAIN 0xC880
  405. #define MT9M114_VAR_CAM_AET_AE_MAX_VIRT_DGAIN 0xC882
  406. #define MT9M114_VAR_CAM_AET_AE_MIN_VIRT_AGAIN 0xC884
  407. #define MT9M114_VAR_CAM_AET_AE_MAX_VIRT_AGAIN 0xC886
  408. #define MT9M114_VAR_CAM_AET_AE_VIRT_GAIN_TH_EG 0xC888
  409. #define MT9M114_VAR_CAM_AET_AE_EG_GATE_PERCENTAGE 0xC88A
  410. #define MT9M114_VAR_CAM_AET_FLICKER_FREQ_HZ 0xC88B
  411. #define MT9M114_VAR_CAM_AET_MAX_FRAME_RATE 0xC88C
  412. #define MT9M114_VAR_CAM_AET_MIN_FRAME_RATE 0xC88E
  413. #define MT9M114_VAR_CAM_AET_TARGET_GAIN 0xC890
  414. #define MT9M114_VAR_CAM_AWB_CCM_L_0 0xC892
  415. #define MT9M114_VAR_CAM_AWB_CCM_L_1 0xC894
  416. #define MT9M114_VAR_CAM_AWB_CCM_L_2 0xC896
  417. #define MT9M114_VAR_CAM_AWB_CCM_L_3 0xC898
  418. #define MT9M114_VAR_CAM_AWB_CCM_L_4 0xC89A
  419. #define MT9M114_VAR_CAM_AWB_CCM_L_5 0xC89C
  420. #define MT9M114_VAR_CAM_AWB_CCM_L_6 0xC89E
  421. #define MT9M114_VAR_CAM_AWB_CCM_L_7 0xC8A0
  422. #define MT9M114_VAR_CAM_AWB_CCM_L_8 0xC8A2
  423. #define MT9M114_VAR_CAM_AWB_CCM_M_0 0xC8A4
  424. #define MT9M114_VAR_CAM_AWB_CCM_M_1 0xC8A6
  425. #define MT9M114_VAR_CAM_AWB_CCM_M_2 0xC8A8
  426. #define MT9M114_VAR_CAM_AWB_CCM_M_3 0xC8AA
  427. #define MT9M114_VAR_CAM_AWB_CCM_M_4 0xC8AC
  428. #define MT9M114_VAR_CAM_AWB_CCM_M_5 0xC8AE
  429. #define MT9M114_VAR_CAM_AWB_CCM_M_6 0xC8B0
  430. #define MT9M114_VAR_CAM_AWB_CCM_M_7 0xC8B2
  431. #define MT9M114_VAR_CAM_AWB_CCM_M_8 0xC8B4
  432. #define MT9M114_VAR_CAM_AWB_CCM_R_0 0xC8B6
  433. #define MT9M114_VAR_CAM_AWB_CCM_R_1 0xC8B8
  434. #define MT9M114_VAR_CAM_AWB_CCM_R_2 0xC8BA
  435. #define MT9M114_VAR_CAM_AWB_CCM_R_3 0xC8BC
  436. #define MT9M114_VAR_CAM_AWB_CCM_R_4 0xC8BE
  437. #define MT9M114_VAR_CAM_AWB_CCM_R_5 0xC8C0
  438. #define MT9M114_VAR_CAM_AWB_CCM_R_6 0xC8C2
  439. #define MT9M114_VAR_CAM_AWB_CCM_R_7 0xC8C4
  440. #define MT9M114_VAR_CAM_AWB_CCM_R_8 0xC8C6
  441. #define MT9M114_VAR_CAM_AWB_CCM_L_RG_GAIN 0xC8C8
  442. #define MT9M114_VAR_CAM_AWB_CCM_L_BG_GAIN 0xC8CA
  443. #define MT9M114_VAR_CAM_AWB_CCM_M_RG_GAIN 0xC8CC
  444. #define MT9M114_VAR_CAM_AWB_CCM_M_BG_GAIN 0xC8CE
  445. #define MT9M114_VAR_CAM_AWB_CCM_R_RG_GAIN 0xC8D0
  446. #define MT9M114_VAR_CAM_AWB_CCM_R_BG_GAIN 0xC8D2
  447. #define MT9M114_VAR_CAM_AWB_CCM_L_CTEMP 0xC8D4
  448. #define MT9M114_VAR_CAM_AWB_CCM_M_CTEMP 0xC8D6
  449. #define MT9M114_VAR_CAM_AWB_CCM_R_CTEMP 0xC8D8
  450. #define MT9M114_VAR_CAM_AWB_LL_CCM_0 0xC8DA
  451. #define MT9M114_VAR_CAM_AWB_LL_CCM_1 0xC8DC
  452. #define MT9M114_VAR_CAM_AWB_LL_CCM_2 0xC8DE
  453. #define MT9M114_VAR_CAM_AWB_LL_CCM_3 0xC8E0
  454. #define MT9M114_VAR_CAM_AWB_LL_CCM_4 0xC8E2
  455. #define MT9M114_VAR_CAM_AWB_LL_CCM_5 0xC8E4
  456. #define MT9M114_VAR_CAM_AWB_LL_CCM_6 0xC8E6
  457. #define MT9M114_VAR_CAM_AWB_LL_CCM_7 0xC8E8
  458. #define MT9M114_VAR_CAM_AWB_LL_CCM_8 0xC8EA
  459. #define MT9M114_VAR_CAM_AWB_COLOR_TEMPERATURE_MIN 0xC8EC
  460. #define MT9M114_VAR_CAM_AWB_COLOR_TEMPERATURE_MAX 0xC8EE
  461. #define MT9M114_VAR_CAM_AWB_COLOR_TEMPERATURE 0xC8F0
  462. #define MT9M114_VAR_CAM_AWB_AWB_XSCALE 0xC8F2
  463. #define MT9M114_VAR_CAM_AWB_AWB_YSCALE 0xC8F3
  464. #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_0 0xC8F4
  465. #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_1 0xC8F6
  466. #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_2 0xC8F8
  467. #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_3 0xC8FA
  468. #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_4 0xC8FC
  469. #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_5 0xC8FE
  470. #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_6 0xC900
  471. #define MT9M114_VAR_CAM_AWB_AWB_WEIGHTS_7 0xC902
  472. #define MT9M114_VAR_CAM_AWB_AWB_XSHIFT_PRE_ADJ 0xC904
  473. #define MT9M114_VAR_CAM_AWB_AWB_YSHIFT_PRE_ADJ 0xC906
  474. #define MT9M114_VAR_CAM_AWB_AWBMODE 0xC909
  475. #define MT9M114_VAR_CAM_AWB_TINTS_CTEMP_THRESHOLD 0xC90A
  476. #define MT9M114_VAR_CAM_AWB_K_R_L 0xC90C
  477. #define MT9M114_VAR_CAM_AWB_K_G_L 0xC90D
  478. #define MT9M114_VAR_CAM_AWB_K_B_L 0xC90E
  479. #define MT9M114_VAR_CAM_AWB_K_R_R 0xC90F
  480. #define MT9M114_VAR_CAM_AWB_K_G_R 0xC910
  481. #define MT9M114_VAR_CAM_AWB_K_B_R 0xC911
  482. #define MT9M114_VAR_CAM_STAT_AWB_CLIP_WINDOW_XSTART 0xC914
  483. #define MT9M114_VAR_CAM_STAT_AWB_CLIP_WINDOW_YSTART 0xC916
  484. #define MT9M114_VAR_CAM_STAT_AWB_CLIP_WINDOW_XEND 0xC918
  485. #define MT9M114_VAR_CAM_STAT_AWB_CLIP_WINDOW_YEND 0xC91A
  486. #define MT9M114_VAR_CAM_STAT_AE_INITIAL_WINDOW_XSTART 0xC91C
  487. #define MT9M114_VAR_CAM_STAT_AE_INITIAL_WINDOW_YSTART 0xC91E
  488. #define MT9M114_VAR_CAM_STAT_AE_INITIAL_WINDOW_XEND 0xC920
  489. #define MT9M114_VAR_CAM_STAT_AE_INITIAL_WINDOW_YEND 0xC922
  490. #define MT9M114_VAR_CAM_LL_LLMODE 0xC924
  491. #define MT9M114_VAR_CAM_LL_START_BRIGHTNESS 0xC926
  492. #define MT9M114_VAR_CAM_LL_STOP_BRIGHTNESS 0xC928
  493. #define MT9M114_VAR_CAM_LL_START_SATURATION 0xC92A
  494. #define MT9M114_VAR_CAM_LL_END_SATURATION 0xC92B
  495. #define MT9M114_VAR_CAM_LL_START_DESATURATION 0xC92C
  496. #define MT9M114_VAR_CAM_LL_END_DESATURATION 0xC92D
  497. #define MT9M114_VAR_CAM_LL_START_DEMOSAIC 0xC92E
  498. #define MT9M114_VAR_CAM_LL_START_AP_GAIN 0xC92F
  499. #define MT9M114_VAR_CAM_LL_START_AP_THRESH 0xC930
  500. #define MT9M114_VAR_CAM_LL_STOP_DEMOSAIC 0xC931
  501. #define MT9M114_VAR_CAM_LL_STOP_AP_GAIN 0xC932
  502. #define MT9M114_VAR_CAM_LL_STOP_AP_THRESH 0xC933
  503. #define MT9M114_VAR_CAM_LL_START_NR_RED 0xC934
  504. #define MT9M114_VAR_CAM_LL_START_NR_GREEN 0xC935
  505. #define MT9M114_VAR_CAM_LL_START_NR_BLUE 0xC936
  506. #define MT9M114_VAR_CAM_LL_START_NR_THRESH 0xC937
  507. #define MT9M114_VAR_CAM_LL_STOP_NR_RED 0xC938
  508. #define MT9M114_VAR_CAM_LL_STOP_NR_GREEN 0xC939
  509. #define MT9M114_VAR_CAM_LL_STOP_NR_BLUE 0xC93A
  510. #define MT9M114_VAR_CAM_LL_STOP_NR_THRESH 0xC93B
  511. #define MT9M114_VAR_CAM_LL_START_CONTRAST_BM 0xC93C
  512. #define MT9M114_VAR_CAM_LL_STOP_CONTRAST_BM 0xC93E
  513. #define MT9M114_VAR_CAM_LL_GAMMA 0xC940
  514. #define MT9M114_VAR_CAM_LL_START_CONTRAST_GRADIENT 0xC942
  515. #define MT9M114_VAR_CAM_LL_STOP_CONTRAST_GRADIENT 0xC943
  516. #define MT9M114_VAR_CAM_LL_START_CONTRAST_LUMA_PERCENTAGE 0xC944
  517. #define MT9M114_VAR_CAM_LL_STOP_CONTRAST_LUMA_PERCENTAGE 0xC945
  518. #define MT9M114_VAR_CAM_LL_START_GAIN_METRIC 0xC946
  519. #define MT9M114_VAR_CAM_LL_STOP_GAIN_METRIC 0xC948
  520. #define MT9M114_VAR_CAM_LL_START_FADE_TO_BLACK_LUMA 0xC94A
  521. #define MT9M114_VAR_CAM_LL_STOP_FADE_TO_BLACK_LUMA 0xC94C
  522. #define MT9M114_VAR_CAM_LL_CLUSTER_DC_TH_BM 0xC94E
  523. #define MT9M114_VAR_CAM_LL_CLUSTER_DC_GATE_PERCENTAGE 0xC950
  524. #define MT9M114_VAR_CAM_LL_SUMMING_SENSITIVITY_FACTOR 0xC951
  525. #define MT9M114_VAR_CAM_LL_START_TARGET_LUMA_BM 0xC952
  526. #define MT9M114_VAR_CAM_LL_STOP_TARGET_LUMA_BM 0xC954
  527. #define MT9M114_VAR_CAM_LL_INV_BRIGHTNESS_METRIC 0xC956
  528. #define MT9M114_VAR_CAM_LL_GAIN_METRIC 0xC958
  529. #define MT9M114_VAR_CAM_SEQ_UV_COLOR_BOOST 0xC95A
  530. #define MT9M114_VAR_CAM_PGA_PGA_CONTROL 0xC95E
  531. #define MT9M114_VAR_CAM_PGA_L_CONFIG_COLOUR_TEMP 0xC960
  532. #define MT9M114_VAR_CAM_PGA_L_CONFIG_GREEN_RED_Q14 0xC962
  533. #define MT9M114_VAR_CAM_PGA_L_CONFIG_RED_Q14 0xC964
  534. #define MT9M114_VAR_CAM_PGA_L_CONFIG_GREEN_BLUE_Q14 0xC966
  535. #define MT9M114_VAR_CAM_PGA_L_CONFIG_BLUE_Q14 0xC968
  536. #define MT9M114_VAR_CAM_PGA_M_CONFIG_COLOUR_TEMP 0xC96A
  537. #define MT9M114_VAR_CAM_PGA_M_CONFIG_GREEN_RED_Q14 0xC96C
  538. #define MT9M114_VAR_CAM_PGA_M_CONFIG_RED_Q14 0xC96E
  539. #define MT9M114_VAR_CAM_PGA_M_CONFIG_GREEN_BLUE_Q14 0xC970
  540. #define MT9M114_VAR_CAM_PGA_M_CONFIG_BLUE_Q14 0xC972
  541. #define MT9M114_VAR_CAM_PGA_R_CONFIG_COLOUR_TEMP 0xC974
  542. #define MT9M114_VAR_CAM_PGA_R_CONFIG_GREEN_RED_Q14 0xC976
  543. #define MT9M114_VAR_CAM_PGA_R_CONFIG_RED_Q14 0xC978
  544. #define MT9M114_VAR_CAM_PGA_R_CONFIG_GREEN_BLUE_Q14 0xC97A
  545. #define MT9M114_VAR_CAM_PGA_R_CONFIG_BLUE_Q14 0xC97C
  546. #define MT9M114_VAR_CAM_SYSCTL_PLL_ENABLE 0xC97E
  547. #define MT9M114_VAR_CAM_SYSCTL_PLL_DIVIDER_M_N 0xC980
  548. #define MT9M114_VAR_CAM_SYSCTL_PLL_DIVIDER_P 0xC982
  549. #define MT9M114_VAR_CAM_PORT_OUTPUT_CONTROL 0xC984
  550. #define MT9M114_VAR_CAM_PORT_PORCH 0xC986
  551. #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_HS_ZERO 0xC988
  552. #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_HS_EXIT_HS_TRAIL 0xC98A
  553. #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_CLK_POST_CLK_PRE 0xC98C
  554. #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_CLK_TRAIL_CLK_ZERO 0xC98E
  555. #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_T_LPX 0xC990
  556. #define MT9M114_VAR_CAM_PORT_MIPI_TIMING_INIT_TIMING 0xC992
  557. /* 10.UVC_Control variables */
  558. #define MT9M114_VAR_UVC_AE_MODE_CONTROL 0xCC00
  559. #define MT9M114_VAR_UVC_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0xCC01
  560. #define MT9M114_VAR_UVC_AE_PRIORITY_CONTROL 0xCC02
  561. #define MT9M114_VAR_UVC_POWER_LINE_FREQUENCY_CONTROL 0xCC03
  562. #define MT9M114_VAR_UVC_EXPOSURE_TIME_ABSOLUTE_CONTROL 0xCC04
  563. #define MT9M114_VAR_UVC_BACKLIGHT_COMPENSATION_CONTROL 0xCC08
  564. #define MT9M114_VAR_UVC_BRIGHTNESS_CONTROL 0xCC0A
  565. #define MT9M114_VAR_UVC_CONTRAST_CONTROL 0xCC0C
  566. #define MT9M114_VAR_UVC_GAIN_CONTROL 0xCC0E
  567. #define MT9M114_VAR_UVC_HUE_CONTROL 0xCC10
  568. #define MT9M114_VAR_UVC_SATURATION_CONTROL 0xCC12
  569. #define MT9M114_VAR_UVC_SHARPNESS_CONTROL 0xCC14
  570. #define MT9M114_VAR_UVC_GAMMA_CONTROL 0xCC16
  571. #define MT9M114_VAR_UVC_WHITE_BALANCE_TEMPERATURE_CONTROL 0xCC18
  572. #define MT9M114_VAR_UVC_FRAME_INTERVAL_CONTROL 0xCC1C
  573. #define MT9M114_VAR_UVC_MANUAL_EXPOSURE_CONFIGURATION 0xCC20
  574. #define MT9M114_VAR_UVC_FLICKER_AVOIDANCE_CONFIGURATION 0xCC21
  575. #define MT9M114_VAR_UVC_ALGO 0xCC22
  576. #define MT9M114_VAR_UVC_RESULT_STATUS 0xCC24
  577. /* 11.SystemManager variables */
  578. #define MT9M114_VAR_SYSMGR_NEXT_STATE 0xDC00
  579. #define MT9M114_VAR_SYSMGR_CURRENT_STATE 0xDC01
  580. #define MT9M114_VAR_SYSMGR_CMD_STATUS 0xDC02
  581. /* 12.PatchLoader variables */
  582. #define MT9M114_VAR_PATCHLDR_LOADER_ADDRESS 0xE000
  583. #define MT9M114_VAR_PATCHLDR_PATCH_ID 0xE002
  584. #define MT9M114_VAR_PATCHLDR_FIRMWARE_ID 0xE004
  585. #define MT9M114_VAR_PATCHLDR_APPLY_STATUS 0xE008
  586. #define MT9M114_VAR_PATCHLDR_NUM_PATCHES 0xE009
  587. #define MT9M114_VAR_PATCHLDR_PATCH_ID_0 0xE00A
  588. #define MT9M114_VAR_PATCHLDR_PATCH_ID_1 0xE00C
  589. #define MT9M114_VAR_PATCHLDR_PATCH_ID_2 0xE00E
  590. #define MT9M114_VAR_PATCHLDR_PATCH_ID_3 0xE010
  591. #define MT9M114_VAR_PATCHLDR_PATCH_ID_4 0xE012
  592. #define MT9M114_VAR_PATCHLDR_PATCH_ID_5 0xE014
  593. #define MT9M114_VAR_PATCHLDR_PATCH_ID_6 0xE016
  594. #define MT9M114_VAR_PATCHLDR_PATCH_ID_7 0xE018
  595. /* 13.Patch variables */
  596. #define MT9M114_VAR_PATCHVARS_DELTA_DK_CORRECTION_FACTOR 0xE400
  597. #define MT9M114_VAR_CAM_AUTO_BINNING_MODE (0xE801)
  598. /* 14.CommandHandler variables */
  599. #define MT9M114_VAR_CMD_HANDLER_WAIT_EVENT_ID 0xFC00
  600. #define MT9M114_VAR_CMD_HANDLER_NUM_EVENTS 0xFC02
  601. /*! @brief MT9M114 command definitions. */
  602. #define MT9M114_COMMAND_APPLY_PATCH 0x0001
  603. #define MT9M114_COMMAND_SET_STATE 0x0002
  604. #define MT9M114_COMMAND_REFRESH 0x0004
  605. #define MT9M114_COMMAND_WAIT_FOR_EVENT 0x0008
  606. #define MT9M114_COMMAND_OK 0x8000
  607. /*! @brief MT9M114 system state definitions. */
  608. #define MT9M114_SYS_STATE_ENTER_CONFIG_CHANGE 0x28
  609. #define MT9M114_SYS_STATE_STREAMING 0x31
  610. #define MT9M114_SYS_STATE_START_STREAMING 0x34
  611. #define MT9M114_SYS_STATE_ENTER_SUSPEND 0x40
  612. #define MT9M114_SYS_STATE_SUSPENDED 0x41
  613. #define MT9M114_SYS_STATE_ENTER_STANDBY 0x50
  614. #define MT9M114_SYS_STATE_STANDBY 0x52
  615. #define MT9M114_SYS_STATE_LEAVE_STANDBY 0x54
  616. /*! @brief MT9M114 system set-state command retults. */
  617. #define MT9M114_SYS_STATE_SET_RESULT_ENOERR 0x00 /* command successful */
  618. #define MT9M114_SYS_STATE_SET_RESULTEINVAL 0x0C /* invalid configuration */
  619. #define MT9M114_SYS_STATE_SET_RESULTENOSPC 0x0D /* resource not available */
  620. #define MT9M114_OUTPUT_FORMAT_SWAP_RB (1 << 0)
  621. #define MT9M114_OUTPUT_FORMAT_SWAP_BYTES (1 << 1)
  622. #define MT9M114_OUTPUT_FORMAT_MONO (1 << 2)
  623. #define MT9M114_OUTPUT_FORMAT_BT656 (1 << 3)
  624. #define MT9M114_OUTPUT_FORMAT_BT656_FIXED (1 << 4)
  625. #define MT9M114_OUTPUT_FORMAT_YUV (0 << 8)
  626. #define MT9M114_OUTPUT_FORMAT_RGB (1 << 8)
  627. #define MT9M114_OUTPUT_FORMAT_BAYER (2 << 8)
  628. #define MT9M114_OUTPUT_FORMAT_RAW_BAYER_10 (0 << 10)
  629. #define MT9M114_OUTPUT_FORMAT_RAW_BAYER_10_PRE (1 << 10)
  630. #define MT9M114_OUTPUT_FORMAT_RAW_BAYER_10_POST (2 << 10)
  631. #define MT9M114_OUTPUT_FORMAT_PROCESSED_BAYER (3 << 10)
  632. #define MT9M114_OUTPUT_FORMAT_RGB565 (0 << 12)
  633. #define MT9M114_OUTPUT_FORMAT_RGB555 (1 << 12)
  634. #define MT9M114_OUTPUT_FORMAT_XRGB444 (2 << 12)
  635. #define MT9M114_OUTPUT_FORMAT_RGB444X (3 << 12)
  636. #define MT9M114_SENSOR_CONTROL_READ_MODE_HMIRROR (0x1)
  637. #define MT9M114_SENSOR_CONTROL_READ_MODE_VFLIP (0x2)
  638. #define MT9M114_SENSOR_CONTROL_READ_MODE_HBIN_MASK (0x30)
  639. #define MT9M114_SENSOR_CONTROL_READ_MODE_HBIN (0x30)
  640. #define MT9M114_SENSOR_CONTROL_READ_MODE_VBIN_MASK (0x300)
  641. #define MT9M114_SENSOR_CONTROL_READ_MODE_VBIN (0x300)
  642. #ifdef __cplusplus
  643. extern "C" {
  644. #endif
  645. typedef struct {
  646. uint16_t reg; /* 16bit reg address */
  647. uint8_t size; /* reg size in byte */
  648. uint32_t value; /* reg value */
  649. } mt9m114_reg_t;
  650. /*!
  651. * @brief MT9M114 read register.
  652. *
  653. * @param[in] context camera_operate_context.
  654. * @param[in] reg reg address(16 bits)
  655. * @param[in] reg_size reg size in bytes
  656. * @param[out] value reg data from device
  657. *
  658. * @retval status_success if success.
  659. * @retval status_fail if fail.
  660. */
  661. hpm_stat_t mt9m114_read_register(camera_context_t *context, uint32_t reg, uint32_t reg_size, void *value);
  662. /*!
  663. * @brief MT9M114 write register.
  664. *
  665. * @param[in] context camera_operate_context.
  666. * @param[in] reg reg address(16 bits)
  667. * @param[in] reg_size reg size in bytes
  668. * @param[in] value reg data to device
  669. *
  670. * @retval status_success if success.
  671. * @retval status_fail if fail.
  672. */
  673. hpm_stat_t mt9m114_write_register(camera_context_t *context, uint32_t reg, uint32_t reg_size, uint32_t value);
  674. /*!
  675. * @brief MT9M114 modify register.
  676. *
  677. * @param[in] context camera_operate_context.
  678. * @param[in] reg reg address(16 bits)
  679. * @param[in] reg_size reg size in bytes
  680. * @param[in] mask bits can be modified
  681. * @param[in] value value should be set
  682. *
  683. * @retval status_success if success.
  684. * @retval status_fail if fail.
  685. */
  686. hpm_stat_t mt9m114_modify_register(camera_context_t *context, uint32_t reg, uint32_t reg_size, uint32_t mask, uint32_t value);
  687. /*!
  688. * @brief MT9M114 multiwrite registers.
  689. *
  690. * @param[in] context camera_operate_context.
  691. * @param[in] regs pointer to array of mt9m114_reg_t, include reg addr, reg size and value
  692. * @param[in] num array size of [regs]
  693. *
  694. * @retval status_success if success.
  695. * @retval status_fail if fail.
  696. */
  697. hpm_stat_t mt9m114_multiwrite(camera_context_t *context, const mt9m114_reg_t regs[], uint32_t num);
  698. /*!
  699. * @brief MT9M114 check chipid.
  700. *
  701. * @param[in] context camera_operate_context.
  702. *
  703. * @retval status_success if success.
  704. * @retval status_fail if fail.
  705. */
  706. hpm_stat_t mt9m114_check_chip_id(camera_context_t *context);
  707. /*!
  708. * @brief MT9M114 set next state and switch to it.
  709. *
  710. * @param[in] context camera_operate_context.
  711. * @param[in] next_state next device state.
  712. *
  713. * @retval status_success if success.
  714. * @retval status_fail if fail.
  715. */
  716. hpm_stat_t mt9m114_setstate(camera_context_t *context, uint16_t next_state);
  717. /*!
  718. * @brief MT9M114 get current state.
  719. *
  720. * @param[in] context camera_operate_context.
  721. * @param[out] state current device state.
  722. *
  723. * @retval status_success if success.
  724. * @retval status_fail if fail.
  725. */
  726. hpm_stat_t mt9m114_get_current_state(camera_context_t *context, uint8_t *state);
  727. /*!
  728. * @brief MT9M114 soft reset.
  729. *
  730. * @param[in] context camera_operate_context.
  731. *
  732. * @retval status_success if success.
  733. * @retval status_fail if fail.
  734. */
  735. hpm_stat_t mt9m114_software_reset(camera_context_t *context);
  736. /*!
  737. * @brief MT9M114 set pixformat.
  738. *
  739. * @param[in] context camera_operate_context.
  740. * @param[in] pixformat pixformat.
  741. *
  742. * @retval status_success if success.
  743. * @retval status_fail if fail.
  744. */
  745. hpm_stat_t mt9m114_set_pixformat(camera_context_t *context, display_pixel_format_t pixformat);
  746. /*!
  747. * @brief MT9M114 set framerate.
  748. *
  749. * @param[in] context camera_operate_context.
  750. * @param[in] framerate framerate.
  751. *
  752. * @retval status_success if success.
  753. * @retval status_fail if fail.
  754. */
  755. hpm_stat_t mt9m114_set_framerate(camera_context_t *context, int framerate);
  756. /*!
  757. * @brief MT9M114 set brightness.
  758. *
  759. * @param[in] context camera_operate_context.
  760. * @param[in] level brightness.
  761. *
  762. * @retval status_success if success.
  763. * @retval status_fail if fail.
  764. */
  765. hpm_stat_t mt9m114_set_brightness(camera_context_t *context, int level);
  766. /*!
  767. * @brief MT9M114 start to transfer image data.
  768. *
  769. * @param[in] context camera_operate_context.
  770. *
  771. * @retval status_success if success.
  772. * @retval status_fail if fail.
  773. */
  774. hpm_stat_t mt9m114_start(camera_context_t *context);
  775. /*!
  776. * @brief MT9M114 stop working and enter SUSPEND mode.
  777. *
  778. * @param[in] context camera_operate_context.
  779. *
  780. * @retval status_success if success.
  781. * @retval status_fail if fail.
  782. */
  783. hpm_stat_t mt9m114_stop(camera_context_t *context);
  784. /*!
  785. * @brief MT9M114 enable or disable MONO mode.
  786. *
  787. * @param[in] context camera_operate_context.
  788. * @param[in] enable enable or disable mono.
  789. *
  790. * @retval status_success if success.
  791. * @retval status_fail if fail.
  792. */
  793. hpm_stat_t mt9m114_enable_mono(camera_context_t *context, bool enable);
  794. /*!
  795. * @brief MT9M114 initialization.
  796. *
  797. * @param[in] context camera_operate_context.
  798. *
  799. * @retval status_success if success.
  800. * @retval status_fail if fail.
  801. */
  802. hpm_stat_t mt9m114_init(camera_context_t *context, camera_config_t *camera_config);
  803. #ifdef __cplusplus
  804. }
  805. #endif
  806. /**
  807. * @}
  808. *
  809. */
  810. #endif /* HPM_MT9M114_H */