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  * 2022-07-08     Rbb666       first version
9  * 2025-04-21     Hydevcode    adapt xmc7100d
10  */
11 
12 #ifndef __UART_CONFIG_H__
13 #define __UART_CONFIG_H__
14 
15 #include <rtthread.h>
16 #include "board.h"
17 
18 #ifdef __cplusplus
19 extern "C"
20 {
21 #endif
22 
23 #if defined(SOC_SERIES_IFX_XMC)
24 #if defined(UART_CPU_IRQ_Number)
25 #if (UART_CPU_IRQ_Number == 0)
26     #define UART_NvicMuxN_IRQn NvicMux0_IRQn
27 #elif(UART_CPU_IRQ_Number == 1)
28     #define UART_NvicMuxN_IRQn NvicMux1_IRQn
29 #elif (UART_CPU_IRQ_Number == 2)
30     #define UART_NvicMuxN_IRQn NvicMux2_IRQn
31 #elif (UART_CPU_IRQ_Number == 3)
32     #define UART_NvicMuxN_IRQn NvicMux3_IRQn
33 #elif (UART_CPU_IRQ_Number == 4)
34     #define UART_NvicMuxN_IRQn NvicMux4_IRQn
35 #elif (UART_CPU_IRQ_Number == 5)
36     #define UART_NvicMuxN_IRQn NvicMux5_IRQn
37 #elif (UART_CPU_IRQ_Number == 6)
38     #define UART_NvicMuxN_IRQn NvicMux6_IRQn
39 #elif (UART_CPU_IRQ_Number == 7)
40     #define UART_NvicMuxN_IRQn NvicMux7_IRQn
41 #endif
42 #endif
43 #endif
44 
45 #ifdef BSP_USING_UART0
46     /* UART0 device driver structure */
47     cy_stc_sysint_t UART0_SCB_IRQ_cfg =
48         {
49 #if defined(SOC_SERIES_IFX_XMC)
50             .intrSrc = ((UART_NvicMuxN_IRQn << 16) | (cy_en_intr_t)scb_0_interrupt_IRQn),
51 #else
52             .intrSrc = (IRQn_Type)scb_0_interrupt_IRQn,
53 #endif
54             .intrPriority = (7u),
55     };
56 #endif
57 #ifdef BSP_USING_UART1
58     /* UART1 device driver structure */
59     cy_stc_sysint_t UART1_SCB_IRQ_cfg =
60         {
61 #if defined(SOC_SERIES_IFX_XMC)
62             .intrSrc = ((UART_NvicMuxN_IRQn << 16) | (cy_en_intr_t)scb_1_interrupt_IRQn),
63 #else
64             .intrSrc = (IRQn_Type)scb_1_interrupt_IRQn,
65 #endif
66             .intrPriority = (7u),
67     };
68 #endif
69 #ifdef BSP_USING_UART2
70     /* UART2 device driver structure */
71     cy_stc_sysint_t UART2_SCB_IRQ_cfg =
72         {
73 #if defined(SOC_SERIES_IFX_XMC)
74             .intrSrc = ((UART_NvicMuxN_IRQn << 16) | (cy_en_intr_t)scb_2_interrupt_IRQn),
75 #else
76             .intrSrc = (IRQn_Type)scb_2_interrupt_IRQn,
77 #endif
78             .intrPriority = (7u),
79     };
80 #endif
81 #ifdef BSP_USING_UART3
82     /* UART3 device driver structure */
83     cy_stc_sysint_t UART3_SCB_IRQ_cfg =
84         {
85 #if defined(SOC_SERIES_IFX_XMC)
86             .intrSrc = ((UART_NvicMuxN_IRQn << 16) | (cy_en_intr_t)scb_3_interrupt_IRQn),
87 #else
88             .intrSrc = (IRQn_Type)scb_3_interrupt_IRQn,
89 #endif
90             .intrPriority = (7u),
91     };
92 #endif
93 #ifdef BSP_USING_UART4
94     /* UART4 device driver structure */
95     cy_stc_sysint_t UART4_SCB_IRQ_cfg =
96         {
97 #if defined(SOC_SERIES_IFX_XMC)
98             .intrSrc = ((UART_NvicMuxN_IRQn << 16) |(cy_en_intr_t)scb_4_interrupt_IRQn),
99 #else
100             .intrSrc = (IRQn_Type)scb_4_interrupt_IRQn,
101 #endif
102             .intrPriority = (7u),
103     };
104 #endif
105 #ifdef BSP_USING_UART5
106     /* UART5 device driver structure */
107     cy_stc_sysint_t UART5_SCB_IRQ_cfg =
108         {
109 #if defined(SOC_SERIES_IFX_XMC)
110             .intrSrc = ((UART_NvicMuxN_IRQn << 16) |(cy_en_intr_t)scb_5_interrupt_IRQn),
111 #else
112             .intrSrc = (IRQn_Type)scb_5_interrupt_IRQn,
113 #endif
114             .intrPriority = (7u),
115     };
116 #endif
117 #ifdef BSP_USING_UART6
118     /* UART6 device driver structure */
119     cy_stc_sysint_t UART6_SCB_IRQ_cfg =
120         {
121 #if defined(SOC_SERIES_IFX_XMC)
122             .intrSrc = ((UART_NvicMuxN_IRQn << 16) |(cy_en_intr_t)scb_6_interrupt_IRQn),
123 #else
124             .intrSrc = (IRQn_Type)scb_6_interrupt_IRQn,
125 #endif
126             .intrPriority = (7u),
127     };
128 #endif
129 
130 #if defined(BSP_USING_UART0)
131 #ifndef UART0_CONFIG
132 #define UART0_CONFIG                            \
133     {                                           \
134         .name = "uart0",                        \
135         .tx_pin = P0_3,                         \
136         .rx_pin = P0_2,                         \
137         .usart_x = SCB0,                        \
138         .userIsr = uart_isr_callback(uart0),    \
139         .UART_SCB_IRQ_cfg = &UART0_SCB_IRQ_cfg, \
140     }
141     void uart0_isr_callback(void);
142 #endif /* UART0_CONFIG */
143 #endif /* BSP_USING_UART0 */
144 
145 #if defined(BSP_USING_UART1)
146 #ifndef UART1_CONFIG
147 #define UART1_CONFIG                            \
148     {                                           \
149         .name = "uart1",                        \
150         .tx_pin = P10_1,                        \
151         .rx_pin = P10_0,                        \
152         .usart_x = SCB1,                        \
153         .userIsr = uart_isr_callback(uart1),    \
154         .UART_SCB_IRQ_cfg = &UART1_SCB_IRQ_cfg, \
155     }
156     void uart1_isr_callback(void);
157 #endif /* UART1_CONFIG */
158 #endif /* BSP_USING_UART1 */
159 
160 #if defined(BSP_USING_UART2)
161 #ifndef UART2_CONFIG
162 #if defined(SOC_XMC7100D_F144K4160AA)
163 #define UART2_CONFIG                            \
164     {                                           \
165         .name = "uart2",                        \
166         .tx_pin = P19_1,                        \
167         .rx_pin = P19_0,                        \
168         .usart_x = SCB2,                        \
169         .userIsr = uart_isr_callback(uart2),    \
170         .UART_SCB_IRQ_cfg = &UART2_SCB_IRQ_cfg, \
171     }
172 #else
173 #define UART2_CONFIG                            \
174     {                                           \
175         .name = "uart2",                        \
176         .tx_pin = P9_1,                         \
177         .rx_pin = P9_0,                         \
178         .usart_x = SCB2,                        \
179         .userIsr = uart_isr_callback(uart2),    \
180         .UART_SCB_IRQ_cfg = &UART2_SCB_IRQ_cfg, \
181     }
182 #endif /* SOC_CY8C6244LQI_S4D92 */
183     void uart2_isr_callback(void);
184 #endif /* UART2_CONFIG */
185 #endif /* BSP_USING_UART2 */
186 
187 #if defined(BSP_USING_UART3)
188 #ifndef UART3_CONFIG
189 #if defined(SOC_XMC7200D_E272K8384AA)
190 #define UART3_CONFIG                            \
191     {                                           \
192         .name = "uart3",                        \
193         .tx_pin = P13_1,                        \
194         .rx_pin = P13_0,                        \
195         .usart_x = SCB3,                        \
196         .userIsr = uart_isr_callback(uart3),    \
197         .UART_SCB_IRQ_cfg = &UART3_SCB_IRQ_cfg, \
198     }
199 #else
200 #define UART3_CONFIG                            \
201     {                                           \
202         .name = "uart3",                        \
203         .tx_pin = P6_1,                         \
204         .rx_pin = P6_0,                         \
205         .usart_x = SCB3,                        \
206         .userIsr = uart_isr_callback(uart3),    \
207         .UART_SCB_IRQ_cfg = &UART3_SCB_IRQ_cfg, \
208     }
209 #endif
210     void uart3_isr_callback(void);
211 #endif /* UART3_CONFIG */
212 #endif /* BSP_USING_UART3 */
213 
214 #if defined(BSP_USING_UART4)
215 #ifndef UART4_CONFIG
216 #if defined(SOC_XMC7100D_F144K4160AA)
217 #define UART4_CONFIG                            \
218     {                                           \
219         .name = "uart4",                        \
220         .tx_pin = P10_1,                        \
221         .rx_pin = P10_0,                        \
222         .usart_x = SCB4,                        \
223         .userIsr = uart_isr_callback(uart4),    \
224         .UART_SCB_IRQ_cfg = &UART4_SCB_IRQ_cfg, \
225     }
226 #else
227 #define UART4_CONFIG                            \
228     {                                           \
229         .name = "uart4",                        \
230         .tx_pin = P7_1,                         \
231         .rx_pin = P7_0,                         \
232         .usart_x = SCB4,                        \
233         .userIsr = uart_isr_callback(uart4),    \
234         .UART_SCB_IRQ_cfg = &UART4_SCB_IRQ_cfg, \
235     }
236 #endif
237     void uart4_isr_callback(void);
238 #endif /* UART4_CONFIG */
239 #endif /* BSP_USING_UART4 */
240 
241 #if defined(BSP_USING_UART5)
242 #ifndef UART5_CONFIG
243 #define UART5_CONFIG                            \
244     {                                           \
245         .name = "uart5",                        \
246         .tx_pin = P5_1,                         \
247         .rx_pin = P5_0,                         \
248         .usart_x = SCB5,                        \
249         .userIsr = uart_isr_callback(uart5),    \
250         .UART_SCB_IRQ_cfg = &UART5_SCB_IRQ_cfg, \
251     }
252     void uart5_isr_callback(void);
253 #endif /* UART5_CONFIG */
254 #endif /* BSP_USING_UART5 */
255 
256 #if defined(BSP_USING_UART6)
257 #ifndef UART6_CONFIG
258 #define UART6_CONFIG                            \
259     {                                           \
260         .name = "uart6",                        \
261         .tx_pin = P6_5,                         \
262         .rx_pin = P6_4,                         \
263         .usart_x = SCB6,                        \
264         .userIsr = uart_isr_callback(uart6),    \
265         .UART_SCB_IRQ_cfg = &UART6_SCB_IRQ_cfg, \
266     }
267     void uart6_isr_callback(void);
268 #endif /* UART6_CONFIG */
269 #endif /* BSP_USING_UART6 */
270 #ifdef __cplusplus
271 }
272 #endif
273 
274 #endif
275