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 > >> + tx_chn->common.chan_dev.parent = NULL; >> + goto err; >> + } >> + >> /* prepare the channel device as coherent */ [...] -- Regards Vignesh