drv_pinmux.h 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520
  1. /*
  2. * Copyright (c) 2006-2024, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2024/05/24 unicornx first version
  9. */
  10. #ifndef __DRV_PINMUX_H__
  11. #define __DRV_PINMUX_H__
  12. /**
  13. * @brief Function Selection Type
  14. */
  15. typedef enum _fs_type
  16. {
  17. fs_none = 0,
  18. ADC1,
  19. ADC2,
  20. ADC3,
  21. AUX0,
  22. AUX1,
  23. AUX2,
  24. CAM_HS0,
  25. CAM_MCLK0,
  26. CAM_MCLK1,
  27. CAM_PD0,
  28. CAM_PD1,
  29. CAM_RST0,
  30. CAM_VS0,
  31. CLK25M,
  32. CLK32K,
  33. CR_4WTDI,
  34. CR_4WTDO,
  35. CV_SCL0,
  36. CV_SDA0,
  37. DBG_0,
  38. DBG_1,
  39. DBG_2,
  40. DBG_3,
  41. DBG_4,
  42. DBG_5,
  43. DBG_6,
  44. DBG_7,
  45. DBG_8,
  46. DBG_9,
  47. DBG_10,
  48. DBG_11,
  49. DBG_12,
  50. DBG_13,
  51. DBG_14,
  52. DBG_15,
  53. DBG_16,
  54. DBG_18,
  55. DBG_19,
  56. EMMC_CLK,
  57. EMMC_CMD,
  58. EMMC_DAT0,
  59. EMMC_DAT1,
  60. EMMC_DAT2,
  61. EMMC_DAT3,
  62. EMMC_DAT_0,
  63. EMMC_DAT_1,
  64. EMMC_DAT_2,
  65. EMMC_DAT_3,
  66. EMMC_RSTN,
  67. EPHY_LNK_LED,
  68. EPHY_SPD_LED,
  69. GPIO_RTX,
  70. GPIO_ZQ,
  71. IIC0_SCL,
  72. IIC0_SDA,
  73. IIC1_SCL,
  74. IIC1_SDA,
  75. IIC2_SCL,
  76. IIC2_SDA,
  77. IIC3_SCL,
  78. IIC3_SDA,
  79. IIC4_SCL,
  80. IIC4_SDA,
  81. IIS1_BCLK,
  82. IIS1_DI,
  83. IIS1_DO,
  84. IIS1_LRCK,
  85. IIS1_MCLK,
  86. IIS2_BCLK,
  87. IIS2_DI,
  88. IIS2_DO,
  89. IIS2_LRCK,
  90. IIS2_MCLK,
  91. JTAG_TCK,
  92. JTAG_TDI,
  93. JTAG_TDO,
  94. JTAG_TMS,
  95. JTAG_CPU_TCK,
  96. JTAG_CPU_TMS,
  97. JTAG_CPU_TRST,
  98. KEY_COL0,
  99. KEY_COL1,
  100. KEY_COL2,
  101. KEY_COL3,
  102. KEY_ROW0,
  103. KEY_ROW1,
  104. KEY_ROW2,
  105. KEY_ROW3,
  106. MUX_SPI1_CS,
  107. MUX_SPI1_MISO,
  108. MUX_SPI1_MOSI,
  109. MUX_SPI1_SCK,
  110. PAD_AUD_AINL_MIC,
  111. PAD_AUD_AINR_MIC,
  112. PAD_AUD_AOUTL,
  113. PAD_AUD_AOUTR,
  114. PAD_ETH_RXM,
  115. PAD_ETH_RXP,
  116. PAD_ETH_TXM,
  117. PAD_ETH_TXP,
  118. PAD_MIPIRX0N,
  119. PAD_MIPIRX0P,
  120. PAD_MIPIRX1N,
  121. PAD_MIPIRX1P,
  122. PAD_MIPIRX2N,
  123. PAD_MIPIRX2P,
  124. PAD_MIPIRX3N,
  125. PAD_MIPIRX3P,
  126. PAD_MIPIRX4N,
  127. PAD_MIPIRX4P,
  128. PAD_MIPIRX5N,
  129. PAD_MIPIRX5P,
  130. PAD_MIPI_TXM0,
  131. PAD_MIPI_TXM1,
  132. PAD_MIPI_TXM2,
  133. PAD_MIPI_TXM3,
  134. PAD_MIPI_TXM4,
  135. PAD_MIPI_TXP0,
  136. PAD_MIPI_TXP1,
  137. PAD_MIPI_TXP2,
  138. PAD_MIPI_TXP3,
  139. PAD_MIPI_TXP4,
  140. PKG_TYPE0,
  141. PKG_TYPE1,
  142. PKG_TYPE2,
  143. PTEST,
  144. PWM0_BUCK,
  145. PWM_0,
  146. PWM_1,
  147. PWM_2,
  148. PWM_3,
  149. PWM_4,
  150. PWM_5,
  151. PWM_6,
  152. PWM_7,
  153. PWM_8,
  154. PWM_9,
  155. PWM_10,
  156. PWM_11,
  157. PWM_12,
  158. PWM_13,
  159. PWM_14,
  160. PWM_15,
  161. PWR_BUTTON1,
  162. PWR_GPIO0,
  163. PWR_GPIO1,
  164. PWR_GPIO2,
  165. PWR_GPIO_0,
  166. PWR_GPIO_1,
  167. PWR_GPIO_2,
  168. PWR_GPIO_3,
  169. PWR_GPIO_4,
  170. PWR_GPIO_5,
  171. PWR_GPIO_6,
  172. PWR_GPIO_7,
  173. PWR_GPIO_8,
  174. PWR_GPIO_9,
  175. PWR_GPIO_10,
  176. PWR_GPIO_11,
  177. PWR_GPIO_12,
  178. PWR_GPIO_13,
  179. PWR_GPIO_14,
  180. PWR_GPIO_15,
  181. PWR_GPIO_16,
  182. PWR_GPIO_17,
  183. PWR_GPIO_18,
  184. PWR_GPIO_19,
  185. PWR_GPIO_20,
  186. PWR_GPIO_21,
  187. PWR_GPIO_22,
  188. PWR_GPIO_23,
  189. PWR_GPIO_24,
  190. PWR_GPIO_25,
  191. PWR_GPIO_26,
  192. PWR_IIC_SCL,
  193. PWR_IIC_SDA,
  194. PWR_IR0,
  195. PWR_IR1,
  196. PWR_MCU_JTAG_TCK,
  197. PWR_MCU_JTAG_TDI,
  198. PWR_MCU_JTAG_TDO,
  199. PWR_MCU_JTAG_TMS,
  200. PWR_ON,
  201. PWR_PTEST,
  202. PWR_RSTN,
  203. PWR_SD1_CLK_VO37,
  204. PWR_SD1_CMD_VO36,
  205. PWR_SD1_D0_VO35,
  206. PWR_SD1_D1_VO34,
  207. PWR_SD1_D2_VO33,
  208. PWR_SD1_D3_VO32,
  209. PWR_SD1_CLK,
  210. PWR_SD1_CMD,
  211. PWR_SD1_D0,
  212. PWR_SD1_D1,
  213. PWR_SD1_D2,
  214. PWR_SD1_D3,
  215. PWR_SECTICK,
  216. PWR_SEQ1,
  217. PWR_SEQ2,
  218. PWR_SEQ3,
  219. PWR_SPINOR1_CS_X,
  220. PWR_SPINOR1_HOLD_X,
  221. PWR_SPINOR1_MISO,
  222. PWR_SPINOR1_MOSI,
  223. PWR_SPINOR1_SCK,
  224. PWR_SPINOR1_WP_X,
  225. PWR_UART0_RX,
  226. PWR_UART0_TX,
  227. PWR_UART1_RX,
  228. PWR_UART1_TX,
  229. PWR_VBAT_DET,
  230. PWR_WAKEUP0,
  231. PWR_WAKEUP1,
  232. PWR_XTAL_CLKIN,
  233. RMII0_IRQ,
  234. RMII0_MDC,
  235. RMII0_MDIO,
  236. RMII0_REFCLKI,
  237. RMII0_RXD0,
  238. RMII0_RXD1,
  239. RMII0_RXDV,
  240. RMII0_TXCLK,
  241. RMII0_TXD0,
  242. RMII0_TXD1,
  243. RMII0_TXEN,
  244. RSTN,
  245. SD0_CD,
  246. SD0_CLK,
  247. SD0_CMD,
  248. SD0_D0,
  249. SD0_D1,
  250. SD0_D2,
  251. SD0_D3,
  252. SD0_PWR_EN,
  253. SD1_CLK,
  254. SD1_CMD,
  255. SD1_D0,
  256. SD1_D1,
  257. SD1_D2,
  258. SD1_D3,
  259. SD1_GPIO0,
  260. SD1_GPIO1,
  261. SDIO0_CD,
  262. SDIO0_CLK,
  263. SDIO0_CMD,
  264. SDIO0_D_0,
  265. SDIO0_D_1,
  266. SDIO0_D_2,
  267. SDIO0_D_3,
  268. SDIO0_PWR_EN,
  269. SPI0_CS_X,
  270. SPI0_SCK,
  271. SPI0_SDI,
  272. SPI0_SDO,
  273. SPI1_CS_X,
  274. SPI1_SCK,
  275. SPI1_SDI,
  276. SPI1_SDO,
  277. SPI2_CS_X,
  278. SPI2_SCK,
  279. SPI2_SDI,
  280. SPI2_SDO,
  281. SPI3_CS_X,
  282. SPI3_SCK,
  283. SPI3_SDI,
  284. SPI3_SDO,
  285. SPINAND_CLK,
  286. SPINAND_CS,
  287. SPINAND_HOLD,
  288. SPINAND_MISO,
  289. SPINAND_MOSI,
  290. SPINAND_WP,
  291. SPINOR_CS_X,
  292. SPINOR_HOLD_X,
  293. SPINOR_MISO,
  294. SPINOR_MOSI,
  295. SPINOR_SCK,
  296. SPINOR_WP_X,
  297. SPK_EN,
  298. UART0_RX,
  299. UART0_TX,
  300. UART1_CTS,
  301. UART1_RTS,
  302. UART1_RX,
  303. UART1_TX,
  304. UART2_CTS,
  305. UART2_RTS,
  306. UART2_RX,
  307. UART2_TX,
  308. UART3_CTS,
  309. UART3_RTS,
  310. UART3_RX,
  311. UART3_TX,
  312. UART4_CTS,
  313. UART4_RTS,
  314. UART4_RX,
  315. UART4_TX,
  316. USB_ID,
  317. USB_VBUS_DET,
  318. USB_VBUS_EN,
  319. VI0_CLK,
  320. VI0_D_0,
  321. VI0_D_1,
  322. VI0_D_2,
  323. VI0_D_3,
  324. VI0_D_4,
  325. VI0_D_5,
  326. VI0_D_6,
  327. VI0_D_7,
  328. VI0_D_8,
  329. VI0_D_9,
  330. VI0_D_10,
  331. VI0_D_11,
  332. VI0_D_12,
  333. VI0_D_13,
  334. VI0_D_14,
  335. VI0_D_15,
  336. VI1_CLK,
  337. VI1_D_0,
  338. VI1_D_1,
  339. VI1_D_2,
  340. VI1_D_3,
  341. VI1_D_4,
  342. VI1_D_5,
  343. VI1_D_6,
  344. VI1_D_7,
  345. VI1_D_8,
  346. VI1_D_9,
  347. VI1_D_10,
  348. VI1_D_11,
  349. VI1_D_12,
  350. VI1_D_13,
  351. VI1_D_14,
  352. VI1_D_15,
  353. VI1_D_16,
  354. VI1_D_17,
  355. VI1_D_18,
  356. VI2_CLK,
  357. VI2_D_0,
  358. VI2_D_1,
  359. VI2_D_2,
  360. VI2_D_3,
  361. VI2_D_4,
  362. VI2_D_5,
  363. VI2_D_6,
  364. VI2_D_7,
  365. VIVO_CLK,
  366. VIVO_D0,
  367. VIVO_D1,
  368. VIVO_D2,
  369. VIVO_D3,
  370. VIVO_D4,
  371. VIVO_D5,
  372. VIVO_D6,
  373. VIVO_D7,
  374. VIVO_D8,
  375. VIVO_D9,
  376. VIVO_D10,
  377. VO_CLK0,
  378. VO_CLK1,
  379. VO_D_0,
  380. VO_D_1,
  381. VO_D_2,
  382. VO_D_3,
  383. VO_D_4,
  384. VO_D_5,
  385. VO_D_6,
  386. VO_D_7,
  387. VO_D_8,
  388. VO_D_9,
  389. VO_D_10,
  390. VO_D_11,
  391. VO_D_12,
  392. VO_D_13,
  393. VO_D_14,
  394. VO_D_15,
  395. VO_D_16,
  396. VO_D_17,
  397. VO_D_18,
  398. VO_D_19,
  399. VO_D_20,
  400. VO_D_21,
  401. VO_D_22,
  402. VO_D_23,
  403. VO_D_24,
  404. VO_D_25,
  405. VO_D_26,
  406. VO_D_27,
  407. VO_D_28,
  408. VO_D_29,
  409. VO_D_30,
  410. VO_D_31,
  411. WG0_D0,
  412. WG0_D1,
  413. WG1_D0,
  414. WG1_D1,
  415. WG2_D0,
  416. WG2_D1,
  417. XGPIOA_0,
  418. XGPIOA_1,
  419. XGPIOA_2,
  420. XGPIOA_3,
  421. XGPIOA_4,
  422. XGPIOA_5,
  423. XGPIOA_6,
  424. XGPIOA_7,
  425. XGPIOA_8,
  426. XGPIOA_9,
  427. XGPIOA_10,
  428. XGPIOA_11,
  429. XGPIOA_12,
  430. XGPIOA_13,
  431. XGPIOA_14,
  432. XGPIOA_15,
  433. XGPIOA_16,
  434. XGPIOA_17,
  435. XGPIOA_18,
  436. XGPIOA_19,
  437. XGPIOA_20,
  438. XGPIOA_21,
  439. XGPIOA_22,
  440. XGPIOA_23,
  441. XGPIOA_24,
  442. XGPIOA_25,
  443. XGPIOA_26,
  444. XGPIOA_27,
  445. XGPIOA_28,
  446. XGPIOA_29,
  447. XGPIOA_30,
  448. XGPIOB_0,
  449. XGPIOB_1,
  450. XGPIOB_2,
  451. XGPIOB_3,
  452. XGPIOB_4,
  453. XGPIOB_5,
  454. XGPIOB_6,
  455. XGPIOB_7,
  456. XGPIOB_8,
  457. XGPIOB_9,
  458. XGPIOB_10,
  459. XGPIOB_11,
  460. XGPIOB_12,
  461. XGPIOB_13,
  462. XGPIOB_14,
  463. XGPIOB_15,
  464. XGPIOB_16,
  465. XGPIOB_17,
  466. XGPIOB_18,
  467. XGPIOB_19,
  468. XGPIOB_20,
  469. XGPIOB_21,
  470. XGPIOB_22,
  471. XGPIOB_23,
  472. XGPIOB_24,
  473. XGPIOB_25,
  474. XGPIOB_26,
  475. XGPIOB_27,
  476. XGPIOC_0,
  477. XGPIOC_1,
  478. XGPIOC_2,
  479. XGPIOC_3,
  480. XGPIOC_4,
  481. XGPIOC_5,
  482. XGPIOC_6,
  483. XGPIOC_7,
  484. XGPIOC_8,
  485. XGPIOC_9,
  486. XGPIOC_10,
  487. XGPIOC_11,
  488. XGPIOC_12,
  489. XGPIOC_13,
  490. XGPIOC_14,
  491. XGPIOC_15,
  492. XGPIOC_16,
  493. XGPIOC_17,
  494. XGPIOC_18,
  495. XGPIOC_19,
  496. XGPIOC_20,
  497. XGPIOC_21,
  498. XGPIOC_22,
  499. XGPIOC_23,
  500. XGPIOC_24,
  501. XGPIOC_25,
  502. XTAL_XIN,
  503. } fs_type;
  504. /**
  505. * @brief configure pin multiplex
  506. *
  507. * @param pin_name pin name string
  508. * @param func_type function type enum
  509. * @param whitelist pin name whilelist which is allowed to set. Ignore check
  510. * if NULL.
  511. * NOTE: whitelist should be a string list ended with NULL.
  512. *
  513. * @return RT_EOK if succeeded
  514. * else: something wrong occurred and config is abandoned.
  515. */
  516. extern int pinmux_config(const char *pin_name, fs_type func_type, const char *whitelist[]);
  517. #endif