Lines Matching refs:uart

83 static void UART_WriteHandler(mxc_uart_regs_t *uart, uart_req_t *req, int uart_num);
84 static void UART_ReadHandler(mxc_uart_regs_t *uart, uart_req_t *req, int uart_num,
86 static uint32_t uart_error_check(mxc_uart_regs_t *uart);
87 static void uart_error_clear(mxc_uart_regs_t *uart);
90 uint32_t uart_error_check(mxc_uart_regs_t *uart) in uart_error_check() argument
92 return (uart->int_fl & UART_ER_IF); in uart_error_check()
96 void uart_error_clear(mxc_uart_regs_t *uart) in uart_error_clear() argument
98 UART_ClearFlags(uart,UART_ER_IF); in uart_error_clear()
102 int UART_Init(mxc_uart_regs_t *uart, const uart_cfg_t *cfg, const sys_cfg_uart_t* sys_cfg) in UART_Init() argument
111 uart_num = MXC_UART_GET_IDX(uart); in UART_Init()
116 if ((err = SYS_UART_Init(uart, sys_cfg)) != E_NO_ERROR) { in UART_Init()
125uart->ctrl = (MXC_F_UART_CTRL_ENABLE | cfg->parity | cfg->size | cfg->stop | cfg->flow | cfg->pol); in UART_Init()
130 uart->ctrl |= cfg->clksel; in UART_Init()
146 uart->baud0 = ((factor << MXC_F_UART_BAUD0_FACTOR_POS) | baud0); in UART_Init()
153 uart->baud1 = baud1 - 3; in UART_Init()
155 uart->baud1 = baud1 + 3; in UART_Init()
158 uart->baud1 = baud1; in UART_Init()
169 int UART_Shutdown(mxc_uart_regs_t *uart) in UART_Shutdown() argument
175 uart_num = MXC_UART_GET_IDX(uart); in UART_Shutdown()
181 uart->int_en = 0; in UART_Shutdown()
184 uart->ctrl |= (MXC_F_UART_CTRL_TX_FLUSH | MXC_F_UART_CTRL_RX_FLUSH); in UART_Shutdown()
215 while (uart->status & (MXC_F_UART_STATUS_TX_BUSY | MXC_F_UART_STATUS_RX_BUSY)) { in UART_Shutdown()
220 uart->ctrl = 0; in UART_Shutdown()
223 SYS_UART_Shutdown(uart); in UART_Shutdown()
233 void UART_Handler(mxc_uart_regs_t *uart) in UART_Handler() argument
239 uart_num = MXC_UART_GET_IDX(uart); in UART_Handler()
245 intst = uart->int_fl; in UART_Handler()
246 uart->int_fl = intst; in UART_Handler()
250 UART_ReadHandler(uart, rx_states[uart_num], uart_num, intst); in UART_Handler()
255 UART_WriteHandler(uart, tx_states[uart_num], uart_num); in UART_Handler()
260 static void UART_WriteHandler(mxc_uart_regs_t *uart, uart_req_t *req, int uart_num) in UART_WriteHandler() argument
267 uart->int_en &= ~MXC_F_UART_INT_EN_TX_FIFO_ALMOST_EMPTY; // disable interrupt in UART_WriteHandler()
272 avail = UART_NumWriteAvail(uart); in UART_WriteHandler()
276 uart->fifo = req->data[req->num++]; in UART_WriteHandler()
284 uart->int_en &= ~MXC_F_UART_INT_EN_TX_FIFO_ALMOST_EMPTY; in UART_WriteHandler()
296 uart->int_en |= UART_TX_IE | UART_ER_IE; in UART_WriteHandler()
301 static void UART_ReadHandler(mxc_uart_regs_t *uart, uart_req_t *req, int uart_num, in UART_ReadHandler() argument
308 uart->int_en &= ~(UART_RX_IE | UART_ER_IE); // disable interrupts in UART_ReadHandler()
312 avail = UART_NumReadAvail(uart); in UART_ReadHandler()
315 req->data[req->num++] = uart->fifo; in UART_ReadHandler()
346 uart->int_en &= ~(UART_RX_IE | UART_ER_IE); in UART_ReadHandler()
359 uart->thresh_ctrl = ((req->len - req->num)<< in UART_ReadHandler()
362 uart->thresh_ctrl = MXC_UART_FIFO_DEPTH<< in UART_ReadHandler()
368 int UART_Read(mxc_uart_regs_t *uart, uint8_t *data, int len, int *num) in UART_Read() argument
375 uart_num = MXC_UART_GET_IDX(uart); in UART_Read()
381 if (uart->baud0 == 0) { in UART_Read()
403 while (uart->status & MXC_F_UART_STATUS_RX_EMPTY) { in UART_Read()
405 if (uart_error_check(uart) != E_NO_ERROR) { in UART_Read()
406 if (uart->int_fl & MXC_F_UART_INT_FL_RX_OVERRUN) { in UART_Read()
412 uart_error_clear(uart); in UART_Read()
417 data[char_read] = uart->fifo; in UART_Read()
430 uint8_t UART_ReadByte(mxc_uart_regs_t *uart) in UART_ReadByte() argument
433 while (uart->status & MXC_F_UART_STATUS_RX_EMPTY) {} in UART_ReadByte()
435 return uart->fifo; in UART_ReadByte()
439 int UART_Write(mxc_uart_regs_t *uart, const uint8_t *data, int len) in UART_Write() argument
445 uart_num = MXC_UART_GET_IDX(uart); in UART_Write()
451 if (uart->baud0 == 0) { in UART_Write()
471 uart_error_clear(uart); in UART_Write()
475 UART_WriteByte(uart,data[char_written]); in UART_Write()
486 void UART_WriteByte(mxc_uart_regs_t *uart, uint8_t data) in UART_WriteByte() argument
490 while (uart->status & MXC_F_UART_STATUS_TX_FULL) { in UART_WriteByte()
495 uart->fifo = data; in UART_WriteByte()
499 int UART_ReadAsync(mxc_uart_regs_t *uart, uart_req_t *req) in UART_ReadAsync() argument
510 uart_num = MXC_UART_GET_IDX(uart); in UART_ReadAsync()
519 if (uart->baud0 == 0) { in UART_ReadAsync()
541 flags = uart->int_fl; in UART_ReadAsync()
542 uart->int_fl = flags; in UART_ReadAsync()
543 UART_ReadHandler(uart,req,uart_num,flags); in UART_ReadAsync()
546 uart->int_en |= UART_RX_IE | UART_ER_IE; in UART_ReadAsync()
552 int UART_WriteAsync(mxc_uart_regs_t *uart, uart_req_t *req) in UART_WriteAsync() argument
562 uart_num = MXC_UART_GET_IDX(uart); in UART_WriteAsync()
571 if (uart->baud0 == 0) { in UART_WriteAsync()
589 UART_WriteHandler(uart, req, uart_num); in UART_WriteAsync()
595 int UART_Busy(mxc_uart_regs_t *uart) in UART_Busy() argument
597 int uart_num = MXC_UART_GET_IDX(uart); // Holds the current index of tx_states in UART_Busy()
599 if ((uart->status & MXC_F_UART_STATUS_TX_BUSY) || (uart->status & MXC_F_UART_STATUS_RX_BUSY)) { in UART_Busy()
604 !(uart->status & MXC_F_UART_STATUS_TX_FULL)) { in UART_Busy()
613 int UART_PrepForSleep(mxc_uart_regs_t *uart) in UART_PrepForSleep() argument
615 if (UART_Busy(uart) != E_NO_ERROR) { in UART_PrepForSleep()
620 uart->int_en &= (UART_RX_IE | UART_ER_IE); in UART_PrepForSleep()
671 unsigned UART_NumWriteAvail(mxc_uart_regs_t *uart) in UART_NumWriteAvail() argument
673 return MXC_UART_FIFO_DEPTH - ((uart->status & MXC_F_UART_STATUS_TX_FIFO_CNT) >> in UART_NumWriteAvail()
678 unsigned UART_NumReadAvail(mxc_uart_regs_t *uart) in UART_NumReadAvail() argument
680 return ((uart->status & MXC_F_UART_STATUS_RX_FIFO_CNT) >> in UART_NumReadAvail()
685 unsigned UART_GetFlags(mxc_uart_regs_t *uart) in UART_GetFlags() argument
687 return (uart->int_fl); in UART_GetFlags()
691 void UART_ClearFlags(mxc_uart_regs_t *uart, uint32_t mask) in UART_ClearFlags() argument
693 uart->int_fl = mask; in UART_ClearFlags()
697 void UART_Enable(mxc_uart_regs_t *uart) in UART_Enable() argument
699 uart->ctrl |= MXC_F_UART_CTRL_ENABLE; in UART_Enable()
703 void UART_Disable(mxc_uart_regs_t *uart) in UART_Disable() argument
705 uart->ctrl &= ~MXC_F_UART_CTRL_ENABLE; in UART_Disable()
709 void UART_DrainRX(mxc_uart_regs_t *uart) in UART_DrainRX() argument
711 uart->ctrl |= MXC_F_UART_CTRL_RX_FLUSH; in UART_DrainRX()
715 void UART_DrainTX(mxc_uart_regs_t *uart) in UART_DrainTX() argument
717 uart->ctrl |= MXC_F_UART_CTRL_TX_FLUSH; in UART_DrainTX()