Hello! On 2/2/2017 8:10 PM, Ulrich Hecht wrote:
Implements support for FIFO fill thresholds greater than one with software timeout. This mechanism is not possible (or at least not useful) on SCIF family hardware other than SCIFA and SCIFB because they do not support turning off the DR hardware timeout interrupt separately from the RI interrupt. Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@xxxxxxxxx>
[...]
@@ -1473,9 +1494,9 @@ static inline void sci_free_dma(struct uart_port *port) static irqreturn_t sci_rx_interrupt(int irq, void *ptr) { -#ifdef CONFIG_SERIAL_SH_SCI_DMA struct uart_port *port = ptr; struct sci_port *s = to_sci_port(port); +#ifdef CONFIG_SERIAL_SH_SCI_DMA
Hm, I'd expect that #ifdef moved to just before the next statement...
if (s->chan_rx) { u16 scr = serial_port_in(port, SCSCR);
[...]
@@ -2086,14 +2115,20 @@ static void sci_reset(struct uart_port *port) serial_port_out(port, SCLSR, status); } - if (s->rx_trigger > 1) - scif_set_rtrg(port, s->rx_trigger); + if (s->rx_trigger > 1) { + if (s->rx_fifo_timeout) { + scif_set_rtrg(port, 1); + setup_timer(&s->rx_fifo_timer, rx_fifo_timer_fn, + (unsigned long)s); + } else + scif_set_rtrg(port, s->rx_trigger);
CodingStyle: Need {} on the *else* branch as well since *if* uses {}. [...] MBR, Sergei