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