Loading drivers/serial/clps711x.c +27 −38 Original line number Diff line number Diff line Loading @@ -116,22 +116,7 @@ static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *re * Note that the error handling code is * out of the main execution path */ if (unlikely(ch & UART_ANY_ERR)) goto handle_error; if (uart_handle_sysrq_char(port, ch, regs)) goto ignore_char; error_return: tty_insert_flip_char(tty, ch, flg); ignore_char: status = clps_readl(SYSFLG(port)); } out: tty_flip_buffer_push(tty); return IRQ_HANDLED; handle_error: if (unlikely(ch & UART_ANY_ERR)) { if (ch & UARTDR_PARERR) port->icount.parity++; else if (ch & UARTDR_FRMERR) Loading @@ -139,11 +124,6 @@ static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *re if (ch & UARTDR_OVERR) port->icount.overrun++; if (ch & port->ignore_status_mask) { if (++ignored > 100) goto out; goto ignore_char; } ch &= port->read_status_mask; if (ch & UARTDR_PARERR) Loading @@ -151,19 +131,28 @@ static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *re else if (ch & UARTDR_FRMERR) flg = TTY_FRAME; if (ch & UARTDR_OVERR) { #ifdef SUPPORT_SYSRQ port->sysrq = 0; #endif } if (uart_handle_sysrq_char(port, ch, regs)) goto ignore_char; /* * CHECK: does overrun affect the current character? * ASSUMPTION: it does not. */ if ((ch & port->ignore_status_mask & ~RXSTAT_OVERRUN) == 0) tty_insert_flip_char(tty, ch, flg); ch = 0; flg = TTY_OVERRUN; if ((ch & ~port->ignore_status_mask & RXSTAT_OVERRUN) == 0) tty_insert_flip_char(tty, 0, TTY_OVERRUN); ignore_char: status = clps_readl(SYSFLG(port)); } #ifdef SUPPORT_SYSRQ port->sysrq = 0; #endif goto error_return; tty_flip_buffer_push(tty); return IRQ_HANDLED; } static irqreturn_t clps711xuart_int_tx(int irq, void *dev_id, struct pt_regs *regs) Loading drivers/serial/sa1100.c +24 −41 Original line number Diff line number Diff line Loading @@ -214,23 +214,7 @@ sa1100_rx_chars(struct sa1100_port *sport, struct pt_regs *regs) * note that the error handling code is * out of the main execution path */ if (status & UTSR1_TO_SM(UTSR1_PRE | UTSR1_FRE | UTSR1_ROR)) goto handle_error; if (uart_handle_sysrq_char(&sport->port, ch, regs)) goto ignore_char; error_return: tty_insert_flip_char(tty, ch, flg); ignore_char: status = UTSR1_TO_SM(UART_GET_UTSR1(sport)) | UTSR0_TO_SM(UART_GET_UTSR0(sport)); } out: tty_flip_buffer_push(tty); return; handle_error: if (status & UTSR1_TO_SM(UTSR1_PRE | UTSR1_FRE | UTSR1_ROR)) { if (status & UTSR1_TO_SM(UTSR1_PRE)) sport->port.icount.parity++; else if (status & UTSR1_TO_SM(UTSR1_FRE)) Loading @@ -238,12 +222,6 @@ sa1100_rx_chars(struct sa1100_port *sport, struct pt_regs *regs) if (status & UTSR1_TO_SM(UTSR1_ROR)) sport->port.icount.overrun++; if (status & sport->port.ignore_status_mask) { if (++ignored > 100) goto out; goto ignore_char; } status &= sport->port.read_status_mask; if (status & UTSR1_TO_SM(UTSR1_PRE)) Loading @@ -251,19 +229,24 @@ sa1100_rx_chars(struct sa1100_port *sport, struct pt_regs *regs) else if (status & UTSR1_TO_SM(UTSR1_FRE)) flg = TTY_FRAME; if (status & UTSR1_TO_SM(UTSR1_ROR)) { /* * overrun does *not* affect the character * we read from the FIFO */ tty_insert_flip_char(tty, ch, flg); ch = 0; flg = TTY_OVERRUN; } #ifdef SUPPORT_SYSRQ sport->port.sysrq = 0; #endif goto error_return; } if (uart_handle_sysrq_char(&sport->port, ch, regs)) goto ignore_char; if ((status & port->ignore_status_mask & ~UTSR1_TO_SM(UTSR1_ROR)) == 0) tty_insert_flip_char(tty, ch, flg); if (status & ~port->ignore_status_mask & UTSR1_TO_SM(UTSR1_ROR)) tty_insert_flip_char(tty, 0, TTY_OVERRUN); ignore_char: status = UTSR1_TO_SM(UART_GET_UTSR1(sport)) | UTSR0_TO_SM(UART_GET_UTSR0(sport)); } tty_flip_buffer_push(tty); } static void sa1100_tx_chars(struct sa1100_port *sport) Loading Loading
drivers/serial/clps711x.c +27 −38 Original line number Diff line number Diff line Loading @@ -116,22 +116,7 @@ static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *re * Note that the error handling code is * out of the main execution path */ if (unlikely(ch & UART_ANY_ERR)) goto handle_error; if (uart_handle_sysrq_char(port, ch, regs)) goto ignore_char; error_return: tty_insert_flip_char(tty, ch, flg); ignore_char: status = clps_readl(SYSFLG(port)); } out: tty_flip_buffer_push(tty); return IRQ_HANDLED; handle_error: if (unlikely(ch & UART_ANY_ERR)) { if (ch & UARTDR_PARERR) port->icount.parity++; else if (ch & UARTDR_FRMERR) Loading @@ -139,11 +124,6 @@ static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *re if (ch & UARTDR_OVERR) port->icount.overrun++; if (ch & port->ignore_status_mask) { if (++ignored > 100) goto out; goto ignore_char; } ch &= port->read_status_mask; if (ch & UARTDR_PARERR) Loading @@ -151,19 +131,28 @@ static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *re else if (ch & UARTDR_FRMERR) flg = TTY_FRAME; if (ch & UARTDR_OVERR) { #ifdef SUPPORT_SYSRQ port->sysrq = 0; #endif } if (uart_handle_sysrq_char(port, ch, regs)) goto ignore_char; /* * CHECK: does overrun affect the current character? * ASSUMPTION: it does not. */ if ((ch & port->ignore_status_mask & ~RXSTAT_OVERRUN) == 0) tty_insert_flip_char(tty, ch, flg); ch = 0; flg = TTY_OVERRUN; if ((ch & ~port->ignore_status_mask & RXSTAT_OVERRUN) == 0) tty_insert_flip_char(tty, 0, TTY_OVERRUN); ignore_char: status = clps_readl(SYSFLG(port)); } #ifdef SUPPORT_SYSRQ port->sysrq = 0; #endif goto error_return; tty_flip_buffer_push(tty); return IRQ_HANDLED; } static irqreturn_t clps711xuart_int_tx(int irq, void *dev_id, struct pt_regs *regs) Loading
drivers/serial/sa1100.c +24 −41 Original line number Diff line number Diff line Loading @@ -214,23 +214,7 @@ sa1100_rx_chars(struct sa1100_port *sport, struct pt_regs *regs) * note that the error handling code is * out of the main execution path */ if (status & UTSR1_TO_SM(UTSR1_PRE | UTSR1_FRE | UTSR1_ROR)) goto handle_error; if (uart_handle_sysrq_char(&sport->port, ch, regs)) goto ignore_char; error_return: tty_insert_flip_char(tty, ch, flg); ignore_char: status = UTSR1_TO_SM(UART_GET_UTSR1(sport)) | UTSR0_TO_SM(UART_GET_UTSR0(sport)); } out: tty_flip_buffer_push(tty); return; handle_error: if (status & UTSR1_TO_SM(UTSR1_PRE | UTSR1_FRE | UTSR1_ROR)) { if (status & UTSR1_TO_SM(UTSR1_PRE)) sport->port.icount.parity++; else if (status & UTSR1_TO_SM(UTSR1_FRE)) Loading @@ -238,12 +222,6 @@ sa1100_rx_chars(struct sa1100_port *sport, struct pt_regs *regs) if (status & UTSR1_TO_SM(UTSR1_ROR)) sport->port.icount.overrun++; if (status & sport->port.ignore_status_mask) { if (++ignored > 100) goto out; goto ignore_char; } status &= sport->port.read_status_mask; if (status & UTSR1_TO_SM(UTSR1_PRE)) Loading @@ -251,19 +229,24 @@ sa1100_rx_chars(struct sa1100_port *sport, struct pt_regs *regs) else if (status & UTSR1_TO_SM(UTSR1_FRE)) flg = TTY_FRAME; if (status & UTSR1_TO_SM(UTSR1_ROR)) { /* * overrun does *not* affect the character * we read from the FIFO */ tty_insert_flip_char(tty, ch, flg); ch = 0; flg = TTY_OVERRUN; } #ifdef SUPPORT_SYSRQ sport->port.sysrq = 0; #endif goto error_return; } if (uart_handle_sysrq_char(&sport->port, ch, regs)) goto ignore_char; if ((status & port->ignore_status_mask & ~UTSR1_TO_SM(UTSR1_ROR)) == 0) tty_insert_flip_char(tty, ch, flg); if (status & ~port->ignore_status_mask & UTSR1_TO_SM(UTSR1_ROR)) tty_insert_flip_char(tty, 0, TTY_OVERRUN); ignore_char: status = UTSR1_TO_SM(UART_GET_UTSR1(sport)) | UTSR0_TO_SM(UART_GET_UTSR0(sport)); } tty_flip_buffer_push(tty); } static void sa1100_tx_chars(struct sa1100_port *sport) Loading