Péter, Vignesh, Thank you for reviewing the patch. On 05/04/23 09:17, Vignesh Raghavendra wrote: > > On 05/04/23 01:53, Péter Ujfalusi wrote: >> >> >> On 04/04/2023 11:11, Siddharth Vadapalli wrote: >>> From: Grygorii Strashko <grygorii.strashko@xxxxxx> >>> >>> In case K3 DMA glue layer is using UDMA channels (AM65/J721E/J7200) it >>> doesn't need to create own DMA devices per RX/TX channels as they are >>> never >>> used and just waste resources. The UDMA based platforms are coherent and >>> UDMA device iteslf is used for DMA memory management. >>> >>> Hence, update K3 DMA glue layer to create K3 DMA glue DMA devices per >>> RX/TX >>> channels only in case of PKTDMA (AM64) where coherency configurable >>> per DMA >>> channel. >>> >>> Signed-off-by: Grygorii Strashko <grygorii.strashko@xxxxxx> >>> Signed-off-by: Siddharth Vadapalli <s-vadapalli@xxxxxx> >>> --- >>> drivers/dma/ti/k3-udma-glue.c | 70 +++++++++++++++++------------------ >>> 1 file changed, 34 insertions(+), 36 deletions(-) >>> >>> diff --git a/drivers/dma/ti/k3-udma-glue.c >>> b/drivers/dma/ti/k3-udma-glue.c >>> index 789193ed0386..b0c9572b0d02 100644 >>> --- a/drivers/dma/ti/k3-udma-glue.c >>> +++ b/drivers/dma/ti/k3-udma-glue.c >>> @@ -293,19 +293,18 @@ struct k3_udma_glue_tx_channel >>> *k3_udma_glue_request_tx_chn(struct device *dev, >>> } >>> tx_chn->udma_tchan_id = xudma_tchan_get_id(tx_chn->udma_tchanx); >>> - tx_chn->common.chan_dev.class = &k3_udma_glue_devclass; >>> - tx_chn->common.chan_dev.parent = >>> xudma_get_device(tx_chn->common.udmax); >>> - dev_set_name(&tx_chn->common.chan_dev, "tchan%d-0x%04x", >>> - tx_chn->udma_tchan_id, tx_chn->common.dst_thread); >>> - ret = device_register(&tx_chn->common.chan_dev); >>> - if (ret) { >>> - dev_err(dev, "Channel Device registration failed %d\n", ret); >>> - put_device(&tx_chn->common.chan_dev); >>> - tx_chn->common.chan_dev.parent = NULL; >>> - goto err; >>> - } >>> - >>> if (xudma_is_pktdma(tx_chn->common.udmax)) { >> >> it might be possible to narrow it down to include a test for atype_asel >> 14 or 15, but then I would move that test to a helper (passing common as >> parameter) and re-use it in other places to avoid getting out o sync >> overtime. >> Might not worth the effort, just an observation. > > Irrespective, we should at least add check for atype_asel == 14/15 along > with xudma_is_pktdma(). > > Refractoring these checks to separate function can be patch of its own > >> >>> + tx_chn->common.chan_dev.class = &k3_udma_glue_devclass; >>> + tx_chn->common.chan_dev.parent = >>> xudma_get_device(tx_chn->common.udmax); >>> + dev_set_name(&tx_chn->common.chan_dev, "tchan%d-0x%04x", >>> + tx_chn->udma_tchan_id, tx_chn->common.dst_thread); >>> + ret = device_register(&tx_chn->common.chan_dev); >>> + if (ret) { >>> + dev_err(dev, "Channel Device registration failed %d\n", >>> ret); >> >> my guess is that the put_device() is still needed, no? > > Agree I will fix this at all 3 occurrences and post the v2 patch. > >> >>> + tx_chn->common.chan_dev.parent = NULL; >>> + goto err; >>> + } >>> + >>> /* prepare the channel device as coherent */ > > [...] > -- Regards, Siddharth.