diff options
| -rw-r--r-- | drivers/dma/dmaengine.c | 2 | ||||
| -rw-r--r-- | drivers/dma/mv_xor.c | 8 | ||||
| -rw-r--r-- | include/linux/dmaengine.h | 1 |
3 files changed, 6 insertions, 5 deletions
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c index a886713937fd..d5d30ed863ce 100644 --- a/drivers/dma/dmaengine.c +++ b/drivers/dma/dmaengine.c | |||
| @@ -1009,6 +1009,7 @@ static void dmaengine_unmap(struct kref *kref) | |||
| 1009 | dma_unmap_page(dev, unmap->addr[i], unmap->len, | 1009 | dma_unmap_page(dev, unmap->addr[i], unmap->len, |
| 1010 | DMA_BIDIRECTIONAL); | 1010 | DMA_BIDIRECTIONAL); |
| 1011 | } | 1011 | } |
| 1012 | cnt = unmap->map_cnt; | ||
| 1012 | mempool_free(unmap, __get_unmap_pool(cnt)->pool); | 1013 | mempool_free(unmap, __get_unmap_pool(cnt)->pool); |
| 1013 | } | 1014 | } |
| 1014 | 1015 | ||
| @@ -1074,6 +1075,7 @@ dmaengine_get_unmap_data(struct device *dev, int nr, gfp_t flags) | |||
| 1074 | memset(unmap, 0, sizeof(*unmap)); | 1075 | memset(unmap, 0, sizeof(*unmap)); |
| 1075 | kref_init(&unmap->kref); | 1076 | kref_init(&unmap->kref); |
| 1076 | unmap->dev = dev; | 1077 | unmap->dev = dev; |
| 1078 | unmap->map_cnt = nr; | ||
| 1077 | 1079 | ||
| 1078 | return unmap; | 1080 | return unmap; |
| 1079 | } | 1081 | } |
diff --git a/drivers/dma/mv_xor.c b/drivers/dma/mv_xor.c index 766b68ed505c..394cbc5c93e3 100644 --- a/drivers/dma/mv_xor.c +++ b/drivers/dma/mv_xor.c | |||
| @@ -191,12 +191,10 @@ static void mv_set_mode(struct mv_xor_chan *chan, | |||
| 191 | 191 | ||
| 192 | static void mv_chan_activate(struct mv_xor_chan *chan) | 192 | static void mv_chan_activate(struct mv_xor_chan *chan) |
| 193 | { | 193 | { |
| 194 | u32 activation; | ||
| 195 | |||
| 196 | dev_dbg(mv_chan_to_devp(chan), " activate chan.\n"); | 194 | dev_dbg(mv_chan_to_devp(chan), " activate chan.\n"); |
| 197 | activation = readl_relaxed(XOR_ACTIVATION(chan)); | 195 | |
| 198 | activation |= 0x1; | 196 | /* writel ensures all descriptors are flushed before activation */ |
| 199 | writel_relaxed(activation, XOR_ACTIVATION(chan)); | 197 | writel(BIT(0), XOR_ACTIVATION(chan)); |
| 200 | } | 198 | } |
| 201 | 199 | ||
| 202 | static char mv_chan_is_busy(struct mv_xor_chan *chan) | 200 | static char mv_chan_is_busy(struct mv_xor_chan *chan) |
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 8300fb87b84a..72cb0ddb9678 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
| @@ -429,6 +429,7 @@ typedef bool (*dma_filter_fn)(struct dma_chan *chan, void *filter_param); | |||
| 429 | typedef void (*dma_async_tx_callback)(void *dma_async_param); | 429 | typedef void (*dma_async_tx_callback)(void *dma_async_param); |
| 430 | 430 | ||
| 431 | struct dmaengine_unmap_data { | 431 | struct dmaengine_unmap_data { |
| 432 | u8 map_cnt; | ||
| 432 | u8 to_cnt; | 433 | u8 to_cnt; |
| 433 | u8 from_cnt; | 434 | u8 from_cnt; |
| 434 | u8 bidi_cnt; | 435 | u8 bidi_cnt; |
