tty: 8250_dma: use dmaengine_prep_slave_sg()
authorJiri Slaby (SUSE) <jirislaby@kernel.org>
Fri, 5 Apr 2024 06:08:20 +0000 (08:08 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 9 Apr 2024 13:28:03 +0000 (15:28 +0200)
This is a preparatory for the serial-to-kfifo switch. kfifo understands
only scatter-gatter approach, so switch to that.

No functional change intended, it's just dmaengine_prep_slave_single()
inline expanded.

Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Link: https://lore.kernel.org/r/20240405060826.2521-10-jirislaby@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_dma.c

index 8b30ca8fdd3fe2ac38f643e95f3d3c2f41c2e249..8b2c3f478b1782649aa2780e65a768b0902b6e5e 100644 (file)
@@ -89,6 +89,7 @@ int serial8250_tx_dma(struct uart_8250_port *p)
        struct circ_buf                 *xmit = &p->port.state->xmit;
        struct dma_async_tx_descriptor  *desc;
        struct uart_port                *up = &p->port;
+       struct scatterlist sg;
        int ret;
 
        if (dma->tx_running) {
@@ -111,10 +112,13 @@ int serial8250_tx_dma(struct uart_8250_port *p)
 
        serial8250_do_prepare_tx_dma(p);
 
-       desc = dmaengine_prep_slave_single(dma->txchan,
-                                          dma->tx_addr + xmit->tail,
-                                          dma->tx_size, DMA_MEM_TO_DEV,
-                                          DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
+       sg_init_table(&sg, 1);
+       sg_dma_address(&sg) = dma->tx_addr + xmit->tail;
+       sg_dma_len(&sg) = dma->tx_size;
+
+       desc = dmaengine_prep_slave_sg(dma->txchan, &sg, 1,
+                                      DMA_MEM_TO_DEV,
+                                      DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
        if (!desc) {
                ret = -EBUSY;
                goto err;