mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 22:02:02 +00:00
serial: 8250: 8250_omap: Do not start RX DMA on THRI interrupt
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
98b1cc82c4
commit
c6bb057418
1 changed files with 6 additions and 4 deletions
|
@ -1298,10 +1298,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 a new issue