dw_dmac: introduce total_len field in struct dw_desc
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.shevchenko@linux.intel.com> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
parent
fdf475fa40
commit
30d38a3286
@ -333,18 +333,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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -774,7 +774,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;
|
||||
|
||||
@ -937,7 +937,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;
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user