Skip to content

Commit 566beb3

Browse files
dmaengine: ti: k3-udma: Enable second resource range for BCDMA and PKTDMA
The SoC DMA resources for UDMA, BCDMA and PKTDMA can be described via a combination of up to two resource ranges. The first resource range handles the default partitioning wherein all resources belonging to that range are allocated to a single entity and form a continuous range. For use-cases where the resources are shared across multiple entities and require to be described via discontinuous ranges, a second resource range is required. Currently, udma_setup_resources() supports handling resources that belong to the second range. Extend bcdma_setup_resources() and pktdma_setup_resources() to support the same. Signed-off-by: Siddharth Vadapalli <[email protected]> Acked-by: Peter Ujfalusi <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Vinod Koul <[email protected]>
1 parent fa70c4c commit 566beb3

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

drivers/dma/ti/k3-udma.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4886,6 +4886,12 @@ static int bcdma_setup_resources(struct udma_dev *ud)
48864886
irq_res.desc[i].start = rm_res->desc[i].start +
48874887
oes->bcdma_bchan_ring;
48884888
irq_res.desc[i].num = rm_res->desc[i].num;
4889+
4890+
if (rm_res->desc[i].num_sec) {
4891+
irq_res.desc[i].start_sec = rm_res->desc[i].start_sec +
4892+
oes->bcdma_bchan_ring;
4893+
irq_res.desc[i].num_sec = rm_res->desc[i].num_sec;
4894+
}
48894895
}
48904896
}
48914897
} else {
@@ -4909,6 +4915,15 @@ static int bcdma_setup_resources(struct udma_dev *ud)
49094915
irq_res.desc[i + 1].start = rm_res->desc[j].start +
49104916
oes->bcdma_tchan_ring;
49114917
irq_res.desc[i + 1].num = rm_res->desc[j].num;
4918+
4919+
if (rm_res->desc[j].num_sec) {
4920+
irq_res.desc[i].start_sec = rm_res->desc[j].start_sec +
4921+
oes->bcdma_tchan_data;
4922+
irq_res.desc[i].num_sec = rm_res->desc[j].num_sec;
4923+
irq_res.desc[i + 1].start_sec = rm_res->desc[j].start_sec +
4924+
oes->bcdma_tchan_ring;
4925+
irq_res.desc[i + 1].num_sec = rm_res->desc[j].num_sec;
4926+
}
49124927
}
49134928
}
49144929
}
@@ -4929,6 +4944,15 @@ static int bcdma_setup_resources(struct udma_dev *ud)
49294944
irq_res.desc[i + 1].start = rm_res->desc[j].start +
49304945
oes->bcdma_rchan_ring;
49314946
irq_res.desc[i + 1].num = rm_res->desc[j].num;
4947+
4948+
if (rm_res->desc[j].num_sec) {
4949+
irq_res.desc[i].start_sec = rm_res->desc[j].start_sec +
4950+
oes->bcdma_rchan_data;
4951+
irq_res.desc[i].num_sec = rm_res->desc[j].num_sec;
4952+
irq_res.desc[i + 1].start_sec = rm_res->desc[j].start_sec +
4953+
oes->bcdma_rchan_ring;
4954+
irq_res.desc[i + 1].num_sec = rm_res->desc[j].num_sec;
4955+
}
49324956
}
49334957
}
49344958
}
@@ -5063,6 +5087,12 @@ static int pktdma_setup_resources(struct udma_dev *ud)
50635087
irq_res.desc[i].start = rm_res->desc[i].start +
50645088
oes->pktdma_tchan_flow;
50655089
irq_res.desc[i].num = rm_res->desc[i].num;
5090+
5091+
if (rm_res->desc[i].num_sec) {
5092+
irq_res.desc[i].start_sec = rm_res->desc[i].start_sec +
5093+
oes->pktdma_tchan_flow;
5094+
irq_res.desc[i].num_sec = rm_res->desc[i].num_sec;
5095+
}
50665096
}
50675097
}
50685098
rm_res = tisci_rm->rm_ranges[RM_RANGE_RFLOW];
@@ -5074,6 +5104,12 @@ static int pktdma_setup_resources(struct udma_dev *ud)
50745104
irq_res.desc[i].start = rm_res->desc[j].start +
50755105
oes->pktdma_rchan_flow;
50765106
irq_res.desc[i].num = rm_res->desc[j].num;
5107+
5108+
if (rm_res->desc[j].num_sec) {
5109+
irq_res.desc[i].start_sec = rm_res->desc[j].start_sec +
5110+
oes->pktdma_rchan_flow;
5111+
irq_res.desc[i].num_sec = rm_res->desc[j].num_sec;
5112+
}
50775113
}
50785114
}
50795115
ret = ti_sci_inta_msi_domain_alloc_irqs(ud->dev, &irq_res);

0 commit comments

Comments
 (0)