dmaengine: ti: k3-udma-glue: Get the ringacc from udma_dev
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Tue, 8 Dec 2020 09:04:25 +0000 (11:04 +0200)
committerVinod Koul <vkoul@kernel.org>
Fri, 11 Dec 2020 15:50:08 +0000 (21:20 +0530)
If of_xudma_dev_get() returns with the valid udma_dev then the driver
already got the ringacc, there is no need to execute
of_k3_ringacc_get_by_phandle() for each channel via the glue layer.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
Link: https://lore.kernel.org/r/20201208090440.31792-6-peter.ujfalusi@ti.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/ti/k3-udma-glue.c
drivers/dma/ti/k3-udma-private.c
drivers/dma/ti/k3-udma.h

index 29d1524d191692cc20a568631bce1327b2d1bbe8..8a8988be41751214bba0039a4615793f339509a3 100644 (file)
@@ -86,15 +86,11 @@ struct k3_udma_glue_rx_channel {
 static int of_k3_udma_glue_parse(struct device_node *udmax_np,
                                 struct k3_udma_glue_common *common)
 {
-       common->ringacc = of_k3_ringacc_get_by_phandle(udmax_np,
-                                                      "ti,ringacc");
-       if (IS_ERR(common->ringacc))
-               return PTR_ERR(common->ringacc);
-
        common->udmax = of_xudma_dev_get(udmax_np, NULL);
        if (IS_ERR(common->udmax))
                return PTR_ERR(common->udmax);
 
+       common->ringacc = xudma_get_ringacc(common->udmax);
        common->tisci_rm = xudma_dev_get_tisci_rm(common->udmax);
 
        return 0;
index 8ff7a264be037417e2d7414f06d6f8ef6daf50b2..346a4dd9640a29448a3770a4eccf87fc135cd501 100644 (file)
@@ -56,6 +56,12 @@ struct device *xudma_get_device(struct udma_dev *ud)
 }
 EXPORT_SYMBOL(xudma_get_device);
 
+struct k3_ringacc *xudma_get_ringacc(struct udma_dev *ud)
+{
+       return ud->ringacc;
+}
+EXPORT_SYMBOL(xudma_get_ringacc);
+
 u32 xudma_dev_get_psil_base(struct udma_dev *ud)
 {
        return ud->psil_base;
index d1cace0cb43b44238faa29bbaa698ea60a2e59ac..b4334b1b7b14dcb16d0a9eb0fc3f1be68eb557b1 100644 (file)
@@ -113,6 +113,7 @@ int xudma_navss_psil_unpair(struct udma_dev *ud, u32 src_thread,
 
 struct udma_dev *of_xudma_dev_get(struct device_node *np, const char *property);
 struct device *xudma_get_device(struct udma_dev *ud);
+struct k3_ringacc *xudma_get_ringacc(struct udma_dev *ud);
 void xudma_dev_put(struct udma_dev *ud);
 u32 xudma_dev_get_psil_base(struct udma_dev *ud);
 struct udma_tisci_rm *xudma_dev_get_tisci_rm(struct udma_dev *ud);