static void uart00_int(int irq, void *dev_id, struct pt_regs *regs)
{
	struct uart_port *port = dev_id;
	unsigned int status, pass_counter = 0;

	status = UART_GET_INT_STATUS(port);
	do {

		if (status & UART_ISR_RI_MSK)
			uart00_rx_chars(port, regs);
		if (status & (UART_ISR_TI_MSK | UART_ISR_TII_MSK))
			uart00_tx_chars(port);
		if (status & UART_ISR_MI_MSK)
			uart00_modem_status(port);
		if (pass_counter++ > UART00_ISR_PASS_LIMIT)
			break;

		status = UART_GET_INT_STATUS(port);
	} while (status);
}
Example #2
0
static void uart00_start_tx(struct uart_port *port)
{
	UART_PUT_IES(port, UART_IES_TIE_MSK);
	uart00_tx_chars(port);
}