There is no reason to build custom filter function and translation function
inside the driver in case we have no DT platform.

This patch introduces new method dw_dma_of_controller_register() and moves all
DT related stuff under #ifdef CONFIG_OF. It also helps to distinguish the real
-ENODEV return code of fake one when of_dma_controller_register is not
implemented.

Signed-off-by: Andy Shevchenko <andriy.shevche...@linux.intel.com>
---
 drivers/dma/dw_dmac.c | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/drivers/dma/dw_dmac.c b/drivers/dma/dw_dmac.c
index 274fd7d..9b2e186 100644
--- a/drivers/dma/dw_dmac.c
+++ b/drivers/dma/dw_dmac.c
@@ -1244,6 +1244,7 @@ static void dwc_free_chan_resources(struct dma_chan *chan)
 
 /*----------------------------------------------------------------------*/
 
+#ifdef CONFIG_OF
 struct dw_dma_of_filter_args {
        struct dw_dma *dw;
        unsigned int req;
@@ -1303,6 +1304,19 @@ static struct dma_chan *dw_dma_of_xlate(struct 
of_phandle_args *dma_spec,
        return dma_request_channel(cap, dw_dma_of_filter, &fargs);
 }
 
+static void dw_dma_of_controller_register(struct dw_dma *dw)
+{
+       struct device *dev = dw->dma.dev;
+       int err;
+
+       err = of_dma_controller_register(dev->of_node, dw_dma_of_xlate, dw);
+       if (err)
+               dev_err(dev, "could not register of_dma_controller\n");
+}
+#else /* !CONFIG_OF */
+static inline void dw_dma_of_controller_register(struct dw_dma *dw) {}
+#endif /* !CONFIG_OF */
+
 /* --------------------- Cyclic DMA API extensions -------------------- */
 
 /**
@@ -1843,13 +1857,8 @@ static int dw_probe(struct platform_device *pdev)
 
        dma_async_device_register(&dw->dma);
 
-       if (pdev->dev.of_node) {
-               err = of_dma_controller_register(pdev->dev.of_node,
-                                                dw_dma_of_xlate, dw);
-               if (err && err != -ENODEV)
-                       dev_err(&pdev->dev,
-                               "could not register of_dma_controller\n");
-       }
+       if (pdev->dev.of_node)
+               dw_dma_of_controller_register(dw);
 
        return 0;
 }
-- 
1.8.2.rc0.22.gb3600c3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to