diff options
author | Peter Ujfalusi <peter.ujfalusi@ti.com> | 2020-12-08 12:04:27 +0300 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2020-12-11 18:50:08 +0300 |
commit | 4f910c035f38053ac8eb63a672c78862c535cd0f (patch) | |
tree | 9ca8f74cd92dbcc0e7bf77f7725f7c7a8b6f0161 /drivers/dma | |
parent | d553e2ab0137ae489b41824b1e8283053c363ed1 (diff) | |
download | linux-4f910c035f38053ac8eb63a672c78862c535cd0f.tar.xz |
dmaengine: of-dma: Add support for optional router configuration callback
Additional configuration for the DMA event router might be needed for a
channel which can not be done during device_alloc_chan_resources callback
since the router information is not yet present for the drivers.
If there is a need for additional configuration for the channel if DMA
router is in use, then the driver can implement the device_router_config
callback.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Link: https://lore.kernel.org/r/20201208090440.31792-8-peter.ujfalusi@ti.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/dma')
-rw-r--r-- | drivers/dma/of-dma.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/dma/of-dma.c b/drivers/dma/of-dma.c index 8a4f608904b9..ec00b20ae8e4 100644 --- a/drivers/dma/of-dma.c +++ b/drivers/dma/of-dma.c @@ -75,8 +75,18 @@ static struct dma_chan *of_dma_router_xlate(struct of_phandle_args *dma_spec, ofdma->dma_router->route_free(ofdma->dma_router->dev, route_data); } else { + int ret = 0; + chan->router = ofdma->dma_router; chan->route_data = route_data; + + if (chan->device->device_router_config) + ret = chan->device->device_router_config(chan); + + if (ret) { + dma_release_channel(chan); + chan = ERR_PTR(ret); + } } /* |