serial: mxs-auart: unmap the scatter list before we copy the data
authorHuang Shijie <b32955@freescale.com>
Thu, 22 Nov 2012 07:06:30 +0000 (15:06 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 26 Nov 2012 23:38:44 +0000 (15:38 -0800)
We should first unmap the DMA scatter list for receiving data, and
then copy the data from the DMA buffer.

The old code misses unmap the scatter list for RX. This patch fixes it.

Signed-off-by: Huang Shijie <b32955@freescale.com>
Tested-by: Lauri Hintsala <lauri.hintsala@bluegiga.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/mxs-auart.c

index f56d6b92cf3815c8b8244e4d2ea4c262a7cfdee6..6db23b035efe0766dcc99e8bddb0a301dd458217 100644 (file)
@@ -461,6 +461,8 @@ static void dma_rx_callback(void *arg)
        int count;
        u32 stat;
 
+       dma_unmap_sg(s->dev, &s->rx_sgl, 1, DMA_FROM_DEVICE);
+
        stat = readl(s->port.membase + AUART_STAT);
        stat &= ~(AUART_STAT_OERR | AUART_STAT_BERR |
                        AUART_STAT_PERR | AUART_STAT_FERR);