[PATCH v4] dma: ti: k3-udma: Use ring_idx to pair k3 nav rings

Use ring_idx to pair rings. ring_idx will be same as tx flow_id for all non-negative flow_ids. For negative flow_ids, ring_idx will be tchan->id added with bchan_cnt.
Signed-off-by: MD Danish Anwar danishanwar@ti.com --- Changes from v3 to v4: *) No functional change. Splitted the patch out of the series as suggested by Nishant.
v3: https://lore.kernel.org/all/20240124064930.1787929-2-danishanwar@ti.com/
drivers/dma/ti/k3-udma.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c index 8a62d63dfe..eea9ec9659 100644 --- a/drivers/dma/ti/k3-udma.c +++ b/drivers/dma/ti/k3-udma.c @@ -876,13 +876,20 @@ static int udma_alloc_tx_resources(struct udma_chan *uc) { struct k3_nav_ring_cfg ring_cfg; struct udma_dev *ud = uc->ud; - int ret; + struct udma_tchan *tchan; + int ring_idx, ret;
ret = udma_get_tchan(uc); if (ret) return ret;
- ret = k3_nav_ringacc_request_rings_pair(ud->ringacc, uc->tchan->id, -1, + tchan = uc->tchan; + if (tchan->tflow_id >= 0) + ring_idx = tchan->tflow_id; + else + ring_idx = ud->bchan_cnt + tchan->id; + + ret = k3_nav_ringacc_request_rings_pair(ud->ringacc, ring_idx, -1, &uc->tchan->t_ring, &uc->tchan->tc_ring); if (ret) {

On 1/30/2024 11:48 AM, MD Danish Anwar wrote:
Use ring_idx to pair rings. ring_idx will be same as tx flow_id for all non-negative flow_ids. For negative flow_ids, ring_idx will be tchan->id added with bchan_cnt.
Signed-off-by: MD Danish Anwar danishanwar@ti.com
Changes from v3 to v4: *) No functional change. Splitted the patch out of the series as suggested by Nishant.
v3: https://lore.kernel.org/all/20240124064930.1787929-2-danishanwar@ti.com/
drivers/dma/ti/k3-udma.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c index 8a62d63dfe..eea9ec9659 100644 --- a/drivers/dma/ti/k3-udma.c +++ b/drivers/dma/ti/k3-udma.c @@ -876,13 +876,20 @@ static int udma_alloc_tx_resources(struct udma_chan *uc) { struct k3_nav_ring_cfg ring_cfg; struct udma_dev *ud = uc->ud;
- int ret;
struct udma_tchan *tchan;
int ring_idx, ret;
ret = udma_get_tchan(uc); if (ret) return ret;
- ret = k3_nav_ringacc_request_rings_pair(ud->ringacc, uc->tchan->id, -1,
- tchan = uc->tchan;
- if (tchan->tflow_id >= 0)
ring_idx = tchan->tflow_id;
- else
ring_idx = ud->bchan_cnt + tchan->id;
- ret = k3_nav_ringacc_request_rings_pair(ud->ringacc, ring_idx, -1, &uc->tchan->t_ring, &uc->tchan->tc_ring); if (ret) {
I see this change present in upstream linux kernel as well. You could consider providing the link to kernel if such changes are already merged there.
Reviewed-by: Ravi Gunasekaran r-gunasekaran@ti.com

On 2/2/2024 10:31 AM, Ravi Gunasekaran wrote:
On 1/30/2024 11:48 AM, MD Danish Anwar wrote:
Use ring_idx to pair rings. ring_idx will be same as tx flow_id for all non-negative flow_ids. For negative flow_ids, ring_idx will be tchan->id added with bchan_cnt.
Signed-off-by: MD Danish Anwar danishanwar@ti.com
Changes from v3 to v4: *) No functional change. Splitted the patch out of the series as suggested by Nishant.
v3: https://lore.kernel.org/all/20240124064930.1787929-2-danishanwar@ti.com/
drivers/dma/ti/k3-udma.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c index 8a62d63dfe..eea9ec9659 100644 --- a/drivers/dma/ti/k3-udma.c +++ b/drivers/dma/ti/k3-udma.c @@ -876,13 +876,20 @@ static int udma_alloc_tx_resources(struct udma_chan *uc) { struct k3_nav_ring_cfg ring_cfg; struct udma_dev *ud = uc->ud;
- int ret;
struct udma_tchan *tchan;
int ring_idx, ret;
ret = udma_get_tchan(uc); if (ret) return ret;
- ret = k3_nav_ringacc_request_rings_pair(ud->ringacc, uc->tchan->id, -1,
- tchan = uc->tchan;
- if (tchan->tflow_id >= 0)
ring_idx = tchan->tflow_id;
- else
ring_idx = ud->bchan_cnt + tchan->id;
- ret = k3_nav_ringacc_request_rings_pair(ud->ringacc, ring_idx, -1, &uc->tchan->t_ring, &uc->tchan->tc_ring); if (ret) {
I see this change present in upstream linux kernel as well. You could consider providing the link to kernel if such changes are already merged there.
Sure Ravi,
Link to upstream kernel code for the same [1]. Upstream Commit: d2abc982333c02f9e1ff1c6b3782174f5b7662d7
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/driv...
Reviewed-by: Ravi Gunasekaran r-gunasekaran@ti.com

On Tue, Jan 30, 2024 at 11:48:04AM +0530, MD Danish Anwar wrote:
Use ring_idx to pair rings. ring_idx will be same as tx flow_id for all non-negative flow_ids. For negative flow_ids, ring_idx will be tchan->id added with bchan_cnt.
Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/driv... Signed-off-by: MD Danish Anwar danishanwar@ti.com Reviewed-by: Ravi Gunasekaran r-gunasekaran@ti.com
Applied to u-boot/master, thanks!
participants (4)
-
Anwar, Md Danish
-
MD Danish Anwar
-
Ravi Gunasekaran
-
Tom Rini