mmc: atmel-mci: map DMA sglist on the DMA engine
authorLinus Walleij <linus.walleij@linaro.org>
Thu, 10 Feb 2011 15:08:06 +0000 (16:08 +0100)
committerChris Ball <cjb@laptop.org>
Tue, 15 Mar 2011 17:49:02 +0000 (13:49 -0400)
As established for the MMCI, it is proper to map the DMA buffers
on the DMA engine which is the one actually performing the DMA.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/atmel-mci.c

index ad2a7a032cdf02478a80cd87055abce9648e31ca..045bdbbe3720a3ad200763be003650931c740225 100644 (file)
@@ -578,7 +578,8 @@ static void atmci_dma_cleanup(struct atmel_mci *host)
        struct mmc_data                 *data = host->data;
 
        if (data)
-               dma_unmap_sg(&host->pdev->dev, data->sg, data->sg_len,
+               dma_unmap_sg(host->dma.chan->device->dev,
+                            data->sg, data->sg_len,
                             ((data->flags & MMC_DATA_WRITE)
                              ? DMA_TO_DEVICE : DMA_FROM_DEVICE));
 }
@@ -684,7 +685,8 @@ atmci_prepare_data_dma(struct atmel_mci *host, struct mmc_data *data)
        else
                direction = DMA_TO_DEVICE;
 
-       sglen = dma_map_sg(&host->pdev->dev, data->sg, data->sg_len, direction);
+       sglen = dma_map_sg(chan->device->dev, data->sg,
+                          data->sg_len, direction);
        if (sglen != data->sg_len)
                goto unmap_exit;
        desc = chan->device->device_prep_slave_sg(chan,
@@ -699,7 +701,7 @@ atmci_prepare_data_dma(struct atmel_mci *host, struct mmc_data *data)
 
        return 0;
 unmap_exit:
-       dma_unmap_sg(&host->pdev->dev, data->sg, sglen, direction);
+       dma_unmap_sg(chan->device->dev, data->sg, sglen, direction);
        return -ENOMEM;
 }