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