diff options
author | Peter Ujfalusi <peter.ujfalusi@ti.com> | 2020-08-24 14:01:08 +0200 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2020-08-25 12:23:07 +0200 |
commit | 33ebffa105990c43bf336cabe26c77384f59fe70 (patch) | |
tree | 3e709e185b1b4e77b6125d0f1c2c89e675c101a9 /drivers/dma/ti/k3-udma.c | |
parent | dmaengine: pl330: Fix burst length if burst size is smaller than bus width (diff) | |
download | linux-33ebffa105990c43bf336cabe26c77384f59fe70.tar.xz linux-33ebffa105990c43bf336cabe26c77384f59fe70.zip |
dmaengine: ti: k3-udma: Fix the TR initialization for prep_slave_sg
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>
Diffstat (limited to 'drivers/dma/ti/k3-udma.c')
-rw-r--r-- | drivers/dma/ti/k3-udma.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c index c14e6cb105cd..30cb514cee54 100644 --- 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; |