mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 04:56:13 +02:00
serial: 8250: 8250_omap: Do not start RX DMA on THRI interrupt
commitc6bb057418upstream. Starting RX DMA on THRI interrupt is too early because TX may not have finished yet. This change is inspired by commit90b8596ac4("serial: 8250: Prevent starting up DMA Rx on THRI interrupt") and fixes DMA issues I had with an AM62 SoC that is using the 8250 OMAP variant. Cc: stable@vger.kernel.org Fixes:c26389f998("serial: 8250: 8250_omap: Add DMA support for UARTs on K3 SoCs") Signed-off-by: Ronald Wahl <ronald.wahl@raritan.com> Reviewed-by: Vignesh Raghavendra <vigneshr@ti.com> Link: https://lore.kernel.org/r/20231101171431.16495-1-rwahl@gmx.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
70dc9a482f
commit
a2c0b05a8c
|
|
@ -1282,10 +1282,12 @@ static int omap_8250_dma_handle_irq(struct uart_port *port)
|
|||
|
||||
status = serial_port_in(port, UART_LSR);
|
||||
|
||||
if (priv->habit & UART_HAS_EFR2)
|
||||
am654_8250_handle_rx_dma(up, iir, status);
|
||||
else
|
||||
status = omap_8250_handle_rx_dma(up, iir, status);
|
||||
if ((iir & 0x3f) != UART_IIR_THRI) {
|
||||
if (priv->habit & UART_HAS_EFR2)
|
||||
am654_8250_handle_rx_dma(up, iir, status);
|
||||
else
|
||||
status = omap_8250_handle_rx_dma(up, iir, status);
|
||||
}
|
||||
|
||||
serial8250_modem_status(up);
|
||||
if (status & UART_LSR_THRE && up->dma->tx_err) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user