aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSandeep Paulraj <s-paulraj@ti.com>2009-07-27 09:57:07 -0400
committerKevin Hilman <khilman@deeprootsystems.com>2009-08-26 04:55:49 -0400
commita0f0202e2a19d43d733e07cb435a3064324c2ba7 (patch)
treebfe505df91d1434ad2afd83f3edb0eb75e6d13b3
parent10eef5a8a08d8be455ae5f9599b214c33ad52340 (diff)
DaVinci: EDMA: Updating default queue handling
EDMA queues in DM365 are a little different than those on other DaVinci's. On DM365 Q0 and Q1 have the larger FIFO size. We want Q0 and Q1 to be used by codecs and DVSDK demos. MMC driver is the only driver which uses the flag 'EVENTQ_DEFAULT'. So MMC driver should be using Q2 instead of Q1 on DM365. This patch allows us to declare a "default queue" from SOC specific code. If it is not declared then the EDMA driver assumes a default of queue 1. Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
-rw-r--r--arch/arm/mach-davinci/dm365.c1
-rw-r--r--arch/arm/mach-davinci/dma.c7
-rw-r--r--arch/arm/mach-davinci/include/mach/edma.h1
3 files changed, 8 insertions, 1 deletions
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index f02bce8eeba4..aa3b0bbdda73 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -741,6 +741,7 @@ static struct edma_soc_info dm365_edma_info[] = {
741 .n_cc = 1, 741 .n_cc = 1,
742 .queue_tc_mapping = dm365_queue_tc_mapping, 742 .queue_tc_mapping = dm365_queue_tc_mapping,
743 .queue_priority_mapping = dm365_queue_priority_mapping, 743 .queue_priority_mapping = dm365_queue_priority_mapping,
744 .default_queue = EVENTQ_2,
744 }, 745 },
745}; 746};
746 747
diff --git a/arch/arm/mach-davinci/dma.c b/arch/arm/mach-davinci/dma.c
index 5908f7717b29..e6d7e6aca336 100644
--- a/arch/arm/mach-davinci/dma.c
+++ b/arch/arm/mach-davinci/dma.c
@@ -225,6 +225,7 @@ struct edma {
225 unsigned num_slots; 225 unsigned num_slots;
226 unsigned num_tc; 226 unsigned num_tc;
227 unsigned num_cc; 227 unsigned num_cc;
228 enum dma_event_q default_queue;
228 229
229 /* list of channels with no even trigger; terminated by "-1" */ 230 /* list of channels with no even trigger; terminated by "-1" */
230 const s8 *noevent; 231 const s8 *noevent;
@@ -267,7 +268,7 @@ static void map_dmach_queue(unsigned ctlr, unsigned ch_no,
267 268
268 /* default to low priority queue */ 269 /* default to low priority queue */
269 if (queue_no == EVENTQ_DEFAULT) 270 if (queue_no == EVENTQ_DEFAULT)
270 queue_no = EVENTQ_1; 271 queue_no = edma_info[ctlr]->default_queue;
271 272
272 queue_no &= 7; 273 queue_no &= 7;
273 edma_modify_array(ctlr, EDMA_DMAQNUM, (ch_no >> 3), 274 edma_modify_array(ctlr, EDMA_DMAQNUM, (ch_no >> 3),
@@ -1249,6 +1250,10 @@ static int __init edma_probe(struct platform_device *pdev)
1249 edma_info[j]->num_cc = min_t(unsigned, info[j].n_cc, 1250 edma_info[j]->num_cc = min_t(unsigned, info[j].n_cc,
1250 EDMA_MAX_CC); 1251 EDMA_MAX_CC);
1251 1252
1253 edma_info[j]->default_queue = info[j].default_queue;
1254 if (!edma_info[j]->default_queue)
1255 edma_info[j]->default_queue = EVENTQ_1;
1256
1252 dev_dbg(&pdev->dev, "DMA REG BASE ADDR=%p\n", 1257 dev_dbg(&pdev->dev, "DMA REG BASE ADDR=%p\n",
1253 edmacc_regs_base[j]); 1258 edmacc_regs_base[j]);
1254 1259
diff --git a/arch/arm/mach-davinci/include/mach/edma.h b/arch/arm/mach-davinci/include/mach/edma.h
index 5d4896226460..3c7dc2db70e4 100644
--- a/arch/arm/mach-davinci/include/mach/edma.h
+++ b/arch/arm/mach-davinci/include/mach/edma.h
@@ -271,6 +271,7 @@ struct edma_soc_info {
271 unsigned n_slot; 271 unsigned n_slot;
272 unsigned n_tc; 272 unsigned n_tc;
273 unsigned n_cc; 273 unsigned n_cc;
274 enum dma_event_q default_queue;
274 275
275 /* list of channels with no even trigger; terminated by "-1" */ 276 /* list of channels with no even trigger; terminated by "-1" */
276 const s8 *noevent; 277 const s8 *noevent;