summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorChristian Lütke-Stetzkamp <christian@lkamp.de>2018-04-24 20:01:24 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-04-25 15:36:19 +0200
commitc302214c9d7d8c4f4f1ac82715ce952155355648 (patch)
tree94f205e596a6d1bd2e1d388c7b474d0c57ca5f20 /drivers
parent05e41c96a6deab303f8cf652a5ade253f6f1a2ca (diff)
staging: mt7621-mmc: Fix dma_map_sg may map to fewer entries
The dma_map_sg function may merge several sglist entries into one, the return value has to be saved to consider that. The data->sg_count field is the position, where it should be saved, like it is done in other mmc host drivers. Also the count of mapped entries is needed for the dma setup. Signed-off-by: Christian Lütke-Stetzkamp <christian@lkamp.de> Reviewed-by: NeilBrown <neil@brown.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/mt7621-mmc/sd.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/staging/mt7621-mmc/sd.c b/drivers/staging/mt7621-mmc/sd.c
index d464e2a321da..f11eb1fe3f6a 100644
--- a/drivers/staging/mt7621-mmc/sd.c
+++ b/drivers/staging/mt7621-mmc/sd.c
@@ -1423,8 +1423,10 @@ static int msdc_do_request(struct mmc_host *mmc, struct mmc_request *mrq)
goto done;
dir = read ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
- (void)dma_map_sg(mmc_dev(mmc), data->sg, data->sg_len, dir);
- msdc_dma_setup(host, &host->dma, data->sg, data->sg_len);
+ data->sg_count = dma_map_sg(mmc_dev(mmc), data->sg,
+ data->sg_len, dir);
+ msdc_dma_setup(host, &host->dma, data->sg,
+ data->sg_count);
/* then wait command done */
if (msdc_command_resp(host, cmd, 1, CMD_TIMEOUT) != 0)