OSDN Git Service
(root)
/
uclinux-h8
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
0661cef
)
dmaengine: ti: k3-udma: Fix the TR initialization for prep_slave_sg
author
Peter Ujfalusi
<peter.ujfalusi@ti.com>
Mon, 24 Aug 2020 12:01:08 +0000
(15:01 +0300)
committer
Vinod Koul
<vkoul@kernel.org>
Tue, 25 Aug 2020 10:23:07 +0000
(15:53 +0530)
The TR which needs to be initialized for the next sg entry is indexed by
tr_idx and not by the running i counter.
In case any sub element in the SG needs more than one TR, the code would
corrupt an already configured TR.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Link:
https://lore.kernel.org/r/20200824120108.9178-1-peter.ujfalusi@ti.com
Fixes:
6cf668a4ef829
("dmaengine: ti: k3-udma: Use the TR counter helper for slave_sg and cyclic")
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/ti/k3-udma.c
patch
|
blob
|
history
diff --git
a/drivers/dma/ti/k3-udma.c
b/drivers/dma/ti/k3-udma.c
index
c14e6cb
..
30cb514
100644
(file)
--- a/
drivers/dma/ti/k3-udma.c
+++ b/
drivers/dma/ti/k3-udma.c
@@
-2059,9
+2059,9
@@
udma_prep_slave_sg_tr(struct udma_chan *uc, struct scatterlist *sgl,
return NULL;
}
- cppi5_tr_init(&tr_req[
i].flags, CPPI5_TR_TYPE1, false
, false,
- CPPI5_TR_EVENT_SIZE_COMPLETION, 0);
- cppi5_tr_csf_set(&tr_req[
i
].flags, CPPI5_TR_CSF_SUPR_EVT);
+ cppi5_tr_init(&tr_req[
tr_idx].flags, CPPI5_TR_TYPE1
, false,
+
false,
CPPI5_TR_EVENT_SIZE_COMPLETION, 0);
+ cppi5_tr_csf_set(&tr_req[
tr_idx
].flags, CPPI5_TR_CSF_SUPR_EVT);
tr_req[tr_idx].addr = sg_addr;
tr_req[tr_idx].icnt0 = tr0_cnt0;