serial: sh-sci: mask SCTFDR/RFDR according to fifosize
Current mask 0xff to SCTFDR/RFDR damages SCIFB, because the registers on SCIFB have 9-bit data (0 to 256). This patch changes the mask according to port->fifosize. Though I'm not sure if the mask is really needed (I don't know if there are variants which have non-zero upper bits), it is safer. Signed-off-by: Takashi Yoshii <takashi.yoshii.zj@renesas.com> Signed-off-by: Shinya Kuribayashi <shinya.kuribayashi.px@renesas.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
9d482cc353
Коммит
63f7ad115e
|
@ -485,7 +485,7 @@ static int sci_txfill(struct uart_port *port)
|
|||
|
||||
reg = sci_getreg(port, SCTFDR);
|
||||
if (reg->size)
|
||||
return serial_port_in(port, SCTFDR) & 0xff;
|
||||
return serial_port_in(port, SCTFDR) & ((port->fifosize << 1) - 1);
|
||||
|
||||
reg = sci_getreg(port, SCFDR);
|
||||
if (reg->size)
|
||||
|
@ -505,7 +505,7 @@ static int sci_rxfill(struct uart_port *port)
|
|||
|
||||
reg = sci_getreg(port, SCRFDR);
|
||||
if (reg->size)
|
||||
return serial_port_in(port, SCRFDR) & 0xff;
|
||||
return serial_port_in(port, SCRFDR) & ((port->fifosize << 1) - 1);
|
||||
|
||||
reg = sci_getreg(port, SCFDR);
|
||||
if (reg->size)
|
||||
|
|
Загрузка…
Ссылка в новой задаче