aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/dma/amba-pl08x.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c
index be9a1c718f9a..e5930d512b00 100644
--- a/drivers/dma/amba-pl08x.c
+++ b/drivers/dma/amba-pl08x.c
@@ -604,23 +604,17 @@ static int pl08x_fill_llis_for_desc(struct pl08x_driver_data *pl08x,
604 bd.srcbus.buswidth = bd.srcbus.maxwidth; 604 bd.srcbus.buswidth = bd.srcbus.maxwidth;
605 bd.dstbus.buswidth = bd.dstbus.maxwidth; 605 bd.dstbus.buswidth = bd.dstbus.maxwidth;
606 606
607 /*
608 * Bytes transferred == tsize * MIN(buswidths), not max(buswidths)
609 */
610 max_bytes_per_lli = min(bd.srcbus.buswidth, bd.dstbus.buswidth) *
611 PL080_CONTROL_TRANSFER_SIZE_MASK;
612
613 /* We need to count this down to zero */ 607 /* We need to count this down to zero */
614 bd.remainder = txd->len; 608 bd.remainder = txd->len;
615 609
616 pl08x_choose_master_bus(&bd, &mbus, &sbus, cctl); 610 pl08x_choose_master_bus(&bd, &mbus, &sbus, cctl);
617 611
618 dev_vdbg(&pl08x->adev->dev, "src=0x%08x%s/%u dst=0x%08x%s/%u len=%zu llimax=%zu\n", 612 dev_vdbg(&pl08x->adev->dev, "src=0x%08x%s/%u dst=0x%08x%s/%u len=%zu\n",
619 bd.srcbus.addr, cctl & PL080_CONTROL_SRC_INCR ? "+" : "", 613 bd.srcbus.addr, cctl & PL080_CONTROL_SRC_INCR ? "+" : "",
620 bd.srcbus.buswidth, 614 bd.srcbus.buswidth,
621 bd.dstbus.addr, cctl & PL080_CONTROL_DST_INCR ? "+" : "", 615 bd.dstbus.addr, cctl & PL080_CONTROL_DST_INCR ? "+" : "",
622 bd.dstbus.buswidth, 616 bd.dstbus.buswidth,
623 bd.remainder, max_bytes_per_lli); 617 bd.remainder);
624 dev_vdbg(&pl08x->adev->dev, "mbus=%s sbus=%s\n", 618 dev_vdbg(&pl08x->adev->dev, "mbus=%s sbus=%s\n",
625 mbus == &bd.srcbus ? "src" : "dst", 619 mbus == &bd.srcbus ? "src" : "dst",
626 sbus == &bd.srcbus ? "src" : "dst"); 620 sbus == &bd.srcbus ? "src" : "dst");
@@ -660,6 +654,10 @@ static int pl08x_fill_llis_for_desc(struct pl08x_driver_data *pl08x,
660 sbus->buswidth = 1; 654 sbus->buswidth = 1;
661 } 655 }
662 656
657 /* Bytes transferred = tsize * src width, not MIN(buswidths) */
658 max_bytes_per_lli = bd.srcbus.buswidth *
659 PL080_CONTROL_TRANSFER_SIZE_MASK;
660
663 /* 661 /*
664 * Make largest possible LLIs until less than one bus 662 * Make largest possible LLIs until less than one bus
665 * width left 663 * width left