By this new field we distinguish a total length of the chain and the individual
length of each descriptor in the chain.

Signed-off-by: Andy Shevchenko <andriy.shevche...@linux.intel.com>
Acked-by: Viresh Kumar <viresh.ku...@linaro.org>
---
 drivers/dma/dw_dmac.c      |   12 ++++++------
 drivers/dma/dw_dmac_regs.h |    1 +
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/dma/dw_dmac.c b/drivers/dma/dw_dmac.c
index e4e4ff2..7b5a088 100644
--- a/drivers/dma/dw_dmac.c
+++ b/drivers/dma/dw_dmac.c
@@ -335,18 +335,18 @@ dwc_descriptor_complete(struct dw_dma_chan *dwc, struct 
dw_desc *desc,
                if (!(txd->flags & DMA_COMPL_SKIP_DEST_UNMAP)) {
                        if (txd->flags & DMA_COMPL_DEST_UNMAP_SINGLE)
                                dma_unmap_single(parent, desc->lli.dar,
-                                               desc->len, DMA_FROM_DEVICE);
+                                       desc->total_len, DMA_FROM_DEVICE);
                        else
                                dma_unmap_page(parent, desc->lli.dar,
-                                               desc->len, DMA_FROM_DEVICE);
+                                       desc->total_len, DMA_FROM_DEVICE);
                }
                if (!(txd->flags & DMA_COMPL_SKIP_SRC_UNMAP)) {
                        if (txd->flags & DMA_COMPL_SRC_UNMAP_SINGLE)
                                dma_unmap_single(parent, desc->lli.sar,
-                                               desc->len, DMA_TO_DEVICE);
+                                       desc->total_len, DMA_TO_DEVICE);
                        else
                                dma_unmap_page(parent, desc->lli.sar,
-                                               desc->len, DMA_TO_DEVICE);
+                                       desc->total_len, DMA_TO_DEVICE);
                }
        }
 
@@ -776,7 +776,7 @@ dwc_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, 
dma_addr_t src,
 
        prev->lli.llp = 0;
        first->txd.flags = flags;
-       first->len = len;
+       first->total_len = len;
 
        return &first->txd;
 
@@ -939,7 +939,7 @@ slave_sg_fromdev_fill_desc:
                prev->lli.ctllo |= DWC_CTLL_INT_EN;
 
        prev->lli.llp = 0;
-       first->len = total_len;
+       first->total_len = total_len;
 
        return &first->txd;
 
diff --git a/drivers/dma/dw_dmac_regs.h b/drivers/dma/dw_dmac_regs.h
index 13000d2..833b4cf 100644
--- a/drivers/dma/dw_dmac_regs.h
+++ b/drivers/dma/dw_dmac_regs.h
@@ -296,6 +296,7 @@ struct dw_desc {
        struct list_head                tx_list;
        struct dma_async_tx_descriptor  txd;
        size_t                          len;
+       size_t                          total_len;
 };
 
 #define to_dw_desc(h)  list_entry(h, struct dw_desc, desc_node)
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to