aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-davinci/include/mach
diff options
context:
space:
mode:
authorSudhakar Rajashekhara <sudhakar.raj@ti.com>2009-05-21 07:41:35 -0400
committerKevin Hilman <khilman@deeprootsystems.com>2009-08-26 03:56:56 -0400
commit60902a2cb12c3c1682ee7a04ad7448ec16dc0c29 (patch)
treeba754bff7fadd7106dc9f8549136a514177d0fd1 /arch/arm/mach-davinci/include/mach
parent4c5adde7943b982d22a7bf711654fbb5cb810667 (diff)
davinci: EDMA: multiple CCs, channel mapping and API changes
- restructure to support multiple channel controllers by using additional struct resources for each CC - interface changes visible to EDMA clients Introduce macros to build IDs from controller and channel number, and to extract them. Modify the edma_alloc_slot function to take an extra argument for the controller. Also update ASoC drivers to use API. ASoC changes Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com> - Move queue related mappings to dm<soc>.c EDMA in DM355 and DM644x has two transfer controllers while DM646x has four transfer controllers. Moving the queue to tc mapping and queue priority mapping to dm<soc>.c will be helpful to probe these mappings from platform device so that the machine_is_* testing will be avoided. - add channel mapping logic Channel mapping logic is introduced in dm646x EDMA. This implies that there is no fixed association for a channel number to a parameter entry number. In other words, using the DMA channel mapping registers (DCHMAPn), a PaRAM entry can be mapped to any channel. While in the case of dm644x and dm355 there is a fixed mapping between the EDMA channel and Param entry number. Signed-off-by: Naresh Medisetty <naresh@ti.com> Signed-off-by: Sudhakar Rajashekhara <sudhakar.raj@ti.com> Reviewed-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm/mach-davinci/include/mach')
-rw-r--r--arch/arm/mach-davinci/include/mach/edma.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/arm/mach-davinci/include/mach/edma.h b/arch/arm/mach-davinci/include/mach/edma.h
index 24a379239d7f..ba2ebdd058a0 100644
--- a/arch/arm/mach-davinci/include/mach/edma.h
+++ b/arch/arm/mach-davinci/include/mach/edma.h
@@ -170,6 +170,10 @@ enum sync_dimension {
170 ABSYNC = 1 170 ABSYNC = 1
171}; 171};
172 172
173#define EDMA_CTLR_CHAN(ctlr, chan) (((ctlr) << 16) | (chan))
174#define EDMA_CTLR(i) ((i) >> 16)
175#define EDMA_CHAN_SLOT(i) ((i) & 0xffff)
176
173#define EDMA_CHANNEL_ANY -1 /* for edma_alloc_channel() */ 177#define EDMA_CHANNEL_ANY -1 /* for edma_alloc_channel() */
174#define EDMA_SLOT_ANY -1 /* for edma_alloc_slot() */ 178#define EDMA_SLOT_ANY -1 /* for edma_alloc_slot() */
175 179
@@ -180,7 +184,7 @@ int edma_alloc_channel(int channel,
180void edma_free_channel(unsigned channel); 184void edma_free_channel(unsigned channel);
181 185
182/* alloc/free parameter RAM slots */ 186/* alloc/free parameter RAM slots */
183int edma_alloc_slot(int slot); 187int edma_alloc_slot(unsigned ctlr, int slot);
184void edma_free_slot(unsigned slot); 188void edma_free_slot(unsigned slot);
185 189
186/* calls that operate on part of a parameter RAM slot */ 190/* calls that operate on part of a parameter RAM slot */
@@ -216,9 +220,12 @@ struct edma_soc_info {
216 unsigned n_region; 220 unsigned n_region;
217 unsigned n_slot; 221 unsigned n_slot;
218 unsigned n_tc; 222 unsigned n_tc;
223 unsigned n_cc;
219 224
220 /* list of channels with no even trigger; terminated by "-1" */ 225 /* list of channels with no even trigger; terminated by "-1" */
221 const s8 *noevent; 226 const s8 *noevent;
227 const s8 (*queue_tc_mapping)[2];
228 const s8 (*queue_priority_mapping)[2];
222}; 229};
223 230
224#endif 231#endif