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 #include "uart.h"
22 #include "mxc_device.h"
23 #include "mxc_pins.h"
24 #include "mxc_assert.h"
25 #include "uart_revb.h"
26 #include "uart_common.h"
27 #include "lpgcr_regs.h"
28 #include "dma.h"
29
MXC_UART_DMACallback(int ch,int error)30 void MXC_UART_DMACallback(int ch, int error)
31 {
32 MXC_UART_RevB_DMACallback(ch, error);
33 }
34
MXC_UART_AsyncCallback(mxc_uart_regs_t * uart,int retVal)35 int MXC_UART_AsyncCallback(mxc_uart_regs_t *uart, int retVal)
36 {
37 return MXC_UART_RevB_AsyncCallback((mxc_uart_revb_regs_t *)uart, retVal);
38 }
39
MXC_UART_AsyncStop(mxc_uart_regs_t * uart)40 int MXC_UART_AsyncStop(mxc_uart_regs_t *uart)
41 {
42 return MXC_UART_RevB_AsyncStop((mxc_uart_revb_regs_t *)uart);
43 }
44
MXC_UART_Init(mxc_uart_regs_t * uart,unsigned int baud,mxc_uart_clock_t clock)45 int MXC_UART_Init(mxc_uart_regs_t *uart, unsigned int baud, mxc_uart_clock_t clock)
46 {
47 #ifndef MSDK_NO_GPIO_CLK_INIT
48 int retval;
49
50 retval = MXC_UART_Shutdown(uart);
51
52 if (retval) {
53 return retval;
54 }
55
56 switch (clock) {
57 case MXC_UART_ERTCO_CLK:
58 MXC_SYS_ClockSourceEnable(MXC_SYS_CLOCK_ERTCO);
59 break;
60
61 case MXC_UART_IBRO_CLK:
62 MXC_SYS_ClockSourceEnable(MXC_SYS_CLOCK_IBRO);
63 break;
64
65 case MXC_UART_ERFO_CLK:
66 MXC_SYS_ClockSourceEnable(MXC_SYS_CLOCK_ERFO);
67 break;
68
69 default:
70 break;
71 }
72
73 switch (MXC_UART_GET_IDX(uart)) {
74 case 0:
75 MXC_GPIO_Config(&gpio_cfg_uart0);
76 MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_UART0);
77 break;
78
79 case 1:
80 MXC_GPIO_Config(&gpio_cfg_uart1);
81 MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_UART1);
82 break;
83
84 case 2:
85 MXC_GPIO_Config(&gpio_cfg_uart2);
86 MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_UART2);
87 break;
88
89 case 3:
90 MXC_GPIO_Config(&gpio_cfg_uart3);
91 MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_UART3);
92 break;
93
94 default:
95 return E_BAD_PARAM;
96 }
97 #endif
98
99 return MXC_UART_RevB_Init((mxc_uart_revb_regs_t *)uart, baud, (mxc_uart_revb_clock_t)clock);
100 }
101
MXC_UART_Shutdown(mxc_uart_regs_t * uart)102 int MXC_UART_Shutdown(mxc_uart_regs_t *uart)
103 {
104 switch (MXC_UART_GET_IDX(uart)) {
105 case 0:
106 MXC_SYS_Reset_Periph(MXC_SYS_RESET0_UART0);
107 MXC_SYS_ClockDisable(MXC_SYS_PERIPH_CLOCK_UART0);
108 break;
109
110 case 1:
111 MXC_SYS_Reset_Periph(MXC_SYS_RESET0_UART1);
112 MXC_SYS_ClockDisable(MXC_SYS_PERIPH_CLOCK_UART1);
113 break;
114
115 case 2:
116 MXC_SYS_Reset_Periph(MXC_SYS_RESET0_UART2);
117 MXC_SYS_ClockDisable(MXC_SYS_PERIPH_CLOCK_UART2);
118 break;
119
120 case 3:
121 MXC_SYS_Reset_Periph(MXC_SYS_RESET_UART3);
122 MXC_SYS_ClockDisable(MXC_SYS_PERIPH_CLOCK_UART3);
123 break;
124
125 default:
126 return E_BAD_PARAM;
127 }
128
129 return E_NO_ERROR;
130 }
131
MXC_UART_ReadyForSleep(mxc_uart_regs_t * uart)132 int MXC_UART_ReadyForSleep(mxc_uart_regs_t *uart)
133 {
134 return MXC_UART_RevB_ReadyForSleep((mxc_uart_revb_regs_t *)uart);
135 }
136
MXC_UART_SetFrequency(mxc_uart_regs_t * uart,unsigned int baud,mxc_uart_clock_t clock)137 int MXC_UART_SetFrequency(mxc_uart_regs_t *uart, unsigned int baud, mxc_uart_clock_t clock)
138 {
139 int freq;
140 int mod = 0;
141 int clkdiv = 0;
142
143 if (MXC_UART_GET_IDX(uart) < 0) {
144 return E_BAD_PARAM;
145 }
146
147 // check if the uart is LPUART
148 if (uart == MXC_UART3) {
149 // OSR default value
150 uart->osr = 5;
151
152 switch (clock) {
153 case MXC_UART_APB_CLK:
154 case MXC_UART_IBRO_CLK:
155 clkdiv = ((IBRO_FREQ) / baud);
156 mod = ((IBRO_FREQ) % baud);
157 break;
158
159 case MXC_UART_ERTCO_CLK:
160 uart->ctrl |= MXC_S_UART_CTRL_BCLKSRC_EXTERNAL_CLOCK;
161 uart->ctrl |= MXC_F_UART_CTRL_FDM;
162 if (baud == 9600) {
163 clkdiv = 7;
164 mod = 0;
165 } else {
166 clkdiv = ((ERTCO_FREQ * 2) / baud);
167 mod = ((ERTCO_FREQ * 2) % baud);
168 }
169
170 if (baud > 2400) {
171 uart->osr = 0;
172 } else {
173 uart->osr = 1;
174 }
175 break;
176
177 default:
178 return E_BAD_PARAM;
179 }
180
181 if (!clkdiv || mod > (baud / 2)) {
182 clkdiv++;
183 }
184 uart->clkdiv = clkdiv;
185
186 freq = MXC_UART_GetFrequency(uart);
187 } else {
188 uart->osr = 5;
189
190 switch (clock) {
191 case MXC_UART_APB_CLK:
192 uart->ctrl |= MXC_S_UART_CTRL_BCLKSRC_PERIPHERAL_CLOCK;
193 clkdiv = PeripheralClock / baud;
194 mod = PeripheralClock % baud;
195 break;
196
197 case MXC_UART_ERFO_CLK:
198 uart->ctrl |= MXC_S_UART_CTRL_BCLKSRC_EXTERNAL_CLOCK;
199 clkdiv = ERFO_FREQ / baud;
200 mod = ERFO_FREQ % baud;
201 break;
202
203 case MXC_UART_IBRO_CLK:
204 uart->ctrl |= MXC_S_UART_CTRL_BCLKSRC_CLK2;
205 clkdiv = IBRO_FREQ / baud;
206 mod = IBRO_FREQ % baud;
207 break;
208
209 default:
210 return E_BAD_PARAM;
211 }
212
213 if (!clkdiv || mod > (baud / 2)) {
214 clkdiv++;
215 }
216 uart->clkdiv = clkdiv;
217
218 freq = MXC_UART_GetFrequency(uart);
219 }
220
221 if (freq > 0) {
222 // Enable baud clock and wait for it to become ready.
223 uart->ctrl |= MXC_F_UART_CTRL_BCLKEN;
224 while (((uart->ctrl & MXC_F_UART_CTRL_BCLKRDY) >> MXC_F_UART_CTRL_BCLKRDY_POS) == 0) {}
225 }
226
227 return freq;
228 }
229
MXC_UART_GetFrequency(mxc_uart_regs_t * uart)230 int MXC_UART_GetFrequency(mxc_uart_regs_t *uart)
231 {
232 int periphClock = 0;
233
234 if (MXC_UART_GET_IDX(uart) < 0) {
235 return E_BAD_PARAM;
236 }
237
238 // check if UARt is LP UART
239 if (uart == MXC_UART3) {
240 if ((uart->ctrl & MXC_F_UART_CTRL_BCLKSRC) == MXC_S_UART_CTRL_BCLKSRC_EXTERNAL_CLOCK) {
241 periphClock = ERTCO_FREQ * 2;
242 } else if ((uart->ctrl & MXC_F_UART_CTRL_BCLKSRC) ==
243 MXC_S_UART_CTRL_BCLKSRC_PERIPHERAL_CLOCK) {
244 periphClock = IBRO_FREQ;
245 } else {
246 return E_BAD_PARAM;
247 }
248 return (periphClock / uart->clkdiv);
249 } else {
250 if ((uart->ctrl & MXC_F_UART_CTRL_BCLKSRC) == MXC_S_UART_CTRL_BCLKSRC_EXTERNAL_CLOCK) {
251 periphClock = ERFO_FREQ;
252 } else if ((uart->ctrl & MXC_F_UART_CTRL_BCLKSRC) ==
253 MXC_S_UART_CTRL_BCLKSRC_PERIPHERAL_CLOCK) {
254 periphClock = PeripheralClock;
255 } else if ((uart->ctrl & MXC_F_UART_CTRL_BCLKSRC) == MXC_S_UART_CTRL_BCLKSRC_CLK2) {
256 periphClock = IBRO_FREQ;
257 } else {
258 return E_BAD_PARAM;
259 }
260 return (periphClock / uart->clkdiv);
261 }
262 }
263
MXC_UART_SetDataSize(mxc_uart_regs_t * uart,int dataSize)264 int MXC_UART_SetDataSize(mxc_uart_regs_t *uart, int dataSize)
265 {
266 return MXC_UART_RevB_SetDataSize((mxc_uart_revb_regs_t *)uart, dataSize);
267 }
268
MXC_UART_SetStopBits(mxc_uart_regs_t * uart,mxc_uart_stop_t stopBits)269 int MXC_UART_SetStopBits(mxc_uart_regs_t *uart, mxc_uart_stop_t stopBits)
270 {
271 return MXC_UART_RevB_SetStopBits((mxc_uart_revb_regs_t *)uart, stopBits);
272 }
273
MXC_UART_SetParity(mxc_uart_regs_t * uart,mxc_uart_parity_t parity)274 int MXC_UART_SetParity(mxc_uart_regs_t *uart, mxc_uart_parity_t parity)
275 {
276 return MXC_UART_RevB_SetParity((mxc_uart_revb_regs_t *)uart, parity);
277 }
278
MXC_UART_SetFlowCtrl(mxc_uart_regs_t * uart,mxc_uart_flow_t flowCtrl,int rtsThreshold)279 int MXC_UART_SetFlowCtrl(mxc_uart_regs_t *uart, mxc_uart_flow_t flowCtrl, int rtsThreshold)
280 {
281 if (flowCtrl == MXC_UART_FLOW_EN) {
282 switch (MXC_UART_GET_IDX(uart)) {
283 case 0:
284 MXC_GPIO_Config(&gpio_cfg_uart0_flow);
285 break;
286
287 case 1:
288 MXC_GPIO_Config(&gpio_cfg_uart1_flow);
289 break;
290
291 case 2:
292 MXC_GPIO_Config(&gpio_cfg_uart2_flow);
293 break;
294
295 case 3:
296 MXC_GPIO_Config(&gpio_cfg_uart3_flow);
297 break;
298
299 default:
300 return E_BAD_PARAM;
301 }
302 } else {
303 switch (MXC_UART_GET_IDX(uart)) {
304 case 0:
305 MXC_GPIO_Config(&gpio_cfg_uart0_flow_disable);
306 break;
307
308 case 1:
309 MXC_GPIO_Config(&gpio_cfg_uart1_flow_disable);
310 break;
311
312 case 2:
313 MXC_GPIO_Config(&gpio_cfg_uart2_flow_disable);
314 break;
315
316 case 3:
317 MXC_GPIO_Config(&gpio_cfg_uart3_flow_disable);
318 break;
319
320 default:
321 return E_BAD_PARAM;
322 }
323 }
324
325 return MXC_UART_RevB_SetFlowCtrl((mxc_uart_revb_regs_t *)uart, flowCtrl, rtsThreshold);
326 }
327
MXC_UART_SetClockSource(mxc_uart_regs_t * uart,mxc_uart_clock_t clock)328 int MXC_UART_SetClockSource(mxc_uart_regs_t *uart, mxc_uart_clock_t clock)
329 {
330 return MXC_UART_RevB_SetClockSource((mxc_uart_revb_regs_t *)uart, (mxc_uart_revb_clock_t)clock);
331 }
332
MXC_UART_GetActive(mxc_uart_regs_t * uart)333 int MXC_UART_GetActive(mxc_uart_regs_t *uart)
334 {
335 return MXC_UART_RevB_GetActive((mxc_uart_revb_regs_t *)uart);
336 }
337
MXC_UART_AbortTransmission(mxc_uart_regs_t * uart)338 int MXC_UART_AbortTransmission(mxc_uart_regs_t *uart)
339 {
340 return MXC_UART_RevB_AbortTransmission((mxc_uart_revb_regs_t *)uart);
341 }
342
MXC_UART_ReadCharacterRaw(mxc_uart_regs_t * uart)343 int MXC_UART_ReadCharacterRaw(mxc_uart_regs_t *uart)
344 {
345 return MXC_UART_RevB_ReadCharacterRaw((mxc_uart_revb_regs_t *)uart);
346 }
347
MXC_UART_WriteCharacterRaw(mxc_uart_regs_t * uart,uint8_t character)348 int MXC_UART_WriteCharacterRaw(mxc_uart_regs_t *uart, uint8_t character)
349 {
350 return MXC_UART_RevB_WriteCharacterRaw((mxc_uart_revb_regs_t *)uart, character);
351 }
352
MXC_UART_ReadCharacter(mxc_uart_regs_t * uart)353 int MXC_UART_ReadCharacter(mxc_uart_regs_t *uart)
354 {
355 return MXC_UART_Common_ReadCharacter(uart);
356 }
357
MXC_UART_WriteCharacter(mxc_uart_regs_t * uart,uint8_t character)358 int MXC_UART_WriteCharacter(mxc_uart_regs_t *uart, uint8_t character)
359 {
360 return MXC_UART_Common_WriteCharacter(uart, character);
361 }
362
MXC_UART_Read(mxc_uart_regs_t * uart,uint8_t * buffer,int * len)363 int MXC_UART_Read(mxc_uart_regs_t *uart, uint8_t *buffer, int *len)
364 {
365 return MXC_UART_RevB_Read((mxc_uart_revb_regs_t *)uart, buffer, len);
366 }
367
MXC_UART_Write(mxc_uart_regs_t * uart,const uint8_t * byte,int * len)368 int MXC_UART_Write(mxc_uart_regs_t *uart, const uint8_t *byte, int *len)
369 {
370 return MXC_UART_RevB_Write((mxc_uart_revb_regs_t *)uart, byte, len);
371 }
372
MXC_UART_ReadRXFIFO(mxc_uart_regs_t * uart,unsigned char * bytes,unsigned int len)373 unsigned int MXC_UART_ReadRXFIFO(mxc_uart_regs_t *uart, unsigned char *bytes, unsigned int len)
374 {
375 return MXC_UART_RevB_ReadRXFIFO((mxc_uart_revb_regs_t *)uart, bytes, len);
376 }
377
MXC_UART_ReadRXFIFODMA(mxc_uart_regs_t * uart,unsigned char * bytes,unsigned int len,mxc_uart_dma_complete_cb_t callback)378 int MXC_UART_ReadRXFIFODMA(mxc_uart_regs_t *uart, unsigned char *bytes, unsigned int len,
379 mxc_uart_dma_complete_cb_t callback)
380 {
381 mxc_dma_config_t config;
382
383 int uart_num = MXC_UART_GET_IDX(uart);
384
385 switch (uart_num) {
386 case 0:
387 config.reqsel = MXC_DMA_REQUEST_UART0RX;
388 break;
389
390 case 1:
391 config.reqsel = MXC_DMA_REQUEST_UART1RX;
392 break;
393
394 case 2:
395 config.reqsel = MXC_DMA_REQUEST_UART2RX;
396 break;
397
398 case 3:
399 config.reqsel = MXC_DMA_REQUEST_UART3RX;
400 break;
401
402 default:
403 return E_BAD_PARAM;
404 break;
405 }
406
407 return MXC_UART_RevB_ReadRXFIFODMA((mxc_uart_revb_regs_t *)uart, bytes, len, callback, config);
408 }
409
MXC_UART_GetRXFIFOAvailable(mxc_uart_regs_t * uart)410 unsigned int MXC_UART_GetRXFIFOAvailable(mxc_uart_regs_t *uart)
411 {
412 return MXC_UART_RevB_GetRXFIFOAvailable((mxc_uart_revb_regs_t *)uart);
413 }
414
MXC_UART_WriteTXFIFO(mxc_uart_regs_t * uart,const unsigned char * bytes,unsigned int len)415 unsigned int MXC_UART_WriteTXFIFO(mxc_uart_regs_t *uart, const unsigned char *bytes,
416 unsigned int len)
417 {
418 return MXC_UART_RevB_WriteTXFIFO((mxc_uart_revb_regs_t *)uart, bytes, len);
419 }
420
MXC_UART_WriteTXFIFODMA(mxc_uart_regs_t * uart,const unsigned char * bytes,unsigned int len,mxc_uart_dma_complete_cb_t callback)421 int MXC_UART_WriteTXFIFODMA(mxc_uart_regs_t *uart, const unsigned char *bytes, unsigned int len,
422 mxc_uart_dma_complete_cb_t callback)
423 {
424 mxc_dma_config_t config;
425
426 int uart_num = MXC_UART_GET_IDX(uart);
427 switch (uart_num) {
428 case 0:
429 config.reqsel = MXC_DMA_REQUEST_UART0TX;
430 break;
431
432 case 1:
433 config.reqsel = MXC_DMA_REQUEST_UART1TX;
434 break;
435
436 case 2:
437 config.reqsel = MXC_DMA_REQUEST_UART2TX;
438 break;
439
440 case 3:
441 config.reqsel = MXC_DMA_REQUEST_UART3TX;
442 break;
443
444 default:
445 return E_BAD_PARAM;
446 break;
447 }
448
449 return MXC_UART_RevB_WriteTXFIFODMA((mxc_uart_revb_regs_t *)uart, bytes, len, callback, config);
450 }
451
MXC_UART_GetTXFIFOAvailable(mxc_uart_regs_t * uart)452 unsigned int MXC_UART_GetTXFIFOAvailable(mxc_uart_regs_t *uart)
453 {
454 return MXC_UART_RevB_GetTXFIFOAvailable((mxc_uart_revb_regs_t *)uart);
455 }
456
MXC_UART_ClearRXFIFO(mxc_uart_regs_t * uart)457 int MXC_UART_ClearRXFIFO(mxc_uart_regs_t *uart)
458 {
459 return MXC_UART_RevB_ClearRXFIFO((mxc_uart_revb_regs_t *)uart);
460 }
461
MXC_UART_ClearTXFIFO(mxc_uart_regs_t * uart)462 int MXC_UART_ClearTXFIFO(mxc_uart_regs_t *uart)
463 {
464 return MXC_UART_RevB_ClearTXFIFO((mxc_uart_revb_regs_t *)uart);
465 }
466
MXC_UART_SetRXThreshold(mxc_uart_regs_t * uart,unsigned int numBytes)467 int MXC_UART_SetRXThreshold(mxc_uart_regs_t *uart, unsigned int numBytes)
468 {
469 return MXC_UART_RevB_SetRXThreshold((mxc_uart_revb_regs_t *)uart, numBytes);
470 }
471
MXC_UART_GetRXThreshold(mxc_uart_regs_t * uart)472 unsigned int MXC_UART_GetRXThreshold(mxc_uart_regs_t *uart)
473 {
474 return MXC_UART_RevB_GetRXThreshold((mxc_uart_revb_regs_t *)uart);
475 }
476
MXC_UART_SetTXThreshold(mxc_uart_regs_t * uart,unsigned int numBytes)477 int MXC_UART_SetTXThreshold(mxc_uart_regs_t *uart, unsigned int numBytes)
478 {
479 return E_NOT_SUPPORTED;
480 }
481
MXC_UART_GetTXThreshold(mxc_uart_regs_t * uart)482 unsigned int MXC_UART_GetTXThreshold(mxc_uart_regs_t *uart)
483 {
484 return 0;
485 }
486
MXC_UART_GetFlags(mxc_uart_regs_t * uart)487 unsigned int MXC_UART_GetFlags(mxc_uart_regs_t *uart)
488 {
489 return MXC_UART_RevB_GetFlags((mxc_uart_revb_regs_t *)uart);
490 }
491
MXC_UART_ClearFlags(mxc_uart_regs_t * uart,unsigned int flags)492 int MXC_UART_ClearFlags(mxc_uart_regs_t *uart, unsigned int flags)
493 {
494 return MXC_UART_RevB_ClearFlags((mxc_uart_revb_regs_t *)uart, flags);
495 }
496
MXC_UART_EnableInt(mxc_uart_regs_t * uart,unsigned int intEn)497 int MXC_UART_EnableInt(mxc_uart_regs_t *uart, unsigned int intEn)
498 {
499 return MXC_UART_RevB_EnableInt((mxc_uart_revb_regs_t *)uart, intEn);
500 }
501
MXC_UART_DisableInt(mxc_uart_regs_t * uart,unsigned int intDis)502 int MXC_UART_DisableInt(mxc_uart_regs_t *uart, unsigned int intDis)
503 {
504 return MXC_UART_RevB_DisableInt((mxc_uart_revb_regs_t *)uart, intDis);
505 }
506
MXC_UART_GetStatus(mxc_uart_regs_t * uart)507 unsigned int MXC_UART_GetStatus(mxc_uart_regs_t *uart)
508 {
509 return MXC_UART_RevB_GetStatus((mxc_uart_revb_regs_t *)uart);
510 }
511
MXC_UART_Transaction(mxc_uart_req_t * req)512 int MXC_UART_Transaction(mxc_uart_req_t *req)
513 {
514 return MXC_UART_RevB_Transaction((mxc_uart_revb_req_t *)req);
515 }
516
MXC_UART_TransactionAsync(mxc_uart_req_t * req)517 int MXC_UART_TransactionAsync(mxc_uart_req_t *req)
518 {
519 return MXC_UART_RevB_TransactionAsync((mxc_uart_revb_req_t *)req);
520 }
521
MXC_UART_TransactionDMA(mxc_uart_req_t * req)522 int MXC_UART_TransactionDMA(mxc_uart_req_t *req)
523 {
524 return MXC_UART_RevB_TransactionDMA((mxc_uart_revb_req_t *)req);
525 }
526
MXC_UART_AbortAsync(mxc_uart_regs_t * uart)527 int MXC_UART_AbortAsync(mxc_uart_regs_t *uart)
528 {
529 return MXC_UART_RevB_AbortAsync((mxc_uart_revb_regs_t *)uart);
530 }
531
MXC_UART_AsyncHandler(mxc_uart_regs_t * uart)532 int MXC_UART_AsyncHandler(mxc_uart_regs_t *uart)
533 {
534 return MXC_UART_RevB_AsyncHandler((mxc_uart_revb_regs_t *)uart);
535 }
536
MXC_UART_GetAsyncTXCount(mxc_uart_req_t * req)537 uint32_t MXC_UART_GetAsyncTXCount(mxc_uart_req_t *req)
538 {
539 return req->txCnt;
540 }
541
MXC_UART_GetAsyncRXCount(mxc_uart_req_t * req)542 uint32_t MXC_UART_GetAsyncRXCount(mxc_uart_req_t *req)
543 {
544 return req->rxCnt;
545 }
546
MXC_UART_SetAutoDMAHandlers(mxc_uart_regs_t * uart,bool enable)547 int MXC_UART_SetAutoDMAHandlers(mxc_uart_regs_t *uart, bool enable)
548 {
549 return MXC_UART_RevB_SetAutoDMAHandlers((mxc_uart_revb_regs_t *)uart, enable);
550 }
551
MXC_UART_SetTXDMAChannel(mxc_uart_regs_t * uart,unsigned int channel)552 int MXC_UART_SetTXDMAChannel(mxc_uart_regs_t *uart, unsigned int channel)
553 {
554 return MXC_UART_RevB_SetTXDMAChannel((mxc_uart_revb_regs_t *)uart, channel);
555 }
556
MXC_UART_GetTXDMAChannel(mxc_uart_regs_t * uart)557 int MXC_UART_GetTXDMAChannel(mxc_uart_regs_t *uart)
558 {
559 return MXC_UART_RevB_GetTXDMAChannel((mxc_uart_revb_regs_t *)uart);
560 }
561
MXC_UART_SetRXDMAChannel(mxc_uart_regs_t * uart,unsigned int channel)562 int MXC_UART_SetRXDMAChannel(mxc_uart_regs_t *uart, unsigned int channel)
563 {
564 return MXC_UART_RevB_SetRXDMAChannel((mxc_uart_revb_regs_t *)uart, channel);
565 }
566
MXC_UART_GetRXDMAChannel(mxc_uart_regs_t * uart)567 int MXC_UART_GetRXDMAChannel(mxc_uart_regs_t *uart)
568 {
569 return MXC_UART_RevB_GetTXDMAChannel((mxc_uart_revb_regs_t *)uart);
570 }
571