]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
tty: serial: atmel: Call dma_async_issue_pending()
authorTudor Ambarus <tudor.ambarus@microchip.com>
Thu, 25 Nov 2021 09:00:18 +0000 (11:00 +0200)
committerStefan Bader <stefan.bader@canonical.com>
Mon, 7 Mar 2022 15:35:33 +0000 (16:35 +0100)
BugLink: https://bugs.launchpad.net/bugs/1960566
[ Upstream commit 4f4b9b5895614eb2e2b5f4cab7858f44bd113e1b ]

The driver wrongly assummed that tx_submit() will start the transfer,
which is not the case, now that the at_xdmac driver is fixed. tx_submit
is supposed to push the current transaction descriptor to a pending queue,
waiting for issue_pending to be called. issue_pending must start the
transfer, not tx_submit.

Fixes: 34df42f59a60 ("serial: at91: add rx dma support")
Fixes: 08f738be88bb ("serial: at91: add tx dma support")
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Link: https://lore.kernel.org/r/20211125090028.786832-4-tudor.ambarus@microchip.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/tty/serial/atmel_serial.c

index da076493b336a65a6f0115dc9aecc2d3c504f51c..3b2c25bd2e06b4a1eff9bf5cf6807f36ecc1c22a 100644 (file)
@@ -1007,6 +1007,8 @@ static void atmel_tx_dma(struct uart_port *port)
                                atmel_port->cookie_tx);
                        return;
                }
+
+               dma_async_issue_pending(chan);
        }
 
        if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
@@ -1273,6 +1275,8 @@ static int atmel_prepare_rx_dma(struct uart_port *port)
                goto chan_err;
        }
 
+       dma_async_issue_pending(atmel_port->chan_rx);
+
        return 0;
 
 chan_err: