Skip to content

Commit

Permalink
mmc: bcm2835: Properly handle dmaengine_prep_slave_sg
Browse files Browse the repository at this point in the history
In case dmaengine_prep_slave_sg fails we need to call dma_unmap_sg.

Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Acked-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
  • Loading branch information
Stefan Wahren authored and Ulf Hansson committed Dec 17, 2018
1 parent 6dc6f26 commit 2f5da67
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions drivers/mmc/host/bcm2835.c
Original file line number Diff line number Diff line change
Expand Up @@ -507,13 +507,16 @@ void bcm2835_prepare_dma(struct bcm2835_host *host, struct mmc_data *data)
desc = dmaengine_prep_slave_sg(dma_chan, data->sg, sg_len, dir_slave,
DMA_PREP_INTERRUPT | DMA_CTRL_ACK);

if (desc) {
desc->callback = bcm2835_dma_complete;
desc->callback_param = host;
host->dma_desc = desc;
host->dma_chan = dma_chan;
host->dma_dir = dir_data;
if (!desc) {
dma_unmap_sg(dma_chan->device->dev, data->sg, sg_len, dir_data);
return;
}

desc->callback = bcm2835_dma_complete;
desc->callback_param = host;
host->dma_desc = desc;
host->dma_chan = dma_chan;
host->dma_dir = dir_data;
}

static void bcm2835_start_dma(struct bcm2835_host *host)
Expand Down

0 comments on commit 2f5da67

Please sign in to comment.