Commit 60f1df5d authored by Sascha Hauer's avatar Sascha Hauer

Merge branch 'dmaengine-shawn' into dmaengine

parents 2335d338 341b9419
...@@ -450,7 +450,7 @@ static void sdma_handle_channel_loop(struct sdma_channel *sdmac) ...@@ -450,7 +450,7 @@ static void sdma_handle_channel_loop(struct sdma_channel *sdmac)
if (bd->mode.status & BD_RROR) if (bd->mode.status & BD_RROR)
sdmac->status = DMA_ERROR; sdmac->status = DMA_ERROR;
else else
sdmac->status = DMA_SUCCESS; sdmac->status = DMA_IN_PROGRESS;
bd->mode.status |= BD_DONE; bd->mode.status |= BD_DONE;
sdmac->buf_tail++; sdmac->buf_tail++;
...@@ -942,15 +942,12 @@ static struct dma_async_tx_descriptor *sdma_prep_slave_sg( ...@@ -942,15 +942,12 @@ static struct dma_async_tx_descriptor *sdma_prep_slave_sg(
param = BD_DONE | BD_EXTD | BD_CONT; param = BD_DONE | BD_EXTD | BD_CONT;
if (sdmac->flags & IMX_DMA_SG_LOOP) { if (i + 1 == sg_len) {
param |= BD_INTR; param |= BD_INTR;
if (i + 1 == sg_len) param |= BD_LAST;
param |= BD_WRAP; param &= ~BD_CONT;
} }
if (i + 1 == sg_len)
param |= BD_INTR;
dev_dbg(sdma->dev, "entry %d: count: %d dma: 0x%08x %s%s\n", dev_dbg(sdma->dev, "entry %d: count: %d dma: 0x%08x %s%s\n",
i, count, sg->dma_address, i, count, sg->dma_address,
param & BD_WRAP ? "wrap" : "", param & BD_WRAP ? "wrap" : "",
...@@ -964,6 +961,7 @@ static struct dma_async_tx_descriptor *sdma_prep_slave_sg( ...@@ -964,6 +961,7 @@ static struct dma_async_tx_descriptor *sdma_prep_slave_sg(
return &sdmac->desc; return &sdmac->desc;
err_out: err_out:
sdmac->status = DMA_ERROR;
return NULL; return NULL;
} }
...@@ -1077,14 +1075,12 @@ static enum dma_status sdma_tx_status(struct dma_chan *chan, ...@@ -1077,14 +1075,12 @@ static enum dma_status sdma_tx_status(struct dma_chan *chan,
{ {
struct sdma_channel *sdmac = to_sdma_chan(chan); struct sdma_channel *sdmac = to_sdma_chan(chan);
dma_cookie_t last_used; dma_cookie_t last_used;
enum dma_status ret;
last_used = chan->cookie; last_used = chan->cookie;
ret = dma_async_is_complete(cookie, sdmac->last_completed, last_used);
dma_set_tx_state(txstate, sdmac->last_completed, last_used, 0); dma_set_tx_state(txstate, sdmac->last_completed, last_used, 0);
return ret; return sdmac->status;
} }
static void sdma_issue_pending(struct dma_chan *chan) static void sdma_issue_pending(struct dma_chan *chan)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment