[02/11] atmel-mci: conform to DMA-API

Message ID AANLkTinTCjkbWaE=Z8W5pa00N2khYCL1dc3Y33-B0dqY@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 02/11] atmel-mci: conform to DMA-API
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>


Fixes the following:
- It is perfectly legal for the dma_map_sg() to return fewer
 entries than were passed in.
- Supply the returned numer of (possibly coalesced) entries to
 the device_pre_slave_sg() function.
- Use the proper original sg_len when unmapping the sglist
 in the error path.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/mmc/host/atmel-mci.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

               goto unmap_exit;
@@ -701,7 +700,7 @@ atmci_prepare_data_dma(struct atmel_mci *host,
struct mmc_data *data)

       return 0;
 unmap_exit:
-       dma_unmap_sg(chan->device->dev, data->sg, sglen, direction);
+       dma_unmap_sg(chan->device->dev, data->sg, data->sg_len, direction);
       return -ENOMEM;
 }

--
1.7.4

Patch

diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
index 045bdbb..df5a135 100644
--- a/drivers/mmc/host/atmel-mci.c
+++ b/drivers/mmc/host/atmel-mci.c
@@ -687,10 +687,9 @@  atmci_prepare_data_dma(struct atmel_mci *host,
struct mmc_data *data)

       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,
-                       data->sg, data->sg_len, direction,
+                       data->sg, sglen, direction,
                       DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
       if (!desc)