board_camera.c 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884
  1. /*
  2. * Copyright (c) 2012, Freescale Semiconductor, Inc.
  3. * All rights reserved.
  4. *
  5. * Redistribution and use in source and binary forms, with or without modification,
  6. * are permitted provided that the following conditions are met:
  7. *
  8. * o Redistributions of source code must retain the above copyright notice, this list
  9. * of conditions and the following disclaimer.
  10. *
  11. * o Redistributions in binary form must reproduce the above copyright notice, this
  12. * list of conditions and the following disclaimer in the documentation and/or
  13. * other materials provided with the distribution.
  14. *
  15. * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
  16. * contributors may be used to endorse or promote products derived from this
  17. * software without specific prior written permission.
  18. *
  19. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  20. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  21. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  22. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
  23. * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  24. * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  25. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  26. * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  27. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  28. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29. */
  30. #include "sdk.h"
  31. #include "camera/camera_def.h"
  32. #include "registers/regsiomuxc.h"
  33. #include "registers/regsccm.h"
  34. #define CAMERA_I2C_PORT (1)
  35. void camera_ipu1_iomux_config(void);
  36. ////////////////////////////////////////////////////////////////////////////////
  37. // Variables
  38. ////////////////////////////////////////////////////////////////////////////////
  39. uint8_t g_camera_i2c_port = CAMERA_I2C_PORT;
  40. ////////////////////////////////////////////////////////////////////////////////
  41. // Code
  42. ////////////////////////////////////////////////////////////////////////////////
  43. /* dummy empty function for camera_test
  44. * camera power is always on for MX6DQ SMD board*/
  45. void camera_power_on(void)
  46. {
  47. }
  48. /*IOMUX configuration for CSI port0*/
  49. void csi_port0_iomux_config(void)
  50. {
  51. camera_ipu1_iomux_config();
  52. /* set GPR1 to enable parallel interface
  53. * bit 19: 0 - Enable mipi to IPU1 CSI0, virtual channel is fixed to 0
  54. * 1 - Enable parallel interface to IPU CSI0
  55. * bit 20: 0 - Enable mipi to IPU2 CSI1, virtual channel is fixed to 3
  56. * 1 - Enable parallel interface to IPU2 CSI1
  57. * IPU1 CSI1 directly connect to mipi CSI2, virtual channel is fixed to 1
  58. * IPU2 CSI0 directly connect to mipi CSI2, virtual channel is fixed to 2
  59. */
  60. #if defined(CHIP_MX6DQ)
  61. BW_IOMUXC_GPR1_MIPI_IPU1_MUX(1/*PARALLEL_INTERFACE*/);
  62. #endif
  63. #if defined(CHIP_MX6SDL)
  64. BW_IOMUXC_GPR13_IPU_CSI0_MUX(4/*IPU_CSI0*/);
  65. #endif
  66. }
  67. //! @brief Function to configure IOMUXC for ipu1 module.
  68. //! @todo Move this function to [chip]/[board]/iomuxc folders?
  69. void camera_ipu1_iomux_config(void)
  70. {
  71. // Config ipu1.IPU1_CSI0_DATA12 to pad CSI0_DATA12(M2)
  72. // HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA12_WR(0x00000000);
  73. // HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA12_WR(0x000130B0);
  74. // Mux Register:
  75. // IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA12(0x020E0288)
  76. // SION [4] - Software Input On Field Reset: DISABLED
  77. // Force the selected mux mode Input path no matter of MUX_MODE functionality.
  78. // DISABLED (0) - Input Path is determined by functionality of the selected mux mode (regular).
  79. // ENABLED (1) - Force input path of pad.
  80. // MUX_MODE [2:0] - MUX Mode Select Field Reset: ALT5
  81. // Select iomux modes to be used for pad.
  82. // ALT0 (0) - Select instance: ipu1 signal: IPU1_CSI0_DATA12
  83. // ALT1 (1) - Select instance: eim signal: EIM_DATA08
  84. // ALT3 (3) - Select instance: uart4 signal: UART4_TX_DATA
  85. // ALT5 (5) - Select instance: gpio5 signal: GPIO5_IO30
  86. // ALT7 (7) - Select instance: arm signal: ARM_TRACE09
  87. HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA12_WR(
  88. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA12_SION_V(DISABLED) |
  89. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA12_MUX_MODE_V(ALT0));
  90. // Pad Control Register:
  91. // IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA12(0x020E0658)
  92. // HYS [16] - Hysteresis Enable Field Reset: ENABLED
  93. // DISABLED (0) - CMOS input
  94. // ENABLED (1) - Schmitt trigger input
  95. // PUS [15:14] - Pull Up / Down Config. Field Reset: 100K_OHM_PU
  96. // 100K_OHM_PD (0) - 100K Ohm Pull Down
  97. // 47K_OHM_PU (1) - 47K Ohm Pull Up
  98. // 100K_OHM_PU (2) - 100K Ohm Pull Up
  99. // 22K_OHM_PU (3) - 22K Ohm Pull Up
  100. // PUE [13] - Pull / Keep Select Field Reset: PULL
  101. // KEEP (0) - Keeper Enabled
  102. // PULL (1) - Pull Enabled
  103. // PKE [12] - Pull / Keep Enable Field Reset: ENABLED
  104. // DISABLED (0) - Pull/Keeper Disabled
  105. // ENABLED (1) - Pull/Keeper Enabled
  106. // ODE [11] - Open Drain Enable Field Reset: DISABLED
  107. // Enables open drain of the pin.
  108. // DISABLED (0) - Output is CMOS.
  109. // ENABLED (1) - Output is Open Drain.
  110. // SPEED [7:6] - Speed Field Reset: 100MHZ
  111. // TBD (0) - TBD
  112. // 50MHZ (1) - Low (50 MHz)
  113. // 100MHZ (2) - Medium (100 MHz)
  114. // 200MHZ (3) - Maximum (200 MHz)
  115. // DSE [5:3] - Drive Strength Field Reset: 40_OHM
  116. // HIZ (0) - HI-Z
  117. // 240_OHM (1) - 240 Ohm
  118. // 120_OHM (2) - 120 Ohm
  119. // 80_OHM (3) - 80 Ohm
  120. // 60_OHM (4) - 60 Ohm
  121. // 48_OHM (5) - 48 Ohm
  122. // 40_OHM (6) - 40 Ohm
  123. // 34_OHM (7) - 34 Ohm
  124. // SRE [0] - Slew Rate Field Reset: SLOW
  125. // Slew rate control.
  126. // SLOW (0) - Slow Slew Rate
  127. // FAST (1) - Fast Slew Rate
  128. HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA12_WR(
  129. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA12_HYS_V(ENABLED) |
  130. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA12_PUS_V(100K_OHM_PD) |
  131. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA12_PUE_V(PULL) |
  132. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA12_PKE_V(ENABLED) |
  133. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA12_ODE_V(DISABLED) |
  134. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA12_SPEED_V(100MHZ) |
  135. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA12_DSE_V(40_OHM) |
  136. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA12_SRE_V(SLOW));
  137. // Config ipu1.IPU1_CSI0_DATA13 to pad CSI0_DATA13(L1)
  138. // HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA13_WR(0x00000000);
  139. // HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA13_WR(0x000130B0);
  140. // Mux Register:
  141. // IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA13(0x020E028C)
  142. // SION [4] - Software Input On Field Reset: DISABLED
  143. // Force the selected mux mode Input path no matter of MUX_MODE functionality.
  144. // DISABLED (0) - Input Path is determined by functionality of the selected mux mode (regular).
  145. // ENABLED (1) - Force input path of pad.
  146. // MUX_MODE [2:0] - MUX Mode Select Field Reset: ALT5
  147. // Select iomux modes to be used for pad.
  148. // ALT0 (0) - Select instance: ipu1 signal: IPU1_CSI0_DATA13
  149. // ALT1 (1) - Select instance: eim signal: EIM_DATA09
  150. // ALT3 (3) - Select instance: uart4 signal: UART4_RX_DATA
  151. // ALT5 (5) - Select instance: gpio5 signal: GPIO5_IO31
  152. // ALT7 (7) - Select instance: arm signal: ARM_TRACE10
  153. HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA13_WR(
  154. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA13_SION_V(DISABLED) |
  155. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA13_MUX_MODE_V(ALT0));
  156. // Pad Control Register:
  157. // IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA13(0x020E065C)
  158. // HYS [16] - Hysteresis Enable Field Reset: ENABLED
  159. // DISABLED (0) - CMOS input
  160. // ENABLED (1) - Schmitt trigger input
  161. // PUS [15:14] - Pull Up / Down Config. Field Reset: 100K_OHM_PU
  162. // 100K_OHM_PD (0) - 100K Ohm Pull Down
  163. // 47K_OHM_PU (1) - 47K Ohm Pull Up
  164. // 100K_OHM_PU (2) - 100K Ohm Pull Up
  165. // 22K_OHM_PU (3) - 22K Ohm Pull Up
  166. // PUE [13] - Pull / Keep Select Field Reset: PULL
  167. // KEEP (0) - Keeper Enabled
  168. // PULL (1) - Pull Enabled
  169. // PKE [12] - Pull / Keep Enable Field Reset: ENABLED
  170. // DISABLED (0) - Pull/Keeper Disabled
  171. // ENABLED (1) - Pull/Keeper Enabled
  172. // ODE [11] - Open Drain Enable Field Reset: DISABLED
  173. // Enables open drain of the pin.
  174. // DISABLED (0) - Output is CMOS.
  175. // ENABLED (1) - Output is Open Drain.
  176. // SPEED [7:6] - Speed Field Reset: 100MHZ
  177. // TBD (0) - TBD
  178. // 50MHZ (1) - Low (50 MHz)
  179. // 100MHZ (2) - Medium (100 MHz)
  180. // 200MHZ (3) - Maximum (200 MHz)
  181. // DSE [5:3] - Drive Strength Field Reset: 40_OHM
  182. // HIZ (0) - HI-Z
  183. // 240_OHM (1) - 240 Ohm
  184. // 120_OHM (2) - 120 Ohm
  185. // 80_OHM (3) - 80 Ohm
  186. // 60_OHM (4) - 60 Ohm
  187. // 48_OHM (5) - 48 Ohm
  188. // 40_OHM (6) - 40 Ohm
  189. // 34_OHM (7) - 34 Ohm
  190. // SRE [0] - Slew Rate Field Reset: SLOW
  191. // Slew rate control.
  192. // SLOW (0) - Slow Slew Rate
  193. // FAST (1) - Fast Slew Rate
  194. HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA13_WR(
  195. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA13_HYS_V(ENABLED) |
  196. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA13_PUS_V(100K_OHM_PD) |
  197. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA13_PUE_V(PULL) |
  198. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA13_PKE_V(ENABLED) |
  199. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA13_ODE_V(DISABLED) |
  200. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA13_SPEED_V(100MHZ) |
  201. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA13_DSE_V(40_OHM) |
  202. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA13_SRE_V(SLOW));
  203. // Config ipu1.IPU1_CSI0_DATA14 to pad CSI0_DATA14(M4)
  204. // HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA14_WR(0x00000000);
  205. // HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA14_WR(0x000130B0);
  206. // Mux Register:
  207. // IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA14(0x020E0290)
  208. // SION [4] - Software Input On Field Reset: DISABLED
  209. // Force the selected mux mode Input path no matter of MUX_MODE functionality.
  210. // DISABLED (0) - Input Path is determined by functionality of the selected mux mode (regular).
  211. // ENABLED (1) - Force input path of pad.
  212. // MUX_MODE [2:0] - MUX Mode Select Field Reset: ALT5
  213. // Select iomux modes to be used for pad.
  214. // ALT0 (0) - Select instance: ipu1 signal: IPU1_CSI0_DATA14
  215. // ALT1 (1) - Select instance: eim signal: EIM_DATA10
  216. // ALT3 (3) - Select instance: uart5 signal: UART5_TX_DATA
  217. // ALT5 (5) - Select instance: gpio6 signal: GPIO6_IO00
  218. // ALT7 (7) - Select instance: arm signal: ARM_TRACE11
  219. HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA14_WR(
  220. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA14_SION_V(DISABLED) |
  221. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA14_MUX_MODE_V(ALT0));
  222. // Pad Control Register:
  223. // IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA14(0x020E0660)
  224. // HYS [16] - Hysteresis Enable Field Reset: ENABLED
  225. // DISABLED (0) - CMOS input
  226. // ENABLED (1) - Schmitt trigger input
  227. // PUS [15:14] - Pull Up / Down Config. Field Reset: 100K_OHM_PU
  228. // 100K_OHM_PD (0) - 100K Ohm Pull Down
  229. // 47K_OHM_PU (1) - 47K Ohm Pull Up
  230. // 100K_OHM_PU (2) - 100K Ohm Pull Up
  231. // 22K_OHM_PU (3) - 22K Ohm Pull Up
  232. // PUE [13] - Pull / Keep Select Field Reset: PULL
  233. // KEEP (0) - Keeper Enabled
  234. // PULL (1) - Pull Enabled
  235. // PKE [12] - Pull / Keep Enable Field Reset: ENABLED
  236. // DISABLED (0) - Pull/Keeper Disabled
  237. // ENABLED (1) - Pull/Keeper Enabled
  238. // ODE [11] - Open Drain Enable Field Reset: DISABLED
  239. // Enables open drain of the pin.
  240. // DISABLED (0) - Output is CMOS.
  241. // ENABLED (1) - Output is Open Drain.
  242. // SPEED [7:6] - Speed Field Reset: 100MHZ
  243. // TBD (0) - TBD
  244. // 50MHZ (1) - Low (50 MHz)
  245. // 100MHZ (2) - Medium (100 MHz)
  246. // 200MHZ (3) - Maximum (200 MHz)
  247. // DSE [5:3] - Drive Strength Field Reset: 40_OHM
  248. // HIZ (0) - HI-Z
  249. // 240_OHM (1) - 240 Ohm
  250. // 120_OHM (2) - 120 Ohm
  251. // 80_OHM (3) - 80 Ohm
  252. // 60_OHM (4) - 60 Ohm
  253. // 48_OHM (5) - 48 Ohm
  254. // 40_OHM (6) - 40 Ohm
  255. // 34_OHM (7) - 34 Ohm
  256. // SRE [0] - Slew Rate Field Reset: SLOW
  257. // Slew rate control.
  258. // SLOW (0) - Slow Slew Rate
  259. // FAST (1) - Fast Slew Rate
  260. HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA14_WR(
  261. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA14_HYS_V(ENABLED) |
  262. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA14_PUS_V(100K_OHM_PD) |
  263. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA14_PUE_V(PULL) |
  264. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA14_PKE_V(ENABLED) |
  265. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA14_ODE_V(DISABLED) |
  266. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA14_SPEED_V(100MHZ) |
  267. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA14_DSE_V(40_OHM) |
  268. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA14_SRE_V(SLOW));
  269. // Config ipu1.IPU1_CSI0_DATA15 to pad CSI0_DATA15(M5)
  270. // HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA15_WR(0x00000000);
  271. // HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA15_WR(0x000130B0);
  272. // Mux Register:
  273. // IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA15(0x020E0294)
  274. // SION [4] - Software Input On Field Reset: DISABLED
  275. // Force the selected mux mode Input path no matter of MUX_MODE functionality.
  276. // DISABLED (0) - Input Path is determined by functionality of the selected mux mode (regular).
  277. // ENABLED (1) - Force input path of pad.
  278. // MUX_MODE [2:0] - MUX Mode Select Field Reset: ALT5
  279. // Select iomux modes to be used for pad.
  280. // ALT0 (0) - Select instance: ipu1 signal: IPU1_CSI0_DATA15
  281. // ALT1 (1) - Select instance: eim signal: EIM_DATA11
  282. // ALT3 (3) - Select instance: uart5 signal: UART5_RX_DATA
  283. // ALT5 (5) - Select instance: gpio6 signal: GPIO6_IO01
  284. // ALT7 (7) - Select instance: arm signal: ARM_TRACE12
  285. HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA15_WR(
  286. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA15_SION_V(DISABLED) |
  287. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA15_MUX_MODE_V(ALT0));
  288. // Pad Control Register:
  289. // IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA15(0x020E0664)
  290. // HYS [16] - Hysteresis Enable Field Reset: ENABLED
  291. // DISABLED (0) - CMOS input
  292. // ENABLED (1) - Schmitt trigger input
  293. // PUS [15:14] - Pull Up / Down Config. Field Reset: 100K_OHM_PU
  294. // 100K_OHM_PD (0) - 100K Ohm Pull Down
  295. // 47K_OHM_PU (1) - 47K Ohm Pull Up
  296. // 100K_OHM_PU (2) - 100K Ohm Pull Up
  297. // 22K_OHM_PU (3) - 22K Ohm Pull Up
  298. // PUE [13] - Pull / Keep Select Field Reset: PULL
  299. // KEEP (0) - Keeper Enabled
  300. // PULL (1) - Pull Enabled
  301. // PKE [12] - Pull / Keep Enable Field Reset: ENABLED
  302. // DISABLED (0) - Pull/Keeper Disabled
  303. // ENABLED (1) - Pull/Keeper Enabled
  304. // ODE [11] - Open Drain Enable Field Reset: DISABLED
  305. // Enables open drain of the pin.
  306. // DISABLED (0) - Output is CMOS.
  307. // ENABLED (1) - Output is Open Drain.
  308. // SPEED [7:6] - Speed Field Reset: 100MHZ
  309. // TBD (0) - TBD
  310. // 50MHZ (1) - Low (50 MHz)
  311. // 100MHZ (2) - Medium (100 MHz)
  312. // 200MHZ (3) - Maximum (200 MHz)
  313. // DSE [5:3] - Drive Strength Field Reset: 40_OHM
  314. // HIZ (0) - HI-Z
  315. // 240_OHM (1) - 240 Ohm
  316. // 120_OHM (2) - 120 Ohm
  317. // 80_OHM (3) - 80 Ohm
  318. // 60_OHM (4) - 60 Ohm
  319. // 48_OHM (5) - 48 Ohm
  320. // 40_OHM (6) - 40 Ohm
  321. // 34_OHM (7) - 34 Ohm
  322. // SRE [0] - Slew Rate Field Reset: SLOW
  323. // Slew rate control.
  324. // SLOW (0) - Slow Slew Rate
  325. // FAST (1) - Fast Slew Rate
  326. HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA15_WR(
  327. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA15_HYS_V(ENABLED) |
  328. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA15_PUS_V(100K_OHM_PD) |
  329. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA15_PUE_V(PULL) |
  330. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA15_PKE_V(ENABLED) |
  331. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA15_ODE_V(DISABLED) |
  332. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA15_SPEED_V(100MHZ) |
  333. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA15_DSE_V(40_OHM) |
  334. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA15_SRE_V(SLOW));
  335. // Config ipu1.IPU1_CSI0_DATA16 to pad CSI0_DATA16(L4)
  336. // HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA16_WR(0x00000000);
  337. // HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA16_WR(0x000130B0);
  338. // Mux Register:
  339. // IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA16(0x020E0298)
  340. // SION [4] - Software Input On Field Reset: DISABLED
  341. // Force the selected mux mode Input path no matter of MUX_MODE functionality.
  342. // DISABLED (0) - Input Path is determined by functionality of the selected mux mode (regular).
  343. // ENABLED (1) - Force input path of pad.
  344. // MUX_MODE [2:0] - MUX Mode Select Field Reset: ALT5
  345. // Select iomux modes to be used for pad.
  346. // ALT0 (0) - Select instance: ipu1 signal: IPU1_CSI0_DATA16
  347. // ALT1 (1) - Select instance: eim signal: EIM_DATA12
  348. // ALT3 (3) - Select instance: uart4 signal: UART4_RTS_B
  349. // ALT5 (5) - Select instance: gpio6 signal: GPIO6_IO02
  350. // ALT7 (7) - Select instance: arm signal: ARM_TRACE13
  351. HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA16_WR(
  352. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA16_SION_V(DISABLED) |
  353. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA16_MUX_MODE_V(ALT0));
  354. // Pad Control Register:
  355. // IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA16(0x020E0668)
  356. // HYS [16] - Hysteresis Enable Field Reset: ENABLED
  357. // DISABLED (0) - CMOS input
  358. // ENABLED (1) - Schmitt trigger input
  359. // PUS [15:14] - Pull Up / Down Config. Field Reset: 100K_OHM_PU
  360. // 100K_OHM_PD (0) - 100K Ohm Pull Down
  361. // 47K_OHM_PU (1) - 47K Ohm Pull Up
  362. // 100K_OHM_PU (2) - 100K Ohm Pull Up
  363. // 22K_OHM_PU (3) - 22K Ohm Pull Up
  364. // PUE [13] - Pull / Keep Select Field Reset: PULL
  365. // KEEP (0) - Keeper Enabled
  366. // PULL (1) - Pull Enabled
  367. // PKE [12] - Pull / Keep Enable Field Reset: ENABLED
  368. // DISABLED (0) - Pull/Keeper Disabled
  369. // ENABLED (1) - Pull/Keeper Enabled
  370. // ODE [11] - Open Drain Enable Field Reset: DISABLED
  371. // Enables open drain of the pin.
  372. // DISABLED (0) - Output is CMOS.
  373. // ENABLED (1) - Output is Open Drain.
  374. // SPEED [7:6] - Speed Field Reset: 100MHZ
  375. // TBD (0) - TBD
  376. // 50MHZ (1) - Low (50 MHz)
  377. // 100MHZ (2) - Medium (100 MHz)
  378. // 200MHZ (3) - Maximum (200 MHz)
  379. // DSE [5:3] - Drive Strength Field Reset: 40_OHM
  380. // HIZ (0) - HI-Z
  381. // 240_OHM (1) - 240 Ohm
  382. // 120_OHM (2) - 120 Ohm
  383. // 80_OHM (3) - 80 Ohm
  384. // 60_OHM (4) - 60 Ohm
  385. // 48_OHM (5) - 48 Ohm
  386. // 40_OHM (6) - 40 Ohm
  387. // 34_OHM (7) - 34 Ohm
  388. // SRE [0] - Slew Rate Field Reset: SLOW
  389. // Slew rate control.
  390. // SLOW (0) - Slow Slew Rate
  391. // FAST (1) - Fast Slew Rate
  392. HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA16_WR(
  393. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA16_HYS_V(ENABLED) |
  394. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA16_PUS_V(100K_OHM_PD) |
  395. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA16_PUE_V(PULL) |
  396. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA16_PKE_V(ENABLED) |
  397. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA16_ODE_V(DISABLED) |
  398. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA16_SPEED_V(100MHZ) |
  399. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA16_DSE_V(40_OHM) |
  400. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA16_SRE_V(SLOW));
  401. // Config ipu1.IPU1_CSI0_DATA17 to pad CSI0_DATA17(L3)
  402. // HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA17_WR(0x00000000);
  403. // HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA17_WR(0x000130B0);
  404. // Mux Register:
  405. // IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA17(0x020E029C)
  406. // SION [4] - Software Input On Field Reset: DISABLED
  407. // Force the selected mux mode Input path no matter of MUX_MODE functionality.
  408. // DISABLED (0) - Input Path is determined by functionality of the selected mux mode (regular).
  409. // ENABLED (1) - Force input path of pad.
  410. // MUX_MODE [2:0] - MUX Mode Select Field Reset: ALT5
  411. // Select iomux modes to be used for pad.
  412. // ALT0 (0) - Select instance: ipu1 signal: IPU1_CSI0_DATA17
  413. // ALT1 (1) - Select instance: eim signal: EIM_DATA13
  414. // ALT3 (3) - Select instance: uart4 signal: UART4_CTS_B
  415. // ALT5 (5) - Select instance: gpio6 signal: GPIO6_IO03
  416. // ALT7 (7) - Select instance: arm signal: ARM_TRACE14
  417. HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA17_WR(
  418. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA17_SION_V(DISABLED) |
  419. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA17_MUX_MODE_V(ALT0));
  420. // Pad Control Register:
  421. // IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA17(0x020E066C)
  422. // HYS [16] - Hysteresis Enable Field Reset: ENABLED
  423. // DISABLED (0) - CMOS input
  424. // ENABLED (1) - Schmitt trigger input
  425. // PUS [15:14] - Pull Up / Down Config. Field Reset: 100K_OHM_PU
  426. // 100K_OHM_PD (0) - 100K Ohm Pull Down
  427. // 47K_OHM_PU (1) - 47K Ohm Pull Up
  428. // 100K_OHM_PU (2) - 100K Ohm Pull Up
  429. // 22K_OHM_PU (3) - 22K Ohm Pull Up
  430. // PUE [13] - Pull / Keep Select Field Reset: PULL
  431. // KEEP (0) - Keeper Enabled
  432. // PULL (1) - Pull Enabled
  433. // PKE [12] - Pull / Keep Enable Field Reset: ENABLED
  434. // DISABLED (0) - Pull/Keeper Disabled
  435. // ENABLED (1) - Pull/Keeper Enabled
  436. // ODE [11] - Open Drain Enable Field Reset: DISABLED
  437. // Enables open drain of the pin.
  438. // DISABLED (0) - Output is CMOS.
  439. // ENABLED (1) - Output is Open Drain.
  440. // SPEED [7:6] - Speed Field Reset: 100MHZ
  441. // TBD (0) - TBD
  442. // 50MHZ (1) - Low (50 MHz)
  443. // 100MHZ (2) - Medium (100 MHz)
  444. // 200MHZ (3) - Maximum (200 MHz)
  445. // DSE [5:3] - Drive Strength Field Reset: 40_OHM
  446. // HIZ (0) - HI-Z
  447. // 240_OHM (1) - 240 Ohm
  448. // 120_OHM (2) - 120 Ohm
  449. // 80_OHM (3) - 80 Ohm
  450. // 60_OHM (4) - 60 Ohm
  451. // 48_OHM (5) - 48 Ohm
  452. // 40_OHM (6) - 40 Ohm
  453. // 34_OHM (7) - 34 Ohm
  454. // SRE [0] - Slew Rate Field Reset: SLOW
  455. // Slew rate control.
  456. // SLOW (0) - Slow Slew Rate
  457. // FAST (1) - Fast Slew Rate
  458. HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA17_WR(
  459. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA17_HYS_V(ENABLED) |
  460. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA17_PUS_V(100K_OHM_PD) |
  461. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA17_PUE_V(PULL) |
  462. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA17_PKE_V(ENABLED) |
  463. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA17_ODE_V(DISABLED) |
  464. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA17_SPEED_V(100MHZ) |
  465. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA17_DSE_V(40_OHM) |
  466. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA17_SRE_V(SLOW));
  467. // Config ipu1.IPU1_CSI0_DATA18 to pad CSI0_DATA18(M6)
  468. // HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA18_WR(0x00000000);
  469. // HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA18_WR(0x000130B0);
  470. // Mux Register:
  471. // IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA18(0x020E02A0)
  472. // SION [4] - Software Input On Field Reset: DISABLED
  473. // Force the selected mux mode Input path no matter of MUX_MODE functionality.
  474. // DISABLED (0) - Input Path is determined by functionality of the selected mux mode (regular).
  475. // ENABLED (1) - Force input path of pad.
  476. // MUX_MODE [2:0] - MUX Mode Select Field Reset: ALT5
  477. // Select iomux modes to be used for pad.
  478. // ALT0 (0) - Select instance: ipu1 signal: IPU1_CSI0_DATA18
  479. // ALT1 (1) - Select instance: eim signal: EIM_DATA14
  480. // ALT3 (3) - Select instance: uart5 signal: UART5_RTS_B
  481. // ALT5 (5) - Select instance: gpio6 signal: GPIO6_IO04
  482. // ALT7 (7) - Select instance: arm signal: ARM_TRACE15
  483. HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA18_WR(
  484. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA18_SION_V(DISABLED) |
  485. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA18_MUX_MODE_V(ALT0));
  486. // Pad Control Register:
  487. // IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA18(0x020E0670)
  488. // HYS [16] - Hysteresis Enable Field Reset: ENABLED
  489. // DISABLED (0) - CMOS input
  490. // ENABLED (1) - Schmitt trigger input
  491. // PUS [15:14] - Pull Up / Down Config. Field Reset: 100K_OHM_PU
  492. // 100K_OHM_PD (0) - 100K Ohm Pull Down
  493. // 47K_OHM_PU (1) - 47K Ohm Pull Up
  494. // 100K_OHM_PU (2) - 100K Ohm Pull Up
  495. // 22K_OHM_PU (3) - 22K Ohm Pull Up
  496. // PUE [13] - Pull / Keep Select Field Reset: PULL
  497. // KEEP (0) - Keeper Enabled
  498. // PULL (1) - Pull Enabled
  499. // PKE [12] - Pull / Keep Enable Field Reset: ENABLED
  500. // DISABLED (0) - Pull/Keeper Disabled
  501. // ENABLED (1) - Pull/Keeper Enabled
  502. // ODE [11] - Open Drain Enable Field Reset: DISABLED
  503. // Enables open drain of the pin.
  504. // DISABLED (0) - Output is CMOS.
  505. // ENABLED (1) - Output is Open Drain.
  506. // SPEED [7:6] - Speed Field Reset: 100MHZ
  507. // TBD (0) - TBD
  508. // 50MHZ (1) - Low (50 MHz)
  509. // 100MHZ (2) - Medium (100 MHz)
  510. // 200MHZ (3) - Maximum (200 MHz)
  511. // DSE [5:3] - Drive Strength Field Reset: 40_OHM
  512. // HIZ (0) - HI-Z
  513. // 240_OHM (1) - 240 Ohm
  514. // 120_OHM (2) - 120 Ohm
  515. // 80_OHM (3) - 80 Ohm
  516. // 60_OHM (4) - 60 Ohm
  517. // 48_OHM (5) - 48 Ohm
  518. // 40_OHM (6) - 40 Ohm
  519. // 34_OHM (7) - 34 Ohm
  520. // SRE [0] - Slew Rate Field Reset: SLOW
  521. // Slew rate control.
  522. // SLOW (0) - Slow Slew Rate
  523. // FAST (1) - Fast Slew Rate
  524. HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA18_WR(
  525. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA18_HYS_V(ENABLED) |
  526. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA18_PUS_V(100K_OHM_PD) |
  527. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA18_PUE_V(PULL) |
  528. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA18_PKE_V(ENABLED) |
  529. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA18_ODE_V(DISABLED) |
  530. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA18_SPEED_V(100MHZ) |
  531. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA18_DSE_V(40_OHM) |
  532. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA18_SRE_V(SLOW));
  533. // Config ipu1.IPU1_CSI0_DATA19 to pad CSI0_DATA19(L6)
  534. // HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA19_WR(0x00000000);
  535. // HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA19_WR(0x000130B0);
  536. // Mux Register:
  537. // IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA19(0x020E02A4)
  538. // SION [4] - Software Input On Field Reset: DISABLED
  539. // Force the selected mux mode Input path no matter of MUX_MODE functionality.
  540. // DISABLED (0) - Input Path is determined by functionality of the selected mux mode (regular).
  541. // ENABLED (1) - Force input path of pad.
  542. // MUX_MODE [2:0] - MUX Mode Select Field Reset: ALT5
  543. // Select iomux modes to be used for pad.
  544. // ALT0 (0) - Select instance: ipu1 signal: IPU1_CSI0_DATA19
  545. // ALT1 (1) - Select instance: eim signal: EIM_DATA15
  546. // ALT3 (3) - Select instance: uart5 signal: UART5_CTS_B
  547. // ALT5 (5) - Select instance: gpio6 signal: GPIO6_IO05
  548. HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA19_WR(
  549. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA19_SION_V(DISABLED) |
  550. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_DATA19_MUX_MODE_V(ALT0));
  551. // Pad Control Register:
  552. // IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA19(0x020E0674)
  553. // HYS [16] - Hysteresis Enable Field Reset: ENABLED
  554. // DISABLED (0) - CMOS input
  555. // ENABLED (1) - Schmitt trigger input
  556. // PUS [15:14] - Pull Up / Down Config. Field Reset: 100K_OHM_PU
  557. // 100K_OHM_PD (0) - 100K Ohm Pull Down
  558. // 47K_OHM_PU (1) - 47K Ohm Pull Up
  559. // 100K_OHM_PU (2) - 100K Ohm Pull Up
  560. // 22K_OHM_PU (3) - 22K Ohm Pull Up
  561. // PUE [13] - Pull / Keep Select Field Reset: PULL
  562. // KEEP (0) - Keeper Enabled
  563. // PULL (1) - Pull Enabled
  564. // PKE [12] - Pull / Keep Enable Field Reset: ENABLED
  565. // DISABLED (0) - Pull/Keeper Disabled
  566. // ENABLED (1) - Pull/Keeper Enabled
  567. // ODE [11] - Open Drain Enable Field Reset: DISABLED
  568. // Enables open drain of the pin.
  569. // DISABLED (0) - Output is CMOS.
  570. // ENABLED (1) - Output is Open Drain.
  571. // SPEED [7:6] - Speed Field Reset: 100MHZ
  572. // TBD (0) - TBD
  573. // 50MHZ (1) - Low (50 MHz)
  574. // 100MHZ (2) - Medium (100 MHz)
  575. // 200MHZ (3) - Maximum (200 MHz)
  576. // DSE [5:3] - Drive Strength Field Reset: 40_OHM
  577. // HIZ (0) - HI-Z
  578. // 240_OHM (1) - 240 Ohm
  579. // 120_OHM (2) - 120 Ohm
  580. // 80_OHM (3) - 80 Ohm
  581. // 60_OHM (4) - 60 Ohm
  582. // 48_OHM (5) - 48 Ohm
  583. // 40_OHM (6) - 40 Ohm
  584. // 34_OHM (7) - 34 Ohm
  585. // SRE [0] - Slew Rate Field Reset: SLOW
  586. // Slew rate control.
  587. // SLOW (0) - Slow Slew Rate
  588. // FAST (1) - Fast Slew Rate
  589. HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA19_WR(
  590. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA19_HYS_V(ENABLED) |
  591. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA19_PUS_V(100K_OHM_PD) |
  592. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA19_PUE_V(PULL) |
  593. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA19_PKE_V(ENABLED) |
  594. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA19_ODE_V(DISABLED) |
  595. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA19_SPEED_V(100MHZ) |
  596. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA19_DSE_V(40_OHM) |
  597. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_DATA19_SRE_V(SLOW));
  598. // Config ipu1.IPU1_CSI0_HSYNC to pad CSI0_HSYNC(P4)
  599. // HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_HSYNC_WR(0x00000000);
  600. // HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_HSYNC_WR(0x000130B0);
  601. // Mux Register:
  602. // IOMUXC_SW_MUX_CTL_PAD_CSI0_HSYNC(0x020E025C)
  603. // SION [4] - Software Input On Field Reset: DISABLED
  604. // Force the selected mux mode Input path no matter of MUX_MODE functionality.
  605. // DISABLED (0) - Input Path is determined by functionality of the selected mux mode (regular).
  606. // ENABLED (1) - Force input path of pad.
  607. // MUX_MODE [2:0] - MUX Mode Select Field Reset: ALT5
  608. // Select iomux modes to be used for pad.
  609. // ALT0 (0) - Select instance: ipu1 signal: IPU1_CSI0_HSYNC
  610. // ALT3 (3) - Select instance: ccm signal: CCM_CLKO1
  611. // ALT5 (5) - Select instance: gpio5 signal: GPIO5_IO19
  612. // ALT7 (7) - Select instance: arm signal: ARM_TRACE_CTL
  613. HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_HSYNC_WR(
  614. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_HSYNC_SION_V(DISABLED) |
  615. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_HSYNC_MUX_MODE_V(ALT0));
  616. // Pad Control Register:
  617. // IOMUXC_SW_PAD_CTL_PAD_CSI0_HSYNC(0x020E062C)
  618. // HYS [16] - Hysteresis Enable Field Reset: ENABLED
  619. // DISABLED (0) - CMOS input
  620. // ENABLED (1) - Schmitt trigger input
  621. // PUS [15:14] - Pull Up / Down Config. Field Reset: 100K_OHM_PU
  622. // 100K_OHM_PD (0) - 100K Ohm Pull Down
  623. // 47K_OHM_PU (1) - 47K Ohm Pull Up
  624. // 100K_OHM_PU (2) - 100K Ohm Pull Up
  625. // 22K_OHM_PU (3) - 22K Ohm Pull Up
  626. // PUE [13] - Pull / Keep Select Field Reset: PULL
  627. // KEEP (0) - Keeper Enabled
  628. // PULL (1) - Pull Enabled
  629. // PKE [12] - Pull / Keep Enable Field Reset: ENABLED
  630. // DISABLED (0) - Pull/Keeper Disabled
  631. // ENABLED (1) - Pull/Keeper Enabled
  632. // ODE [11] - Open Drain Enable Field Reset: DISABLED
  633. // Enables open drain of the pin.
  634. // DISABLED (0) - Output is CMOS.
  635. // ENABLED (1) - Output is Open Drain.
  636. // SPEED [7:6] - Speed Field Reset: 100MHZ
  637. // TBD (0) - TBD
  638. // 50MHZ (1) - Low (50 MHz)
  639. // 100MHZ (2) - Medium (100 MHz)
  640. // 200MHZ (3) - Maximum (200 MHz)
  641. // DSE [5:3] - Drive Strength Field Reset: 40_OHM
  642. // HIZ (0) - HI-Z
  643. // 240_OHM (1) - 240 Ohm
  644. // 120_OHM (2) - 120 Ohm
  645. // 80_OHM (3) - 80 Ohm
  646. // 60_OHM (4) - 60 Ohm
  647. // 48_OHM (5) - 48 Ohm
  648. // 40_OHM (6) - 40 Ohm
  649. // 34_OHM (7) - 34 Ohm
  650. // SRE [0] - Slew Rate Field Reset: SLOW
  651. // Slew rate control.
  652. // SLOW (0) - Slow Slew Rate
  653. // FAST (1) - Fast Slew Rate
  654. HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_HSYNC_WR(
  655. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_HSYNC_HYS_V(ENABLED) |
  656. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_HSYNC_PUS_V(100K_OHM_PD) |
  657. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_HSYNC_PUE_V(PULL) |
  658. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_HSYNC_PKE_V(ENABLED) |
  659. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_HSYNC_ODE_V(DISABLED) |
  660. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_HSYNC_SPEED_V(100MHZ) |
  661. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_HSYNC_DSE_V(40_OHM) |
  662. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_HSYNC_SRE_V(SLOW));
  663. // Config ipu1.IPU1_CSI0_PIXCLK to pad CSI0_PIXCLK(P1)
  664. // HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_PIXCLK_WR(0x00000000);
  665. // HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_PIXCLK_WR(0x000130B0);
  666. // Mux Register:
  667. // IOMUXC_SW_MUX_CTL_PAD_CSI0_PIXCLK(0x020E0258)
  668. // SION [4] - Software Input On Field Reset: DISABLED
  669. // Force the selected mux mode Input path no matter of MUX_MODE functionality.
  670. // DISABLED (0) - Input Path is determined by functionality of the selected mux mode (regular).
  671. // ENABLED (1) - Force input path of pad.
  672. // MUX_MODE [2:0] - MUX Mode Select Field Reset: ALT5
  673. // Select iomux modes to be used for pad.
  674. // ALT0 (0) - Select instance: ipu1 signal: IPU1_CSI0_PIXCLK
  675. // ALT5 (5) - Select instance: gpio5 signal: GPIO5_IO18
  676. // ALT7 (7) - Select instance: arm signal: ARM_EVENTO
  677. HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_PIXCLK_WR(
  678. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_PIXCLK_SION_V(DISABLED) |
  679. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_PIXCLK_MUX_MODE_V(ALT0));
  680. // Pad Control Register:
  681. // IOMUXC_SW_PAD_CTL_PAD_CSI0_PIXCLK(0x020E0628)
  682. // HYS [16] - Hysteresis Enable Field Reset: ENABLED
  683. // DISABLED (0) - CMOS input
  684. // ENABLED (1) - Schmitt trigger input
  685. // PUS [15:14] - Pull Up / Down Config. Field Reset: 100K_OHM_PU
  686. // 100K_OHM_PD (0) - 100K Ohm Pull Down
  687. // 47K_OHM_PU (1) - 47K Ohm Pull Up
  688. // 100K_OHM_PU (2) - 100K Ohm Pull Up
  689. // 22K_OHM_PU (3) - 22K Ohm Pull Up
  690. // PUE [13] - Pull / Keep Select Field Reset: PULL
  691. // KEEP (0) - Keeper Enabled
  692. // PULL (1) - Pull Enabled
  693. // PKE [12] - Pull / Keep Enable Field Reset: ENABLED
  694. // DISABLED (0) - Pull/Keeper Disabled
  695. // ENABLED (1) - Pull/Keeper Enabled
  696. // ODE [11] - Open Drain Enable Field Reset: DISABLED
  697. // Enables open drain of the pin.
  698. // DISABLED (0) - Output is CMOS.
  699. // ENABLED (1) - Output is Open Drain.
  700. // SPEED [7:6] - Speed Field Reset: 100MHZ
  701. // TBD (0) - TBD
  702. // 50MHZ (1) - Low (50 MHz)
  703. // 100MHZ (2) - Medium (100 MHz)
  704. // 200MHZ (3) - Maximum (200 MHz)
  705. // DSE [5:3] - Drive Strength Field Reset: 40_OHM
  706. // HIZ (0) - HI-Z
  707. // 240_OHM (1) - 240 Ohm
  708. // 120_OHM (2) - 120 Ohm
  709. // 80_OHM (3) - 80 Ohm
  710. // 60_OHM (4) - 60 Ohm
  711. // 48_OHM (5) - 48 Ohm
  712. // 40_OHM (6) - 40 Ohm
  713. // 34_OHM (7) - 34 Ohm
  714. // SRE [0] - Slew Rate Field Reset: SLOW
  715. // Slew rate control.
  716. // SLOW (0) - Slow Slew Rate
  717. // FAST (1) - Fast Slew Rate
  718. HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_PIXCLK_WR(
  719. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_PIXCLK_HYS_V(ENABLED) |
  720. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_PIXCLK_PUS_V(100K_OHM_PD) |
  721. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_PIXCLK_PUE_V(PULL) |
  722. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_PIXCLK_PKE_V(ENABLED) |
  723. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_PIXCLK_ODE_V(DISABLED) |
  724. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_PIXCLK_SPEED_V(100MHZ) |
  725. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_PIXCLK_DSE_V(40_OHM) |
  726. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_PIXCLK_SRE_V(SLOW));
  727. // Config ipu1.IPU1_CSI0_VSYNC to pad CSI0_VSYNC(N2)
  728. // HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_VSYNC_WR(0x00000000);
  729. // HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_VSYNC_WR(0x000130B0);
  730. // Mux Register:
  731. // IOMUXC_SW_MUX_CTL_PAD_CSI0_VSYNC(0x020E0264)
  732. // SION [4] - Software Input On Field Reset: DISABLED
  733. // Force the selected mux mode Input path no matter of MUX_MODE functionality.
  734. // DISABLED (0) - Input Path is determined by functionality of the selected mux mode (regular).
  735. // ENABLED (1) - Force input path of pad.
  736. // MUX_MODE [2:0] - MUX Mode Select Field Reset: ALT5
  737. // Select iomux modes to be used for pad.
  738. // ALT0 (0) - Select instance: ipu1 signal: IPU1_CSI0_VSYNC
  739. // ALT1 (1) - Select instance: eim signal: EIM_DATA01
  740. // ALT5 (5) - Select instance: gpio5 signal: GPIO5_IO21
  741. // ALT7 (7) - Select instance: arm signal: ARM_TRACE00
  742. HW_IOMUXC_SW_MUX_CTL_PAD_CSI0_VSYNC_WR(
  743. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_VSYNC_SION_V(DISABLED) |
  744. BF_IOMUXC_SW_MUX_CTL_PAD_CSI0_VSYNC_MUX_MODE_V(ALT0));
  745. // Pad Control Register:
  746. // IOMUXC_SW_PAD_CTL_PAD_CSI0_VSYNC(0x020E0634)
  747. // HYS [16] - Hysteresis Enable Field Reset: ENABLED
  748. // DISABLED (0) - CMOS input
  749. // ENABLED (1) - Schmitt trigger input
  750. // PUS [15:14] - Pull Up / Down Config. Field Reset: 100K_OHM_PU
  751. // 100K_OHM_PD (0) - 100K Ohm Pull Down
  752. // 47K_OHM_PU (1) - 47K Ohm Pull Up
  753. // 100K_OHM_PU (2) - 100K Ohm Pull Up
  754. // 22K_OHM_PU (3) - 22K Ohm Pull Up
  755. // PUE [13] - Pull / Keep Select Field Reset: PULL
  756. // KEEP (0) - Keeper Enabled
  757. // PULL (1) - Pull Enabled
  758. // PKE [12] - Pull / Keep Enable Field Reset: ENABLED
  759. // DISABLED (0) - Pull/Keeper Disabled
  760. // ENABLED (1) - Pull/Keeper Enabled
  761. // ODE [11] - Open Drain Enable Field Reset: DISABLED
  762. // Enables open drain of the pin.
  763. // DISABLED (0) - Output is CMOS.
  764. // ENABLED (1) - Output is Open Drain.
  765. // SPEED [7:6] - Speed Field Reset: 100MHZ
  766. // TBD (0) - TBD
  767. // 50MHZ (1) - Low (50 MHz)
  768. // 100MHZ (2) - Medium (100 MHz)
  769. // 200MHZ (3) - Maximum (200 MHz)
  770. // DSE [5:3] - Drive Strength Field Reset: 40_OHM
  771. // HIZ (0) - HI-Z
  772. // 240_OHM (1) - 240 Ohm
  773. // 120_OHM (2) - 120 Ohm
  774. // 80_OHM (3) - 80 Ohm
  775. // 60_OHM (4) - 60 Ohm
  776. // 48_OHM (5) - 48 Ohm
  777. // 40_OHM (6) - 40 Ohm
  778. // 34_OHM (7) - 34 Ohm
  779. // SRE [0] - Slew Rate Field Reset: SLOW
  780. // Slew rate control.
  781. // SLOW (0) - Slow Slew Rate
  782. // FAST (1) - Fast Slew Rate
  783. HW_IOMUXC_SW_PAD_CTL_PAD_CSI0_VSYNC_WR(
  784. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_VSYNC_HYS_V(ENABLED) |
  785. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_VSYNC_PUS_V(100K_OHM_PD) |
  786. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_VSYNC_PUE_V(PULL) |
  787. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_VSYNC_PKE_V(ENABLED) |
  788. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_VSYNC_ODE_V(DISABLED) |
  789. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_VSYNC_SPEED_V(100MHZ) |
  790. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_VSYNC_DSE_V(40_OHM) |
  791. BF_IOMUXC_SW_PAD_CTL_PAD_CSI0_VSYNC_SRE_V(SLOW));
  792. }
  793. /*!
  794. * reset camera sensor through GPIO on SMD board
  795. *
  796. */
  797. void sensor_reset(void)
  798. {
  799. int32_t reset_occupy = 1000, reset_delay = 1000;
  800. sensor_standby(0);
  801. /* MX6DQ/SDL_SMART_DEVICE: camera reset through GPIO1_17 */
  802. BW_IOMUXC_SW_MUX_CTL_PAD_SD1_DATA1_MUX_MODE(BV_IOMUXC_SW_MUX_CTL_PAD_SD1_DATA1_MUX_MODE__ALT5);
  803. gpio_set_direction(GPIO_PORT1, 17, GPIO_GDIR_OUTPUT);
  804. gpio_set_level(GPIO_PORT1, 17, GPIO_LOW_LEVEL);
  805. hal_delay_us(reset_occupy);
  806. gpio_set_level(GPIO_PORT1, 17, GPIO_HIGH_LEVEL);
  807. hal_delay_us(reset_delay);
  808. }
  809. /*!
  810. * set camera sensor to standby mode.
  811. *
  812. * @param enable: specify whether set camera sensor to standby mode
  813. *
  814. */
  815. void sensor_standby(int32_t enable)
  816. {
  817. /* MX6DQ/SDL_SMART_DEVICE: setting to gpio1_16, power down high active */
  818. BW_IOMUXC_SW_MUX_CTL_PAD_SD1_DATA0_MUX_MODE(BV_IOMUXC_SW_MUX_CTL_PAD_SD1_DATA0_MUX_MODE__ALT5);
  819. gpio_set_direction(GPIO_PORT1, 16, GPIO_GDIR_OUTPUT);
  820. if (enable)
  821. gpio_set_level(GPIO_PORT1, 16, GPIO_HIGH_LEVEL);
  822. else
  823. gpio_set_level(GPIO_PORT1, 16, GPIO_LOW_LEVEL);
  824. }
  825. /*!
  826. * set camera sensor clock to 24MHz.
  827. *
  828. */
  829. void sensor_clock_setting(void)
  830. {
  831. int32_t clock_delay = 1000;
  832. /*MX6DQ/SDL_SMART_DEVICE: config clko */
  833. /*config gpio_0 to be clko */
  834. BW_IOMUXC_SW_MUX_CTL_PAD_GPIO00_MUX_MODE(BV_IOMUXC_SW_MUX_CTL_PAD_GPIO00_MUX_MODE__ALT0);
  835. BW_IOMUXC_SW_PAD_CTL_PAD_GPIO00_SRE(BV_IOMUXC_SW_PAD_CTL_PAD_GPIO00_SRE__FAST);
  836. BW_IOMUXC_SW_PAD_CTL_PAD_GPIO00_DSE(BV_IOMUXC_SW_PAD_CTL_PAD_GPIO00_DSE__80_OHM);
  837. /*select osc_clk 24MHz, CKO1 output drives cko2 clock */
  838. HW_CCM_CCOSR_WR(
  839. BF_CCM_CCOSR_CLKO2_EN(1) |
  840. BF_CCM_CCOSR_CLKO2_DIV(0) | /*div 1*/
  841. BF_CCM_CCOSR_CLKO2_SEL(0xe) | /*osc_clk*/
  842. BF_CCM_CCOSR_CLKO_SEL(1) |
  843. BF_CCM_CCOSR_CLKO1_EN(1) |
  844. BF_CCM_CCOSR_CLKO1_DIV(0)); /*div 1*/
  845. hal_delay_us(clock_delay);
  846. }
  847. ////////////////////////////////////////////////////////////////////////////////
  848. // EOF
  849. ////////////////////////////////////////////////////////////////////////////////