diff options
Diffstat (limited to 'drivers/tty/serial/sh-sci.c')
| -rw-r--r-- | drivers/tty/serial/sh-sci.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index 538b2f991609..62bb62b82cbe 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -1014,16 +1014,18 @@ static int sci_handle_fifo_overrun(struct uart_port *port)  	struct sci_port *s = to_sci_port(port);  	const struct plat_sci_reg *reg;  	int copied = 0; -	u16 status; +	u32 status; -	reg = sci_getreg(port, s->params->overrun_reg); -	if (!reg->size) -		return 0; +	if (s->type != SCI_PORT_RSCI) { +		reg = sci_getreg(port, s->params->overrun_reg); +		if (!reg->size) +			return 0; +	} -	status = sci_serial_in(port, s->params->overrun_reg); +	status = s->ops->read_reg(port, s->params->overrun_reg);  	if (status & s->params->overrun_mask) {  		status &= ~s->params->overrun_mask; -		sci_serial_out(port, s->params->overrun_reg, status); +		s->ops->write_reg(port, s->params->overrun_reg, status);  		port->icount.overrun++;  | 
