aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/common/edma.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/arch/arm/common/edma.c b/arch/arm/common/edma.c
index f834aae7720f..88099175fc56 100644
--- a/arch/arm/common/edma.c
+++ b/arch/arm/common/edma.c
@@ -1414,6 +1414,34 @@ void edma_clear_event(unsigned channel)
1414} 1414}
1415EXPORT_SYMBOL(edma_clear_event); 1415EXPORT_SYMBOL(edma_clear_event);
1416 1416
1417/*
1418 * edma_assign_channel_eventq - move given channel to desired eventq
1419 * Arguments:
1420 * channel - channel number
1421 * eventq_no - queue to move the channel
1422 *
1423 * Can be used to move a channel to a selected event queue.
1424 */
1425void edma_assign_channel_eventq(unsigned channel, enum dma_event_q eventq_no)
1426{
1427 unsigned ctlr;
1428
1429 ctlr = EDMA_CTLR(channel);
1430 channel = EDMA_CHAN_SLOT(channel);
1431
1432 if (channel >= edma_cc[ctlr]->num_channels)
1433 return;
1434
1435 /* default to low priority queue */
1436 if (eventq_no == EVENTQ_DEFAULT)
1437 eventq_no = edma_cc[ctlr]->default_queue;
1438 if (eventq_no >= edma_cc[ctlr]->num_tc)
1439 return;
1440
1441 map_dmach_queue(ctlr, channel, eventq_no);
1442}
1443EXPORT_SYMBOL(edma_assign_channel_eventq);
1444
1417static int edma_setup_from_hw(struct device *dev, struct edma_soc_info *pdata, 1445static int edma_setup_from_hw(struct device *dev, struct edma_soc_info *pdata,
1418 struct edma *edma_cc) 1446 struct edma *edma_cc)
1419{ 1447{