2021-01-12 14:16:53

by Vignesh Raghavendra

[permalink] [raw]
Subject: [PATCH] dmaengine: ti: k3-udma: Set rflow count for BCDMA split channels

BCDMA RX channels have one flow per channel, therefore set the rflow_cnt
to rchan_cnt.

Without this patch, request for BCDMA RX channel allocation fails as
rflow_cnt is 0 thus fails to reserve a rflow for the channel.

Fixes: 8844898028d4 ("dmaengine: ti: k3-udma: Add support for BCDMA channel TPL handling")
Signed-off-by: Vignesh Raghavendra <[email protected]>
---
drivers/dma/ti/k3-udma.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c
index 298460438bb4..a1af59d901be 100644
--- a/drivers/dma/ti/k3-udma.c
+++ b/drivers/dma/ti/k3-udma.c
@@ -4305,6 +4305,7 @@ static int udma_get_mmrs(struct platform_device *pdev, struct udma_dev *ud)
ud->bchan_cnt = BCDMA_CAP2_BCHAN_CNT(cap2);
ud->tchan_cnt = BCDMA_CAP2_TCHAN_CNT(cap2);
ud->rchan_cnt = BCDMA_CAP2_RCHAN_CNT(cap2);
+ ud->rflow_cnt = ud->rchan_cnt;
break;
case DMA_TYPE_PKTDMA:
cap4 = udma_read(ud->mmrs[MMR_GCFG], 0x30);
--
2.30.0


2021-01-12 18:32:36

by Péter Ujfalusi

[permalink] [raw]
Subject: Re: [PATCH] dmaengine: ti: k3-udma: Set rflow count for BCDMA split channels

Hi Vignesh,

On 1/12/21 4:14 PM, Vignesh Raghavendra wrote:
> BCDMA RX channels have one flow per channel, therefore set the rflow_cnt
> to rchan_cnt.
>
> Without this patch, request for BCDMA RX channel allocation fails as
> rflow_cnt is 0 thus fails to reserve a rflow for the channel.

Good catch, thank you!

Acked-by: Peter Ujfalusi <[email protected]>

>
> Fixes: 8844898028d4 ("dmaengine: ti: k3-udma: Add support for BCDMA channel TPL handling")
> Signed-off-by: Vignesh Raghavendra <[email protected]>
> ---
> drivers/dma/ti/k3-udma.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c
> index 298460438bb4..a1af59d901be 100644
> --- a/drivers/dma/ti/k3-udma.c
> +++ b/drivers/dma/ti/k3-udma.c
> @@ -4305,6 +4305,7 @@ static int udma_get_mmrs(struct platform_device *pdev, struct udma_dev *ud)
> ud->bchan_cnt = BCDMA_CAP2_BCHAN_CNT(cap2);
> ud->tchan_cnt = BCDMA_CAP2_TCHAN_CNT(cap2);
> ud->rchan_cnt = BCDMA_CAP2_RCHAN_CNT(cap2);
> + ud->rflow_cnt = ud->rchan_cnt;
> break;
> case DMA_TYPE_PKTDMA:
> cap4 = udma_read(ud->mmrs[MMR_GCFG], 0x30);
>

--
Péter