iot_gpio_ex.h 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. /*
  2. * Copyright (c) 2020 Huawei Device Co., Ltd.
  3. * Licensed under the Apache License, Version 2.0 (the "License");
  4. * you may not use this file except in compliance with the License.
  5. * You may obtain a copy of the License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software
  10. * distributed under the License is distributed on an "AS IS" BASIS,
  11. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. * See the License for the specific language governing permissions and
  13. * limitations under the License.
  14. */
  15. /**
  16. * @file iot_gpio_ex.h
  17. *
  18. * @brief Declares the extended GPIO interface functions.
  19. *
  20. * These functions are used for settings GPIO pulls and driver strength. \n
  21. *
  22. * @since 1.0
  23. * @version 1.0
  24. */
  25. #ifndef IOT_GPIO_EX_H
  26. #define IOT_GPIO_EX_H
  27. /**
  28. * @brief Enumerates the functions of GPIO hardware pin 0.
  29. */
  30. typedef enum {
  31. /** GPIO0 function */
  32. IOT_GPIO_FUNC_GPIO_0_GPIO,
  33. /** Functions of UART1 TXD */
  34. IOT_GPIO_FUNC_GPIO_0_UART1_TXD = 2,
  35. /** SPI1 CK function */
  36. IOT_GPIO_FUNC_GPIO_0_SPI1_CK,
  37. /** Functions of JTAG TD0 */
  38. IOT_GPIO_FUNC_GPIO_0_JTAG_TDO,
  39. /** PWM3 OUT function */
  40. IOT_GPIO_FUNC_GPIO_0_PWM3_OUT,
  41. /** I2C1 SDA function */
  42. IOT_GPIO_FUNC_GPIO_0_I2C1_SDA,
  43. } WifiIotIoFuncGpio0;
  44. /**
  45. * @brief Enumerates the functions of GPIO hardware pin 1.
  46. */
  47. typedef enum {
  48. /** GPIO1 function */
  49. IOT_GPIO_FUNC_GPIO_1_GPIO,
  50. /** UART1 RXD function */
  51. IOT_GPIO_FUNC_GPIO_1_UART1_RXD = 2,
  52. /** SPI1 RXD function */
  53. IOT_GPIO_FUNC_GPIO_1_SPI1_RXD,
  54. /** JTAG TCKfunction */
  55. IOT_GPIO_FUNC_GPIO_1_JTAG_TCK,
  56. /** PWM4 OUT function */
  57. IOT_GPIO_FUNC_GPIO_1_PWM4_OUT,
  58. /** I2C1 SCL function */
  59. IOT_GPIO_FUNC_GPIO_1_I2C1_SCL,
  60. /** BT FREQ function */
  61. IOT_GPIO_FUNC_GPIO_1_BT_FREQ,
  62. } WifiiIotIoFuncGpio1;
  63. /**
  64. * @brief Enumerates the functions of GPIO hardware pin 2.
  65. */
  66. typedef enum {
  67. /** GPIO2 function */
  68. IOT_GPIO_FUNC_GPIO_2_GPIO,
  69. /** UART1 RTS function */
  70. IOT_GPIO_FUNC_GPIO_2_UART1_RTS_N = 2,
  71. /** SPI1 TXD function */
  72. IOT_GPIO_FUNC_GPIO_2_SPI1_TXD,
  73. /** JTAG TRSTN function */
  74. IOT_GPIO_FUNC_GPIO_2_JTAG_TRSTN,
  75. /** PWM2 OUT function */
  76. IOT_GPIO_FUNC_GPIO_2_PWM2_OUT,
  77. /** SSI CLK function */
  78. IOT_GPIO_FUNC_GPIO_2_SSI_CLK = 7,
  79. } WifiIotIoFuncGpio2;
  80. /**
  81. * @brief Enumerates the functions of GPIO hardware pin 3.
  82. */
  83. typedef enum {
  84. /** GPIO3 function */
  85. IOT_GPIO_FUNC_GPIO_3_GPIO,
  86. /** UART0 TXD function */
  87. IOT_GPIO_FUNC_GPIO_3_UART0_TXD,
  88. /** UART1 CTS function */
  89. IOT_GPIO_FUNC_GPIO_3_UART1_CTS_N,
  90. /** SPI CSN function */
  91. IOT_GPIO_FUNC_GPIO_3_SPI1_CSN,
  92. /** JTAG TDI function */
  93. IOT_GPIO_FUNC_GPIO_3_JTAG_TDI,
  94. /** PWM5 OUT function */
  95. IOT_GPIO_FUNC_GPIO_3_PWM5_OUT,
  96. /** I2C1 SDA function */
  97. IOT_GPIO_FUNC_GPIO_3_I2C1_SDA,
  98. /** SSI DATA function */
  99. IOT_GPIO_FUNC_GPIO_3_SSI_DATA,
  100. } WifiIotIoFuncGpio3;
  101. /**
  102. * @brief Enumerates the functions of GPIO hardware pin 4.
  103. */
  104. typedef enum {
  105. /** GPIO4 function */
  106. IOT_GPIO_FUNC_GPIO_4_GPIO,
  107. /** UART0 RXD function */
  108. IOT_GPIO_FUNC_GPIO_4_UART0_RXD = 2,
  109. /** JTAG TMS function */
  110. IOT_GPIO_FUNC_GPIO_4_JTAG_TMS = 4,
  111. /** PWM1 OUT function */
  112. IOT_GPIO_FUNC_GPIO_4_PWM1_OUT,
  113. /** I2C1 SCL function */
  114. IOT_GPIO_FUNC_GPIO_4_I2C1_SCL,
  115. } WifiIotIoFuncGpio4;
  116. /**
  117. * @brief Enumerates the functions of GPIO hardware pin 5.
  118. */
  119. typedef enum {
  120. /** GPIO5 function */
  121. IOT_GPIO_FUNC_GPIO_5_GPIO,
  122. /** UART1 RXD function */
  123. IOT_GPIO_FUNC_GPIO_5_UART1_RXD = 2,
  124. /** SPI0 CSN function */
  125. IOT_GPIO_FUNC_GPIO_5_SPI0_CSN,
  126. /** PWM2 OUT function */
  127. IOT_GPIO_FUNC_GPIO_5_PWM2_OUT = 5,
  128. /** I2C0 MCLK function */
  129. IOT_GPIO_FUNC_GPIO_5_I2S0_MCLK,
  130. /** BT STATUS function */
  131. IOT_GPIO_FUNC_GPIO_5_BT_STATUS,
  132. } WifiIotIoFuncGpio5;
  133. /**
  134. * @brief Enumerates the functions of GPIO hardware pin 6.
  135. */
  136. typedef enum {
  137. /** GPIO6 function */
  138. IOT_GPIO_FUNC_GPIO_6_GPIO,
  139. /** UART1 TXD function */
  140. IOT_GPIO_FUNC_GPIO_6_UART1_TXD = 2,
  141. /** SPI0 CK function */
  142. IOT_GPIO_FUNC_GPIO_6_SPI0_CK,
  143. /** PWM3 OUT function */
  144. IOT_GPIO_FUNC_GPIO_6_PWM3_OUT = 5,
  145. /** I2S0 TX function */
  146. IOT_GPIO_FUNC_GPIO_6_I2S0_TX,
  147. /** COEX switch function */
  148. IOT_GPIO_FUNC_GPIO_6_COEX_SWITCH,
  149. } WifiIotIoFuncGpio6;
  150. /**
  151. * @brief Enumerates the functions of GPIO hardware pin 7.
  152. */
  153. typedef enum {
  154. /** GPIO7 function */
  155. IOT_GPIO_FUNC_GPIO_7_GPIO,
  156. /** UART1 CTS function */
  157. IOT_GPIO_FUNC_GPIO_7_UART1_CTS_N = 2,
  158. /** SPI0 RXD function */
  159. IOT_GPIO_FUNC_GPIO_7_SPI0_RXD,
  160. /** PWM0 OUT function */
  161. IOT_GPIO_FUNC_GPIO_7_PWM0_OUT = 5,
  162. /** I2S0 BCLK function */
  163. IOT_GPIO_FUNC_GPIO_7_I2S0_BCLK,
  164. /** BT ACTIVE function */
  165. IOT_GPIO_FUNC_GPIO_7_BT_ACTIVE,
  166. } WifiIotIoFuncGpio7;
  167. /**
  168. * @brief Enumerates the functions of GPIO hardware pin 8.
  169. */
  170. typedef enum {
  171. /** GPIO8 function */
  172. IOT_GPIO_FUNC_GPIO_8_GPIO,
  173. /** UART1 RTS function */
  174. IOT_GPIO_FUNC_GPIO_8_UART1_RTS_N = 2,
  175. /** SPI0 TXD function */
  176. IOT_GPIO_FUNC_GPIO_8_SPI0_TXD,
  177. /** PWM1 OUT function */
  178. IOT_GPIO_FUNC_GPIO_8_PWM1_OUT = 5,
  179. /** I2S0 WS function */
  180. IOT_GPIO_FUNC_GPIO_8_I2S0_WS,
  181. /** WLAN ACTIVE function */
  182. IOT_GPIO_FUNC_GPIO_8_WLAN_ACTIVE,
  183. } WifiIotIoFuncGpio8;
  184. /**
  185. * @brief Enumerates the functions of GPIO hardware pin 9.
  186. */
  187. typedef enum {
  188. /** GPIO9 function */
  189. IOT_GPIO_FUNC_GPIO_9_GPIO,
  190. /** I2C0 SCL function */
  191. IOT_GPIO_FUNC_GPIO_9_I2C0_SCL,
  192. /** UART2 RTS function */
  193. IOT_GPIO_FUNC_GPIO_9_UART2_RTS_N,
  194. /** SDIO D2 function */
  195. IOT_GPIO_FUNC_GPIO_9_SDIO_D2,
  196. /** SPI0 TXD function */
  197. IOT_GPIO_FUNC_GPIO_9_SPI0_TXD,
  198. /** PWM0 OUT function */
  199. IOT_GPIO_FUNC_GPIO_9_PWM0_OUT,
  200. /** I2S0 MCLK function */
  201. IOT_GPIO_FUNC_GPIO_9_I2S0_MCLK = 7,
  202. } WifiIotIoFuncGpio9;
  203. /**
  204. * @brief Enumerates the functions of GPIO hardware pin 10.
  205. */
  206. typedef enum {
  207. /** GPIO10 function */
  208. IOT_GPIO_FUNC_GPIO_10_GPIO,
  209. /** I2C0 SDA function */
  210. IOT_GPIO_FUNC_GPIO_10_I2C0_SDA,
  211. /** UART2 CTS function */
  212. IOT_GPIO_FUNC_GPIO_10_UART2_CTS_N,
  213. /** SDIO D3 function */
  214. IOT_GPIO_FUNC_GPIO_10_SDIO_D3,
  215. /** SPI0 CK function */
  216. IOT_GPIO_FUNC_GPIO_10_SPI0_CK,
  217. /** PWM1 OUT function */
  218. IOT_GPIO_FUNC_GPIO_10_PWM1_OUT,
  219. /** I2S0 TX function */
  220. IOT_GPIO_FUNC_GPIO_10_I2S0_TX = 7,
  221. } WifiIotIoFuncGpio10;
  222. /**
  223. * @brief Enumerates the functions of GPIO hardware pin 11.
  224. */
  225. typedef enum {
  226. /** GPIO11 function */
  227. IOT_GPIO_FUNC_GPIO_11_GPIO,
  228. /** UART2 TXD function */
  229. IOT_GPIO_FUNC_GPIO_11_UART2_TXD = 2,
  230. /** SDIO CMD function */
  231. IOT_GPIO_FUNC_GPIO_11_SDIO_CMD,
  232. /** SDIO RXD function */
  233. IOT_GPIO_FUNC_GPIO_11_SPI0_RXD,
  234. /** PWM2 OUT function */
  235. IOT_GPIO_FUNC_GPIO_11_PWM2_OUT,
  236. /** RF TX_EN_EXT function */
  237. IOT_GPIO_FUNC_GPIO_11_RF_TX_EN_EXT,
  238. /** I2S0 RX function */
  239. IOT_GPIO_FUNC_GPIO_11_I2S0_RX,
  240. } WifiIotIoFuncGpio11;
  241. /**
  242. * @brief Enumerates the functions of GPIO hardware pin 12.
  243. */
  244. typedef enum {
  245. /** GPIO12 function */
  246. IOT_GPIO_FUNC_GPIO_12_GPIO,
  247. /** SUART2 RXD function */
  248. IOT_GPIO_FUNC_GPIO_12_UART2_RXD = 2,
  249. /** SDIO CLK function */
  250. IOT_GPIO_FUNC_GPIO_12_SDIO_CLK,
  251. /** SDIO CSN function */
  252. IOT_GPIO_FUNC_GPIO_12_SPI0_CSN,
  253. /** PWM3 OUT function */
  254. IOT_GPIO_FUNC_GPIO_12_PWM3_OUT,
  255. /** RF RX_EN_EXT function */
  256. IOT_GPIO_FUNC_GPIO_12_RF_RX_EN_EXT,
  257. /** I2S0 BCLK function */
  258. IOT_GPIO_FUNC_GPIO_12_I2S0_BCLK,
  259. } WifiIotIoFuncGpio12;
  260. /**
  261. * @brief Enumerates the functions of GPIO hardware pin 13.
  262. */
  263. typedef enum {
  264. /** SSI DATA function */
  265. IOT_GPIO_FUNC_GPIO_13_SSI_DATA,
  266. /** UART0 TXD function */
  267. IOT_GPIO_FUNC_GPIO_13_UART0_TXD,
  268. /** UART2 RTS function */
  269. IOT_GPIO_FUNC_GPIO_13_UART2_RTS_N,
  270. /** SDIO D0 function */
  271. IOT_GPIO_FUNC_GPIO_13_SDIO_D0,
  272. /** GPIO13 function */
  273. IOT_GPIO_FUNC_GPIO_13_GPIO,
  274. /** PWM4 OUT function */
  275. IOT_GPIO_FUNC_GPIO_13_PWM4_OUT,
  276. /** I2C0 SDA function */
  277. IOT_GPIO_FUNC_GPIO_13_I2C0_SDA,
  278. /** I2S0 WS function */
  279. IOT_GPIO_FUNC_GPIO_13_I2S0_WS,
  280. } WifiIotIoFuncGpio13;
  281. /**
  282. * @brief Enumerates the functions of GPIO hardware pin 14.
  283. */
  284. typedef enum {
  285. /** SSI CLK function */
  286. IOT_GPIO_FUNC_GPIO_14_SSI_CLK,
  287. /** UART0 RXD function */
  288. IOT_GPIO_FUNC_GPIO_14_UART0_RXD,
  289. /** UART2 CTS function */
  290. IOT_GPIO_FUNC_GPIO_14_UART2_CTS_N,
  291. /** SDIO D1 function */
  292. IOT_GPIO_FUNC_GPIO_14_SDIO_D1,
  293. /** GPIO14 function */
  294. IOT_GPIO_FUNC_GPIO_14_GPIO,
  295. /** PWM5 OUT function */
  296. IOT_GPIO_FUNC_GPIO_14_PWM5_OUT,
  297. /** I2C0 SCL function */
  298. IOT_GPIO_FUNC_GPIO_14_I2C0_SCL,
  299. } WifiIotIoFuncGpio14;
  300. /**
  301. * @brief Enumerates GPIO pull-up or pull-down settings.
  302. */
  303. typedef enum {
  304. /** No pull */
  305. IOT_GPIO_PULL_NONE,
  306. /** Pull-up */
  307. IOT_GPIO_PULL_UP,
  308. /** Pull-down */
  309. IOT_GPIO_PULL_DOWN,
  310. /** Maximum value */
  311. IOT_GPIO_PULL_MAX,
  312. } IotGpioPull;
  313. unsigned int IoTGpioSetFunc(unsigned int id, unsigned char val);
  314. unsigned int IoTGpioSetPull(unsigned int id, IotGpioPull val);
  315. #endif
  316. /** @} */