On Sat, 2016-04-09 at 22:14 -0700, Peter Hurley wrote: > Using fake IIR values to perform rx dma operations unnecessarily > conflates separate operations, stopping in-progress dma with starting > new dma. > > Introduce serial8250_rx_dma_flush() to handle stopping in-progress dma > [omap8250 already has equivalent omap_8250_rx_dma_flush()]. > Replace rx_dma(UART_IIR_RX_TIMEOUT) with the equivalent > *_rx_dma_flush(), > and rx_dma(0) with the equivalent *_rx_dma(). Handle IIR steering > in the irq handler with handle_rx_dma() helper. > One minor below. > +void serial8250_rx_dma_flush(struct uart_8250_port *p) > +{ > + struct uart_8250_dma *dma = p->dma; > + > + if (dma->rx_running) { if (!dma->rx_running) return; ? > + dmaengine_pause(dma->rxchan); > + __dma_rx_complete(p); > + dmaengine_terminate_all(dma->rxchan); > + } > +} -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Intel Finland Oy -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html