void timbuart_handle_rx_port(struct uart_port *port, u32 isr, u32 *ier) { if (isr & RXFLAGS) { /* Some RX status is set */ if (isr & RXBF) { u8 ctl = ioread8(port->membase + TIMBUART_CTRL) | TIMBUART_CTRL_FLSHRX; iowrite8(ctl, port->membase + TIMBUART_CTRL); port->icount.overrun++; } else if (isr & (RXDP)) timbuart_rx_chars(port); /* ack all RX interrupts */ iowrite32(RXFLAGS, port->membase + TIMBUART_ISR); } /* always have the RX interrupts enabled */ *ier |= RXBAF | RXBF | RXTT; dev_dbg(port->dev, "%s - leaving\n", __func__); }
void timbuart_handle_rx_port(struct uart_port *port, u32 isr, u32 *ier) { if (isr & RXFLAGS) { if (isr & RXBF) { u8 ctl = ioread8(port->membase + TIMBUART_CTRL) | TIMBUART_CTRL_FLSHRX; iowrite8(ctl, port->membase + TIMBUART_CTRL); port->icount.overrun++; } else if (isr & (RXDP)) timbuart_rx_chars(port); iowrite32(RXFLAGS, port->membase + TIMBUART_ISR); } *ier |= RXBAF | RXBF | RXTT; dev_dbg(port->dev, "%s - leaving\n", __func__); }