aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/common/edma.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/arm/common/edma.c b/arch/arm/common/edma.c
index ef3b10356e25..739e0f10470b 100644
--- a/arch/arm/common/edma.c
+++ b/arch/arm/common/edma.c
@@ -1585,6 +1585,18 @@ static struct of_dma_filter_info edma_filter_info = {
1585 .filter_fn = edma_filter_fn, 1585 .filter_fn = edma_filter_fn,
1586}; 1586};
1587 1587
1588struct dma_chan *edma_of_xlate(struct of_phandle_args *dma_spec,
1589 struct of_dma *ofdma)
1590{
1591 struct dma_chan *chan = of_dma_simple_xlate(dma_spec, ofdma);
1592
1593 if (chan)
1594 clear_bit(EDMA_CHAN_SLOT(dma_spec->args[0]),
1595 edma_cc[0]->edma_unused);
1596
1597 return chan;
1598}
1599
1588static struct edma_soc_info *edma_setup_info_from_dt(struct device *dev, 1600static struct edma_soc_info *edma_setup_info_from_dt(struct device *dev,
1589 struct device_node *node) 1601 struct device_node *node)
1590{ 1602{
@@ -1601,7 +1613,7 @@ static struct edma_soc_info *edma_setup_info_from_dt(struct device *dev,
1601 1613
1602 dma_cap_set(DMA_SLAVE, edma_filter_info.dma_cap); 1614 dma_cap_set(DMA_SLAVE, edma_filter_info.dma_cap);
1603 dma_cap_set(DMA_CYCLIC, edma_filter_info.dma_cap); 1615 dma_cap_set(DMA_CYCLIC, edma_filter_info.dma_cap);
1604 of_dma_controller_register(dev->of_node, of_dma_simple_xlate, 1616 of_dma_controller_register(dev->of_node, edma_of_xlate,
1605 &edma_filter_info); 1617 &edma_filter_info);
1606 1618
1607 return info; 1619 return info;