[01/11] atmel-mci: map DMA sglist on the DMA engine

Message ID AANLkTi=qidcsKZO1pYc4SW15YQf28BNFryrNpkh8=Nc0@mail.gmail.com
State Accepted, archived
Headers show

Commit Message

Linus Walleij March 4, 2011, 10:25 a.m.
---------- Forwarded message ----------
From: Linus Walleij <linus.walleij@linaro.org>
Date: Thu, Feb 10, 2011 at 4:08 PM
Subject: [PATCH 01/11] atmel-mci: map DMA sglist on the DMA engine
To: linux-mmc@vger.kernel.org, Chris Ball <cjb@laptop.org>
Cc: Dan Williams <dan.j.williams@intel.com>, Nicolas Ferre
<nicolas.ferre@atmel.com>, Linus Walleij <linus.walleij@linaro.org>


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>
---
 drivers/mmc/host/atmel-mci.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

       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;
 }

--
1.7.4

Patch

diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
index ad2a7a0..045bdbb 100644
--- a/drivers/mmc/host/atmel-mci.c
+++ b/drivers/mmc/host/atmel-mci.c
@@ -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;