1 /*
2  * Copyright (c) 2020-2020, BLUETRUM Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef AB32VG1_HAL_GPIO_EX_H__
8 #define AB32VG1_HAL_GPIO_EX_H__
9 
10 /* Alternate function */
11 #define GPIO_AF_MAP_Gx(AF, Gx)  ((uint32_t)((Gx) << (AF)))
12 #define GPIO_AF_MAP_CLR(AF)     ((uint32_t)(0xfu << (AF)))
13 
14 #define GPIO_AF_G1              (1u)
15 #define GPIO_AF_G2              (2u)
16 #define GPIO_AF_G3              (3u)
17 #define GPIO_AF_G4              (4u)
18 #define GPIO_AF_G5              (5u)
19 #define GPIO_AF_G6              (6u)
20 #define GPIO_AF_G7              (7u)
21 
22 /**
23  * UART0:
24  * G1: tx:PA7 rx:PA6
25  * G2: tx:PB2 rx:PB1
26  * G3: tx:PB3 rx:PB4
27  * G4: tx:PE7 rx:PE6
28  * G5: tx:PA1 rx:PA0
29  * G6: tx:PE0 rx:PE1
30  * G7: tx:PF2 rx:map to tx
31  *
32  * UART1:
33  * G1: tx:PA7 rx:PA6
34  * G2: tx:PA4 rx:PA3
35  * G3: tx:PF2 rx:map to tx
36  *
37  * UART2:
38  * G1: tx:PE3 rx:PE2
39  * G2: tx:PB2 rx:PB1
40  */
41 
42 #define UT2RXMAP_AF             (8u)
43 #define UT2TXMAP_AF             (4u)
44 
45 #define UT1RXMAP_AF             (28u)
46 #define UT1TXMAP_AF             (24u)
47 #define HSUTRXMAP_AF            (20u)
48 #define HSUTTXMAP_AF            (16u)
49 #define UT0RXMAP_AF             (12u)
50 #define UT0TXMAP_AF             ( 8u)
51 #define SPI0MAP_AF              ( 4u)
52 #define SD0MAP_AF               ( 0u)
53 
54 #define UT1RXMAP_TX             ((uint32_t)(0x3u << (UT1RXMAP_AF)))
55 #define UT0RXMAP_TX             ((uint32_t)(0x7u << (UT0RXMAP_AF)))
56 
57 /**
58  * LPWM3:
59  * G1: PE7
60  * G2: PF2
61  * G3: PA3
62  *
63  * LPWM2:
64  * G1: PE6
65  * G2: PE0
66  * G3: PA2
67  *
68  * LPWM1:
69  * G1: PE5
70  * G2: PB4
71  * G3: PA1
72  *
73  * LPWM0:
74  * G1: PE4
75  * G2: PB3
76  * G3: PA0
77  */
78 #define LPWM3MAP_AF             (28u)
79 #define LPWM2MAP_AF             (24u)
80 #define LPWM1MAP_AF             (20u)
81 #define LPWM0MAP_AF             (16u)
82 
83 /**
84  * TMR5:
85  * G1: PE1 PE2 PE3
86  *
87  * TMR4:
88  * G1: PA5 PA6 PA7
89  *
90  * TMR3:
91  * G1: PB0 PB1 PB2
92  */
93 #define TMR5MAP_AF              (16u)
94 #define TMR4MAP_AF              (12u)
95 #define TMR3MAP_AF              ( 8u)
96 
97 #endif
98