serial: sh-sci: fix hardware RX trigger level setting

1. Do not set the RX trigger level for software timeout devices on reset;
there is no timeout by default, and data will rot.
2. Do set the RX trigger level for hardware timeout devices when set
via sysfs attribute.

Fixes SCIFA-type serial consoles.

Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Ulrich Hecht 2017-02-08 18:31:14 +01:00 committed by Greg Kroah-Hartman
parent 6a5f0e2f93
commit 90afa5255f
1 changed files with 9 additions and 2 deletions

View File

@ -1076,8 +1076,11 @@ static ssize_t rx_trigger_store(struct device *dev,
if (kstrtol(buf, 0, &r) == -EINVAL) if (kstrtol(buf, 0, &r) == -EINVAL)
return -EINVAL; return -EINVAL;
sci->rx_trigger = scif_set_rtrg(port, r); sci->rx_trigger = scif_set_rtrg(port, r);
scif_set_rtrg(port, 1); if (port->type == PORT_SCIFA || port->type == PORT_SCIFB)
scif_set_rtrg(port, 1);
return count; return count;
} }
@ -2179,7 +2182,11 @@ static void sci_reset(struct uart_port *port)
setup_timer(&s->rx_fifo_timer, rx_fifo_timer_fn, setup_timer(&s->rx_fifo_timer, rx_fifo_timer_fn,
(unsigned long)s); (unsigned long)s);
} else { } else {
scif_set_rtrg(port, s->rx_trigger); if (port->type == PORT_SCIFA ||
port->type == PORT_SCIFB)
scif_set_rtrg(port, 1);
else
scif_set_rtrg(port, s->rx_trigger);
} }
} }
} }