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:
parent
6a5f0e2f93
commit
90afa5255f
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue