1 /******************************************************************************
2  *
3  * Copyright (C) 2022-2023 Maxim Integrated Products, Inc. (now owned by
4  * Analog Devices, Inc.),
5  * Copyright (C) 2023-2024 Analog Devices, Inc.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  ******************************************************************************/
20 
21 /* **** Includes **** */
22 #include <stdint.h>
23 #include <string.h>
24 #include "mxc_errors.h"
25 #include "mxc_assert.h"
26 #include "mxc_lock.h"
27 #include "mxc_sys.h"
28 #include "mxc_pins.h"
29 #include "gpio.h"
30 #include "uart.h"
31 #include "uart_reva.h"
32 #include "uart_common.h"
33 
34 /* **** Definitions **** */
35 
36 #define UART_ER_IF                                                          \
37     (MXC_F_UART_INT_FL_RX_FRAME_ERROR | MXC_F_UART_INT_FL_RX_PARITY_ERROR | \
38      MXC_F_UART_INT_FL_RX_OVERRUN)
39 
40 #define UART_ER_IE                                                          \
41     (MXC_F_UART_INT_EN_RX_FRAME_ERROR | MXC_F_UART_INT_EN_RX_PARITY_ERROR | \
42      MXC_F_UART_INT_EN_RX_OVERRUN)
43 
44 #define UART_RX_IF (MXC_F_UART_INT_FL_RX_FIFO_THRESH)
45 
46 #define UART_RX_IE (MXC_F_UART_INT_EN_RX_FIFO_THRESH)
47 
48 #define UART_TX_IF (MXC_F_UART_INT_FL_TX_FIFO_ALMOST_EMPTY | MXC_F_UART_INT_FL_TX_FIFO_THRESH)
49 
50 #define UART_TX_IE (MXC_F_UART_INT_EN_TX_FIFO_ALMOST_EMPTY | MXC_F_UART_INT_EN_TX_FIFO_THRESH)
51 
52 #if (TARGET == 32660) || (TARGET == 32665)
53 #define MAX_FACTOR 3
54 #else
55 #define MAX_FACTOR 7
56 #endif
57 
58 /* **** File Scope Data **** */
59 
60 // Saves the state of the non-blocking read requests.
61 static mxc_uart_req_t *rx_states[MXC_UART_INSTANCES];
62 
63 // Saves the state of the non-blocking write requests.
64 static mxc_uart_req_t *tx_states[MXC_UART_INSTANCES];
65 
66 /* **** Functions **** */
67 
68 /* ************************************************************************* */
MXC_UART_Init(mxc_uart_regs_t * uart,unsigned int baud)69 int MXC_UART_Init(mxc_uart_regs_t *uart, unsigned int baud)
70 {
71 #ifndef MSDK_NO_GPIO_CLK_INIT
72     int err;
73 
74     if ((err = MXC_UART_Shutdown(uart)) != E_NO_ERROR) {
75         return err;
76     }
77 
78     // Configure pins, enable peripheral clock
79     switch (MXC_UART_GET_IDX(uart)) {
80     case 0:
81         MXC_GPIO_Config(&gpio_cfg_uart0);
82         MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_UART0);
83         break;
84     case 1:
85         MXC_GPIO_Config(&gpio_cfg_uart1);
86         MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_UART1);
87         break;
88     case 2: //Must be UART2
89         MXC_GPIO_Config(&gpio_cfg_uart2);
90         MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_UART2);
91         break;
92     default:
93         return E_BAD_PARAM;
94     }
95 #endif
96 
97     // Clear pending requests
98     rx_states[MXC_UART_GET_IDX(uart)] = NULL;
99     tx_states[MXC_UART_GET_IDX(uart)] = NULL;
100 
101     //Set TX/RX Thresholds, set data size (8 bits), disable parity bit, set number of stop bits (1 bit), set baud
102     return MXC_UART_RevA_Init((mxc_uart_reva_regs_t *)uart, baud);
103 }
104 
105 /* ************************************************************************* */
MXC_UART_Shutdown(mxc_uart_regs_t * uart)106 int MXC_UART_Shutdown(mxc_uart_regs_t *uart)
107 {
108     switch (MXC_UART_GET_IDX(uart)) {
109     case 0:
110         MXC_SYS_Reset_Periph(MXC_SYS_RESET_UART0);
111         MXC_SYS_ClockDisable(MXC_SYS_PERIPH_CLOCK_UART0);
112         break;
113     case 1:
114         MXC_SYS_Reset_Periph(MXC_SYS_RESET_UART1);
115         MXC_SYS_ClockDisable(MXC_SYS_PERIPH_CLOCK_UART1);
116         break;
117     case 2:
118         MXC_SYS_Reset_Periph(MXC_SYS_RESET_UART2);
119         MXC_SYS_ClockDisable(MXC_SYS_PERIPH_CLOCK_UART2);
120         break;
121     default:
122         return E_BAD_PARAM;
123     }
124 
125     return E_NO_ERROR;
126 }
127 
128 /* ************************************************************************* */
MXC_UART_ReadyForSleep(mxc_uart_regs_t * uart)129 int MXC_UART_ReadyForSleep(mxc_uart_regs_t *uart)
130 {
131     return MXC_UART_RevA_ReadyForSleep((mxc_uart_reva_regs_t *)uart);
132 }
133 
134 /* ************************************************************************* */
MXC_UART_SetFrequency(mxc_uart_regs_t * uart,unsigned int baud)135 int MXC_UART_SetFrequency(mxc_uart_regs_t *uart, unsigned int baud)
136 {
137     return MXC_UART_RevA_SetFrequency((mxc_uart_reva_regs_t *)uart, baud);
138 }
139 
140 /* ************************************************************************* */
MXC_UART_GetFrequency(mxc_uart_regs_t * uart)141 int MXC_UART_GetFrequency(mxc_uart_regs_t *uart)
142 {
143     return MXC_UART_RevA_GetFrequency((mxc_uart_reva_regs_t *)uart);
144 }
145 
146 /* ************************************************************************* */
MXC_UART_SetDataSize(mxc_uart_regs_t * uart,int dataSize)147 int MXC_UART_SetDataSize(mxc_uart_regs_t *uart, int dataSize)
148 {
149     return MXC_UART_RevA_SetDataSize((mxc_uart_reva_regs_t *)uart, dataSize);
150 }
151 
152 /* ************************************************************************* */
MXC_UART_SetStopBits(mxc_uart_regs_t * uart,mxc_uart_stop_t stopBits)153 int MXC_UART_SetStopBits(mxc_uart_regs_t *uart, mxc_uart_stop_t stopBits)
154 {
155     return MXC_UART_RevA_SetStopBits((mxc_uart_reva_regs_t *)uart, stopBits);
156 }
157 
158 /* ************************************************************************* */
MXC_UART_SetParity(mxc_uart_regs_t * uart,mxc_uart_parity_t parity)159 int MXC_UART_SetParity(mxc_uart_regs_t *uart, mxc_uart_parity_t parity)
160 {
161     return MXC_UART_RevA_SetParity((mxc_uart_reva_regs_t *)uart, parity);
162 }
163 
164 /* ************************************************************************* */
MXC_UART_SetFlowCtrl(mxc_uart_regs_t * uart,mxc_uart_flow_t flowCtrl,int rtsThreshold)165 int MXC_UART_SetFlowCtrl(mxc_uart_regs_t *uart, mxc_uart_flow_t flowCtrl, int rtsThreshold)
166 {
167     //Enable flow control pins
168     switch (MXC_UART_GET_IDX(uart)) {
169     case 0:
170         MXC_GPIO_Config(&gpio_cfg_uart0_flow);
171         break;
172     case 1:
173         MXC_GPIO_Config(&gpio_cfg_uart1_flow);
174         break;
175     case 2:
176         MXC_GPIO_Config(&gpio_cfg_uart2_flow);
177         break;
178     default:
179         return E_BAD_PARAM;
180     }
181 
182     return MXC_UART_RevA_SetFlowCtrl((mxc_uart_reva_regs_t *)uart, flowCtrl, rtsThreshold);
183 }
184 
185 /* ************************************************************************* */
MXC_UART_SetClockSource(mxc_uart_regs_t * uart,int usePCLK)186 int MXC_UART_SetClockSource(mxc_uart_regs_t *uart, int usePCLK)
187 {
188     return MXC_UART_RevA_SetClockSource((mxc_uart_reva_regs_t *)uart, usePCLK);
189 }
190 
191 /* ************************************************************************* */
MXC_UART_SetNullModem(mxc_uart_regs_t * uart,int nullModem)192 int MXC_UART_SetNullModem(mxc_uart_regs_t *uart, int nullModem)
193 {
194     return MXC_UART_RevA_SetNullModem((mxc_uart_reva_regs_t *)uart, nullModem);
195 }
196 
197 /* ************************************************************************* */
MXC_UART_SendBreak(mxc_uart_regs_t * uart)198 int MXC_UART_SendBreak(mxc_uart_regs_t *uart)
199 {
200     return MXC_UART_RevA_SendBreak((mxc_uart_reva_regs_t *)uart);
201 }
202 
203 /* ************************************************************************* */
MXC_UART_GetActive(mxc_uart_regs_t * uart)204 int MXC_UART_GetActive(mxc_uart_regs_t *uart)
205 {
206     return MXC_UART_RevA_GetActive((mxc_uart_reva_regs_t *)uart);
207 }
208 
209 /* ************************************************************************* */
MXC_UART_AbortTransmission(mxc_uart_regs_t * uart)210 int MXC_UART_AbortTransmission(mxc_uart_regs_t *uart)
211 {
212     return MXC_UART_RevA_AbortTransmission((mxc_uart_reva_regs_t *)uart);
213 }
214 
215 /* ************************************************************************* */
MXC_UART_ReadCharacter(mxc_uart_regs_t * uart)216 int MXC_UART_ReadCharacter(mxc_uart_regs_t *uart)
217 {
218     if (MXC_UART_GET_IDX(uart) < 0) {
219         return E_BAD_PARAM;
220     }
221 
222     return MXC_UART_Common_ReadCharacter(uart);
223 }
224 
225 /* ************************************************************************* */
MXC_UART_WriteCharacter(mxc_uart_regs_t * uart,uint8_t data)226 int MXC_UART_WriteCharacter(mxc_uart_regs_t *uart, uint8_t data)
227 {
228     if (MXC_UART_GET_IDX(uart) < 0) {
229         return E_BAD_PARAM;
230     }
231 
232     return MXC_UART_Common_WriteCharacter(uart, data);
233 }
234 
235 /* ************************************************************************* */
MXC_UART_ReadCharacterRaw(mxc_uart_regs_t * uart)236 int MXC_UART_ReadCharacterRaw(mxc_uart_regs_t *uart)
237 {
238     return MXC_UART_RevA_ReadCharacterRaw((mxc_uart_reva_regs_t *)uart);
239 }
240 
241 /* ************************************************************************* */
MXC_UART_WriteCharacterRaw(mxc_uart_regs_t * uart,uint8_t character)242 int MXC_UART_WriteCharacterRaw(mxc_uart_regs_t *uart, uint8_t character)
243 {
244     return MXC_UART_RevA_WriteCharacterRaw((mxc_uart_reva_regs_t *)uart, character);
245 }
246 
247 /* ************************************************************************* */
MXC_UART_Read(mxc_uart_regs_t * uart,uint8_t * buffer,int * len)248 int MXC_UART_Read(mxc_uart_regs_t *uart, uint8_t *buffer, int *len)
249 {
250     return MXC_UART_RevA_Read((mxc_uart_reva_regs_t *)uart, buffer, len);
251 }
252 
253 /* ************************************************************************* */
MXC_UART_Write(mxc_uart_regs_t * uart,uint8_t * buffer,int * len)254 int MXC_UART_Write(mxc_uart_regs_t *uart, uint8_t *buffer, int *len)
255 {
256     return MXC_UART_RevA_Write((mxc_uart_reva_regs_t *)uart, buffer, len);
257 }
258 
259 /* ************************************************************************* */
MXC_UART_ReadRXFIFO(mxc_uart_regs_t * uart,unsigned char * bytes,unsigned int len)260 unsigned int MXC_UART_ReadRXFIFO(mxc_uart_regs_t *uart, unsigned char *bytes, unsigned int len)
261 {
262     return MXC_UART_RevA_ReadRXFIFO((mxc_uart_reva_regs_t *)uart, bytes, len);
263 }
264 
265 /* ************************************************************************* */
MXC_UART_ReadRXFIFODMA(mxc_uart_regs_t * uart,unsigned char * bytes,unsigned int len,mxc_uart_dma_complete_cb_t callback)266 int MXC_UART_ReadRXFIFODMA(mxc_uart_regs_t *uart, unsigned char *bytes, unsigned int len,
267                            mxc_uart_dma_complete_cb_t callback)
268 {
269     mxc_dma_config_t config;
270     switch (MXC_UART_GET_IDX(uart)) {
271     case 0:
272         config.reqsel = MXC_DMA_REQUEST_UART0RX;
273         break;
274     case 1:
275         config.reqsel = MXC_DMA_REQUEST_UART1RX;
276         break;
277     case 2:
278         config.reqsel = MXC_DMA_REQUEST_UART2RX;
279         break;
280     default:
281         return E_BAD_PARAM;
282     }
283     return MXC_UART_RevA_ReadRXFIFODMA((mxc_uart_reva_regs_t *)uart, MXC_DMA, bytes, len, callback,
284                                        config);
285 }
286 
287 /* ************************************************************************* */
MXC_UART_GetRXFIFOAvailable(mxc_uart_regs_t * uart)288 unsigned MXC_UART_GetRXFIFOAvailable(mxc_uart_regs_t *uart)
289 {
290     if (MXC_UART_GET_IDX(uart) < 0) {
291         return E_BAD_PARAM;
292     }
293 
294     return MXC_UART_RevA_GetRXFIFOAvailable((mxc_uart_reva_regs_t *)uart);
295 }
296 
297 /* ************************************************************************* */
MXC_UART_WriteTXFIFO(mxc_uart_regs_t * uart,unsigned char * bytes,unsigned int len)298 unsigned int MXC_UART_WriteTXFIFO(mxc_uart_regs_t *uart, unsigned char *bytes, unsigned int len)
299 {
300     return MXC_UART_RevA_WriteTXFIFO((mxc_uart_reva_regs_t *)uart, bytes, len);
301 }
302 
303 /* ************************************************************************* */
MXC_UART_WriteTXFIFODMA(mxc_uart_regs_t * uart,unsigned char * bytes,unsigned int len,mxc_uart_dma_complete_cb_t callback)304 int MXC_UART_WriteTXFIFODMA(mxc_uart_regs_t *uart, unsigned char *bytes, unsigned int len,
305                             mxc_uart_dma_complete_cb_t callback)
306 {
307     mxc_dma_config_t config;
308     switch ((MXC_UART_GET_IDX(uart))) {
309     case 0:
310         config.reqsel = MXC_DMA_REQUEST_UART0TX;
311         break;
312     case 1:
313         config.reqsel = MXC_DMA_REQUEST_UART1TX;
314         break;
315     case 2:
316         config.reqsel = MXC_DMA_REQUEST_UART2TX;
317         break;
318     default:
319         return E_BAD_PARAM;
320     }
321     return MXC_UART_RevA_WriteTXFIFODMA((mxc_uart_reva_regs_t *)uart, MXC_DMA, bytes, len, callback,
322                                         config);
323 }
324 
325 /* ************************************************************************* */
MXC_UART_GetTXFIFOAvailable(mxc_uart_regs_t * uart)326 unsigned MXC_UART_GetTXFIFOAvailable(mxc_uart_regs_t *uart)
327 {
328     if (MXC_UART_GET_IDX(uart) < 0) {
329         return E_BAD_PARAM;
330     }
331 
332     return MXC_UART_RevA_GetTXFIFOAvailable((mxc_uart_reva_regs_t *)uart);
333 }
334 
335 /* ************************************************************************* */
MXC_UART_ClearRXFIFO(mxc_uart_regs_t * uart)336 void MXC_UART_ClearRXFIFO(mxc_uart_regs_t *uart)
337 {
338     MXC_UART_RevA_ClearRXFIFO((mxc_uart_reva_regs_t *)uart);
339 }
340 
341 /* ************************************************************************* */
MXC_UART_ClearTXFIFO(mxc_uart_regs_t * uart)342 void MXC_UART_ClearTXFIFO(mxc_uart_regs_t *uart)
343 {
344     MXC_UART_RevA_ClearTXFIFO((mxc_uart_reva_regs_t *)uart);
345 }
346 
347 /* ************************************************************************* */
MXC_UART_SetRXThreshold(mxc_uart_regs_t * uart,unsigned int numBytes)348 int MXC_UART_SetRXThreshold(mxc_uart_regs_t *uart, unsigned int numBytes)
349 {
350     return MXC_UART_RevA_SetRXThreshold((mxc_uart_reva_regs_t *)uart, numBytes);
351 }
352 
353 /* ************************************************************************* */
MXC_UART_GetRXThreshold(mxc_uart_regs_t * uart)354 unsigned int MXC_UART_GetRXThreshold(mxc_uart_regs_t *uart)
355 {
356     if (MXC_UART_GET_IDX(uart) < 0) {
357         return E_BAD_PARAM;
358     }
359 
360     return MXC_UART_RevA_GetRXThreshold((mxc_uart_reva_regs_t *)uart);
361 }
362 
363 /* ************************************************************************* */
MXC_UART_SetTXThreshold(mxc_uart_regs_t * uart,unsigned int numBytes)364 int MXC_UART_SetTXThreshold(mxc_uart_regs_t *uart, unsigned int numBytes)
365 {
366     return MXC_UART_RevA_SetTXThreshold((mxc_uart_reva_regs_t *)uart, numBytes);
367 }
368 
369 /* ************************************************************************* */
MXC_UART_GetTXThreshold(mxc_uart_regs_t * uart)370 unsigned int MXC_UART_GetTXThreshold(mxc_uart_regs_t *uart)
371 {
372     if (MXC_UART_GET_IDX(uart) < 0) {
373         return E_BAD_PARAM;
374     }
375 
376     return MXC_UART_RevA_GetTXThreshold((mxc_uart_reva_regs_t *)uart);
377 }
378 
379 /* ************************************************************************* */
MXC_UART_GetFlags(mxc_uart_regs_t * uart)380 unsigned MXC_UART_GetFlags(mxc_uart_regs_t *uart)
381 {
382     if (MXC_UART_GET_IDX(uart) < 0) {
383         return E_BAD_PARAM;
384     }
385 
386     return MXC_UART_RevA_GetFlags((mxc_uart_reva_regs_t *)uart);
387 }
388 
389 /* ************************************************************************* */
MXC_UART_ClearFlags(mxc_uart_regs_t * uart,unsigned int flags)390 void MXC_UART_ClearFlags(mxc_uart_regs_t *uart, unsigned int flags)
391 {
392     MXC_UART_RevA_ClearFlags((mxc_uart_reva_regs_t *)uart, flags);
393 }
394 
395 /* ************************************************************************* */
MXC_UART_EnableInt(mxc_uart_regs_t * uart,unsigned int intEn)396 void MXC_UART_EnableInt(mxc_uart_regs_t *uart, unsigned int intEn)
397 {
398     MXC_UART_RevA_EnableInt((mxc_uart_reva_regs_t *)uart, intEn);
399 }
400 
401 /* ************************************************************************* */
MXC_UART_DisableInt(mxc_uart_regs_t * uart,unsigned int intDis)402 void MXC_UART_DisableInt(mxc_uart_regs_t *uart, unsigned int intDis)
403 {
404     MXC_UART_RevA_DisableInt((mxc_uart_reva_regs_t *)uart, intDis);
405 }
406 
407 /* ************************************************************************* */
MXC_UART_GetStatus(mxc_uart_regs_t * uart)408 unsigned int MXC_UART_GetStatus(mxc_uart_regs_t *uart)
409 {
410     if (MXC_UART_GET_IDX(uart) < 0) {
411         return E_BAD_PARAM;
412     }
413 
414     return MXC_UART_RevA_GetStatus((mxc_uart_reva_regs_t *)uart);
415 }
416 
417 /* ************************************************************************* */
MXC_UART_Transaction(mxc_uart_req_t * req)418 int MXC_UART_Transaction(mxc_uart_req_t *req)
419 {
420     return MXC_UART_RevA_Transaction((mxc_uart_reva_req_t *)req);
421 }
422 
423 /* ************************************************************************* */
MXC_UART_TransactionAsync(mxc_uart_req_t * req)424 int MXC_UART_TransactionAsync(mxc_uart_req_t *req)
425 {
426     return MXC_UART_RevA_TransactionAsync((mxc_uart_reva_req_t *)req);
427 }
428 
429 /* ************************************************************************* */
MXC_UART_TransactionDMA(mxc_uart_req_t * req)430 int MXC_UART_TransactionDMA(mxc_uart_req_t *req)
431 {
432     return MXC_UART_RevA_TransactionDMA((mxc_uart_reva_req_t *)req, MXC_DMA);
433 }
434 
435 /* ************************************************************************* */
MXC_UART_DMACallback(int ch,int error)436 void MXC_UART_DMACallback(int ch, int error)
437 {
438     MXC_UART_RevA_DMACallback(ch, error);
439 }
440 
441 /* ************************************************************************* */
MXC_UART_AsyncCallback(mxc_uart_regs_t * uart,int retVal)442 int MXC_UART_AsyncCallback(mxc_uart_regs_t *uart, int retVal)
443 {
444     return MXC_UART_RevA_AsyncCallback((mxc_uart_reva_regs_t *)uart, retVal);
445 }
446 
447 /* ************************************************************************* */
MXC_UART_TxAsyncCallback(mxc_uart_regs_t * uart,int retVal)448 int MXC_UART_TxAsyncCallback(mxc_uart_regs_t *uart, int retVal)
449 {
450     return MXC_UART_RevA_TxAsyncCallback((mxc_uart_reva_regs_t *)uart, retVal);
451 }
452 
453 /* ************************************************************************* */
MXC_UART_RxAsyncCallback(mxc_uart_regs_t * uart,int retVal)454 int MXC_UART_RxAsyncCallback(mxc_uart_regs_t *uart, int retVal)
455 {
456     return MXC_UART_RevA_RxAsyncCallback((mxc_uart_reva_regs_t *)uart, retVal);
457 }
458 
459 /* ************************************************************************* */
MXC_UART_AsyncStop(mxc_uart_regs_t * uart)460 int MXC_UART_AsyncStop(mxc_uart_regs_t *uart)
461 {
462     return MXC_UART_RevA_AsyncStop((mxc_uart_reva_regs_t *)uart);
463 }
464 
465 /* ************************************************************************* */
MXC_UART_TxAsyncStop(mxc_uart_regs_t * uart)466 int MXC_UART_TxAsyncStop(mxc_uart_regs_t *uart)
467 {
468     return MXC_UART_RevA_TxAsyncStop((mxc_uart_reva_regs_t *)uart);
469 }
470 
471 /* ************************************************************************* */
MXC_UART_RxAsyncStop(mxc_uart_regs_t * uart)472 int MXC_UART_RxAsyncStop(mxc_uart_regs_t *uart)
473 {
474     return MXC_UART_RevA_RxAsyncStop((mxc_uart_reva_regs_t *)uart);
475 }
476 
477 /* ************************************************************************* */
MXC_UART_AbortAsync(mxc_uart_regs_t * uart)478 int MXC_UART_AbortAsync(mxc_uart_regs_t *uart)
479 {
480     return MXC_UART_RevA_AbortAsync((mxc_uart_reva_regs_t *)uart);
481 }
482 
483 /* ************************************************************************* */
MXC_UART_TxAbortAsync(mxc_uart_regs_t * uart)484 int MXC_UART_TxAbortAsync(mxc_uart_regs_t *uart)
485 {
486     return MXC_UART_RevA_TxAbortAsync((mxc_uart_reva_regs_t *)uart);
487 }
488 
489 /* ************************************************************************* */
MXC_UART_RxAbortAsync(mxc_uart_regs_t * uart)490 int MXC_UART_RxAbortAsync(mxc_uart_regs_t *uart)
491 {
492     return MXC_UART_RevA_RxAbortAsync((mxc_uart_reva_regs_t *)uart);
493 }
494 
495 /* ************************************************************************* */
MXC_UART_AsyncHandler(mxc_uart_regs_t * uart)496 void MXC_UART_AsyncHandler(mxc_uart_regs_t *uart)
497 {
498     MXC_UART_RevA_AsyncHandler((mxc_uart_reva_regs_t *)uart);
499 }
500 
501 /* ************************************************************************* */
MXC_UART_GetAsyncTXCount(mxc_uart_req_t * req)502 uint32_t MXC_UART_GetAsyncTXCount(mxc_uart_req_t *req)
503 {
504     return req->txCnt;
505 }
506 
507 /* ************************************************************************* */
MXC_UART_GetAsyncRXCount(mxc_uart_req_t * req)508 uint32_t MXC_UART_GetAsyncRXCount(mxc_uart_req_t *req)
509 {
510     return req->rxCnt;
511 }
512 
MXC_UART_SetAutoDMAHandlers(mxc_uart_regs_t * uart,bool enable)513 int MXC_UART_SetAutoDMAHandlers(mxc_uart_regs_t *uart, bool enable)
514 {
515     return MXC_UART_RevA_SetAutoDMAHandlers((mxc_uart_reva_regs_t *)uart, enable);
516 }
MXC_UART_SetTXDMAChannel(mxc_uart_regs_t * uart,unsigned int channel)517 int MXC_UART_SetTXDMAChannel(mxc_uart_regs_t *uart, unsigned int channel)
518 {
519     return MXC_UART_RevA_SetTXDMAChannel((mxc_uart_reva_regs_t *)uart, channel);
520 }
MXC_UART_GetTXDMAChannel(mxc_uart_regs_t * uart)521 int MXC_UART_GetTXDMAChannel(mxc_uart_regs_t *uart)
522 {
523     return MXC_UART_RevA_GetTXDMAChannel((mxc_uart_reva_regs_t *)uart);
524 }
MXC_UART_SetRXDMAChannel(mxc_uart_regs_t * uart,unsigned int channel)525 int MXC_UART_SetRXDMAChannel(mxc_uart_regs_t *uart, unsigned int channel)
526 {
527     return MXC_UART_RevA_SetRXDMAChannel((mxc_uart_reva_regs_t *)uart, channel);
528 }
MXC_UART_GetRXDMAChannel(mxc_uart_regs_t * uart)529 int MXC_UART_GetRXDMAChannel(mxc_uart_regs_t *uart)
530 {
531     return MXC_UART_RevA_GetRXDMAChannel((mxc_uart_reva_regs_t *)uart);
532 }
533