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