/* * port is locked and interrupts are disabled */ static void bfin_serial_start_tx(struct uart_port *port) { struct bfin_serial_port *uart = (struct bfin_serial_port *)port; struct tty_struct *tty = uart->port.state->port.tty; #ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS if (uart->scts && !(bfin_serial_get_mctrl(&uart->port) & TIOCM_CTS)) { uart->scts = 0; uart_handle_cts_change(&uart->port, uart->scts); } #endif /* * To avoid losting RX interrupt, we reset IR function * before sending data. */ if (tty->termios->c_line == N_IRDA) bfin_serial_reset_irda(port); #ifdef CONFIG_SERIAL_BFIN_DMA if (uart->tx_done) bfin_serial_dma_tx_chars(uart); #else UART_SET_IER(uart, ETBEI); bfin_serial_tx_chars(uart); #endif }
/* * port is locked and interrupts are disabled */ static void bfin_serial_start_tx(struct uart_port *port) { struct bfin_serial_port *uart = (struct bfin_serial_port *)port; struct tty_struct *tty = uart->port.info->port.tty; /* * To avoid losting RX interrupt, we reset IR function * before sending data. */ if (tty->termios->c_line == N_IRDA) bfin_serial_reset_irda(port); #ifdef CONFIG_SERIAL_BFIN_DMA if (uart->tx_done) bfin_serial_dma_tx_chars(uart); #else UART_SET_IER(uart, ETBEI); bfin_serial_tx_chars(uart); #endif }