From: David Brownell <dbrown...@users.sourceforge.net> Remove the QDMA hooks from the Linux EDMA code.
No Linux code in the DaVinci GIT tree or the latest DVSDK code from MV/TI needs QDMA, so it's just a needless mechanism cluttering this code and complicating a merge to mainline. QDMA likely deserves a new programming interface anyway. Saves about 1400 bytes of object code. Signed-off-by: David Brownell <dbrown...@users.sourceforge.net> --- arch/arm/mach-davinci/dma.c | 274 +++------------------------- arch/arm/mach-davinci/include/mach/edma.h | 50 ++--- 2 files changed, 52 insertions(+), 272 deletions(-) --- a/arch/arm/mach-davinci/dma.c +++ b/arch/arm/mach-davinci/dma.c @@ -269,14 +269,6 @@ static const unsigned long edma_channels }; /* - Each bit field of the elements below indicates corresponding QDMA channel - availability on arm side events -*/ -static const unsigned char qdma_channels_arm[] = { - 0x00 -}; - -/* Each bit field of the elements below indicates corresponding PARAM entry availability on arm side events */ @@ -339,8 +331,6 @@ static const int queue_priority_mapping[ {-1, -1} }; -static int qdam_to_param_mapping[8] = { 0 }; - /*****************************************************************************/ static void map_dmach_queue(int ch_no, int queue_no) @@ -350,20 +340,6 @@ static void map_dmach_queue(int ch_no, i int bit = (ch_no & 0x7) * 4; edma_modify_array(EDMA_DMAQNUM, (ch_no >> 3), ~(0x7 << bit), queue_no << bit); - } else if (DAVINCI_EDMA_IS_Q(ch_no)) { - int bit = (ch_no - DAVINCI_EDMA_QSTART) * 4; - edma_modify(EDMA_QDMAQNUM, ~(0x7 << bit), queue_no << bit); - } -} - -/* For Davinci this Macro supports mapping only for QDMA channels and PaRam - entry */ -static void map_dmach_param(int ch_no, int param_no) -{ - if (DAVINCI_EDMA_IS_Q(ch_no)) { - edma_modify_array(EDMA_QCHMAP, ch_no - DAVINCI_EDMA_QSTART, - ~(PAENTRY | TRWORD), - ((param_no & 0x1ff) << 5) | (QDMA_TRWORD << 2)); } } @@ -407,12 +383,8 @@ static int request_param(int lch, int de UNLOCK; return lch; } else { - if (dev_id >= DAVINCI_DMA_QDMA0 && - dev_id <= DAVINCI_DMA_QDMA7) { - i = 0; - } else if (dev_id == DAVINCI_EDMA_PARAM_ANY) { + if (dev_id == DAVINCI_EDMA_PARAM_ANY) i = DAVINCI_EDMA_NUM_DMACH; - } /* This allocation alogrithm requires complete lock because availabilty of param entry is checked from structure @@ -425,10 +397,7 @@ static int request_param(int lch, int de if ((param_entry_arm[i / 32] & (1 << (i % 32))) && (param_entry_use_status[i / 32] & (1 << (i % 32)))) { - /* if (dev_id == DAVINCI_DMA_CHANNEL_ANY - * || DAVINCI_EDMA_IS_Q(dev_id)) ... - */ - if (dev_id != DAVINCI_EDMA_PARAM_ANY) { + if (dev_id == DAVINCI_DMA_CHANNEL_ANY) { if (i >= DAVINCI_EDMA_NUM_DMACH) continue; if (test_bit(i, edma_noevent)) @@ -496,7 +465,6 @@ static int request_dma_interrupt(int lch void *data, int param_no, int requested_tcc) { signed int free_intr_no = -1; - int i = 0; /* edma channels */ if (lch >= 0 && lch < DAVINCI_EDMA_NUM_DMACH) { @@ -519,71 +487,10 @@ static int request_dma_interrupt(int lch } } - /* qdma channels */ - else if (DAVINCI_EDMA_IS_Q(lch)) { - if (requested_tcc != TCC_ANY) { - /* Complete allocation algo requires lock and as it's - shared resources could be invoked by several thread. - Structure dma_intr_use_status is used to check - whether resource is availabe or not and latter marked - as not available in the same structure */ - LOCK; - if (dma_intr_use_status[requested_tcc / 32] & - (1 << (requested_tcc % 32))) { - if (requested_tcc < DAVINCI_EDMA_NUM_DMACH - && test_bit(requested_tcc, - edma_noevent)) { - dma_intr_use_status[requested_tcc / 32] - &= (~(1 << (requested_tcc % 32))); - free_intr_no = requested_tcc; - dev_dbg(&edma_dev.dev, - "interrupt no=%d\r\n", - free_intr_no); - } else { - UNLOCK; - dev_dbg(&edma_dev.dev, - "Error - wrong tcc passed\r\n"); - return -1; - } - UNLOCK; - } else { - UNLOCK; - dev_dbg(&edma_dev.dev, - "Error - wrong tcc passed\r\n"); - return -1; - } - } else { - i = 0; - LOCK; - while (i < DAVINCI_EDMA_NUM_DMACH) { - if (dma_intr_use_status[i / 32] & - (1 << (i % 32))) { - if (test_bit(i, edma_noevent)) { - dma_intr_use_status[i / 32] &= - (~(1 << (i % 32))); - free_intr_no = i; - - dev_dbg(&edma_dev.dev, - "interrupt no=%d\r\n", - free_intr_no); - break; - } - i++; - } else { - i++; - } - } - UNLOCK; - } - } if (free_intr_no < 0) { dev_dbg(&edma_dev.dev, "no IRQ for channel %d\n", lch); return -EIO; } - if (DAVINCI_EDMA_IS_Q(lch)) { - edma_or_array2(EDMA_DRAE, 0, free_intr_no >> 5, - (1 << (free_intr_no & 0x1f))); - } if (free_intr_no >= 0 && free_intr_no < 64) { intr_data[free_intr_no].callback = callback; intr_data[free_intr_no].data = data; @@ -853,7 +760,7 @@ static int __init davinci_dma_init(void) * This way, long transfers on the low priority queue * started by the codec engine will not cause audio defects. */ - for (i = 0; i < DAVINCI_EDMA_QEND; i++) + for (i = 0; i < DAVINCI_EDMA_NUM_DMACH; i++) map_dmach_queue(i, 1); i = 0; @@ -925,26 +832,12 @@ int davinci_request_dma(int dev_id, cons dev_id); return -EINVAL; } - } else if (DAVINCI_EDMA_IS_Q(dev_id)) { - if (!(qdma_channels_arm[0] & - (0x1 << (dev_id - DAVINCI_EDMA_QSTART)))) { - - dev_dbg(&edma_dev.dev, - "dev_id = %d not supported on ARM side\r\n", - dev_id); - return -EINVAL; - } } if ((dev_id != DAVINCI_DMA_CHANNEL_ANY) && (dev_id != DAVINCI_EDMA_PARAM_ANY)) { - if (DAVINCI_EDMA_IS_Q(dev_id)) { - edma_or_array(EDMA_QRAE, 0, - 1 << (dev_id - DAVINCI_EDMA_QSTART)); - } else { - edma_or_array2(EDMA_DRAE, 0, dev_id >> 5, - 1 << (dev_id & 0x1f)); - } + edma_or_array2(EDMA_DRAE, 0, dev_id >> 5, + 1 << (dev_id & 0x1f)); } if (dev_id >= 0 && dev_id < (DAVINCI_EDMA_NUM_DMACH)) { @@ -978,40 +871,6 @@ int davinci_request_dma(int dev_id, cons davinci_stop_dma(dev_id); } else ret_val = -EINVAL; - } else if (DAVINCI_EDMA_IS_Q(dev_id)) { - int temp_ch; - temp_ch = qdam_to_param_mapping[dev_id - DAVINCI_EDMA_QSTART]; - if ((temp_ch != -1) && (dma_chan[temp_ch].in_use)) { - ret_val = -EINVAL; - } else { - *lch = dev_id; - dma_chan[*lch].param_no = request_param(*lch, dev_id); - if (dma_chan[*lch].param_no == -1) { - dev_dbg(&edma_dev.dev, - "request_param failed\r\n"); - return -EINVAL; - } else { - dev_dbg(&edma_dev.dev, "param_no=%d\r\n", - dma_chan[*lch].param_no); - map_dmach_param(*lch, dma_chan[*lch].param_no); - } - if (callback) { - dma_chan[*lch].tcc = - request_dma_interrupt(*lch, callback, data, - dma_chan[*lch]. - param_no, *tcc); - if (dma_chan[*lch].tcc == -1) { - return -EINVAL; - } else { - *tcc = dma_chan[*lch].tcc; - dev_dbg(&edma_dev.dev, "tcc_no=%d\r\n", - dma_chan[*lch].tcc); - } - } else - dma_chan[*lch].tcc = -1; - map_dmach_queue(dev_id, eventq_no); - ret_val = 0; - } /* return some master channel with no event association */ } else if (dev_id == DAVINCI_DMA_CHANNEL_ANY) { @@ -1031,13 +890,8 @@ int davinci_request_dma(int dev_id, cons return -EINVAL; dma_chan[*lch].param_no = j; dev_dbg(&edma_dev.dev, "param_no=%d\r\n", j); - if (DAVINCI_EDMA_IS_Q(j)) { - edma_or_array(EDMA_QRAE, 0, 1 << (j - - DAVINCI_EDMA_QSTART)); - } else { - edma_or_array2(EDMA_DRAE, 0, j >> 5, - 1 << (j & 0x1f)); - } + edma_or_array2(EDMA_DRAE, 0, j >> 5, + 1 << (j & 0x1f)); if (callback) { dma_chan[*lch].tcc = request_dma_interrupt(*lch, @@ -1058,7 +912,7 @@ int davinci_request_dma(int dev_id, cons /* return some slave channel */ } else if (dev_id == DAVINCI_EDMA_PARAM_ANY) { ret_val = 0; - for (i = DAVINCI_EDMA_QEND; + for (i = DAVINCI_EDMA_NUM_DMACH; i < DAVINCI_EDMA_NUM_PARAMENTRY; i++) { if (!dma_chan[i].in_use) { dev_dbg(&edma_dev.dev, "any link = %d\r\n", i); @@ -1086,51 +940,24 @@ int davinci_request_dma(int dev_id, cons ret_val = -EINVAL; } if (!ret_val) { - if (DAVINCI_EDMA_IS_Q(dev_id)) { - /* Channel used for QDMA */ - unsigned int opt; - int temp_ch = dma_chan[*lch].param_no; - qdam_to_param_mapping[dev_id - DAVINCI_EDMA_QSTART] = - temp_ch; - LOCK; - /* It's used global data structure and used to find out - whether channel is available or not */ - dma_chan[temp_ch].in_use = 1; - UNLOCK; - dma_chan[temp_ch].dev_id = *lch; - dma_chan[temp_ch].tcc = dma_chan[*lch].tcc; - dma_chan[temp_ch].param_no = temp_ch; - opt = edma_parm_read(PARM_OPT, temp_ch); - if (dma_chan[*lch].tcc != -1) { - opt &= ~TCC; - opt |= ((0x3f & dma_chan[*lch].tcc) << 12); - opt |= TCINTEN; - } else { - opt &= ~TCINTEN; - } - edma_parm_write(PARM_OPT, temp_ch, opt); - /* assign the link field to no link. i.e 0xffff */ - edma_parm_or(PARM_LINK_BCNTRLD, temp_ch, 0xffff); + int j; + + LOCK; + /* Global structure to identify whether resoures is + available or not */ + dma_chan[*lch].in_use = 1; + UNLOCK; + dma_chan[*lch].dev_id = *lch; + j = dma_chan[*lch].param_no; + if (dma_chan[*lch].tcc != -1) { + edma_parm_modify(PARM_OPT, j, ~TCC, + ((0x3f & dma_chan[*lch].tcc) << 12) + | TCINTEN); } else { - int j; - /* Normal master or slave Channel */ - LOCK; - /* Global structure to identify whether resoures is - available or not */ - dma_chan[*lch].in_use = 1; - UNLOCK; - dma_chan[*lch].dev_id = *lch; - j = dma_chan[*lch].param_no; - if (dma_chan[*lch].tcc != -1) { - edma_parm_modify(PARM_OPT, j, ~TCC, - ((0x3f & dma_chan[*lch].tcc) << 12) - | TCINTEN); - } else { - edma_parm_and(PARM_OPT, j, ~TCINTEN); - } - /* assign the link field to no link. i.e 0xffff */ - edma_parm_or(PARM_LINK_BCNTRLD, j, 0xffff); + edma_parm_and(PARM_OPT, j, ~TCINTEN); } + /* assign the link field to no link. i.e 0xffff */ + edma_parm_or(PARM_LINK_BCNTRLD, j, 0xffff); } return ret_val; } @@ -1147,14 +974,12 @@ EXPORT_SYMBOL(davinci_request_dma); *****************************************************************************/ void davinci_free_dma(int lch) { - if (DAVINCI_EDMA_IS_Q(lch)) - lch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART]; LOCK; dma_chan[lch].in_use = 0; UNLOCK; free_param(dma_chan[lch].param_no); - if ((lch >= 0) && (lch < DAVINCI_EDMA_QEND)) + if ((lch >= 0) && (lch < DAVINCI_EDMA_NUM_DMACH)) free_dma_interrupt(dma_chan[lch].tcc); } EXPORT_SYMBOL(davinci_free_dma); @@ -1171,8 +996,6 @@ EXPORT_SYMBOL(davinci_free_dma); void davinci_set_dma_src_params(int lch, unsigned long src_port, enum address_mode mode, enum fifo_width width) { - if (DAVINCI_EDMA_IS_Q(lch)) - lch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART]; if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) { int j = dma_chan[lch].param_no; unsigned int i = edma_parm_read(PARM_OPT, j); @@ -1204,8 +1027,6 @@ EXPORT_SYMBOL(davinci_set_dma_src_params void davinci_set_dma_dest_params(int lch, unsigned long dest_port, enum address_mode mode, enum fifo_width width) { - if (DAVINCI_EDMA_IS_Q(lch)) - lch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART]; if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) { int j = dma_chan[lch].param_no; unsigned int i = edma_parm_read(PARM_OPT, j); @@ -1235,8 +1056,6 @@ EXPORT_SYMBOL(davinci_set_dma_dest_param *****************************************************************************/ void davinci_set_dma_src_index(int lch, short src_bidx, short src_cidx) { - if (DAVINCI_EDMA_IS_Q(lch)) - lch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART]; if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) { edma_parm_modify(PARM_SRC_DST_BIDX, dma_chan[lch].param_no, 0xffff0000, src_bidx); @@ -1257,8 +1076,6 @@ EXPORT_SYMBOL(davinci_set_dma_src_index) *****************************************************************************/ void davinci_set_dma_dest_index(int lch, short dest_bidx, short dest_cidx) { - if (DAVINCI_EDMA_IS_Q(lch)) - lch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART]; if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) { edma_parm_modify(PARM_SRC_DST_BIDX, dma_chan[lch].param_no, 0x0000ffff, dest_bidx << 16); @@ -1284,8 +1101,6 @@ void davinci_set_dma_transfer_params(int unsigned short bcntrld, enum sync_dimension sync_mode) { - if (DAVINCI_EDMA_IS_Q(lch)) - lch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART]; if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) { int j = dma_chan[lch].param_no; edma_parm_modify(PARM_LINK_BCNTRLD, j, @@ -1310,8 +1125,6 @@ EXPORT_SYMBOL(davinci_set_dma_transfer_p *****************************************************************************/ void davinci_set_dma_params(int lch, edmacc_paramentry_regs *temp) { - if (DAVINCI_EDMA_IS_Q(lch)) - lch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART]; if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) { int j = dma_chan[lch].param_no; edma_parm_write(PARM_OPT, j, temp->opt); @@ -1335,8 +1148,6 @@ EXPORT_SYMBOL(davinci_set_dma_params); *****************************************************************************/ void davinci_get_dma_params(int lch, edmacc_paramentry_regs *temp) { - if (DAVINCI_EDMA_IS_Q(lch)) - lch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART]; if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) { int j = dma_chan[lch].param_no; temp->opt = edma_parm_read(PARM_OPT, j); @@ -1405,8 +1216,6 @@ int davinci_start_dma(int lch) edma_shadow0_write_array(SH_EESR, j, mask); dev_dbg(&edma_dev.dev, "EER%d=%x\r\n", j, edma_shadow0_read_array(SH_EER, j)); - } else if (DAVINCI_EDMA_IS_Q(lch)) { - edma_shadow0_write(SH_QEESR, 1 << (lch - DAVINCI_EDMA_QSTART)); } else { /* for slaveChannels */ ret_val = -EINVAL; } @@ -1452,14 +1261,7 @@ void davinci_stop_dma(int lch) /* don't clear link until audio driver fixed * edma_parm_or(PARM_LINK_BCNTRLD, lch, 0xffff); */ - } else if (DAVINCI_EDMA_IS_Q(lch)) { - /* for QDMA channels */ - edma_shadow0_write(SH_QEECR, 1 << (lch - DAVINCI_EDMA_QSTART)); - dev_dbg(&edma_dev.dev, "QER=%x\r\n", edma_shadow0_read(SH_QER)); - dev_dbg(&edma_dev.dev, "QEER=%x\r\n", - edma_shadow0_read(SH_QEER)); - } else if ((lch >= DAVINCI_EDMA_QEND) && - (lch < DAVINCI_EDMA_NUM_PARAMENTRY)) { + } else { /* for slaveChannels */ edma_parm_or(PARM_LINK_BCNTRLD, lch, 0xffff); } @@ -1479,10 +1281,6 @@ EXPORT_SYMBOL(davinci_stop_dma); *****************************************************************************/ void davinci_dma_link_lch(int lch, int lch_que) { - if (DAVINCI_EDMA_IS_Q(lch)) - lch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART]; - if (DAVINCI_EDMA_IS_Q(lch_que)) - lch_que = qdam_to_param_mapping[lch_que - DAVINCI_EDMA_QSTART]; if ((lch >= 0) && (lch < DAVINCI_EDMA_NUM_PARAMENTRY) && (lch_que >= 0) && (lch_que < DAVINCI_EDMA_NUM_PARAMENTRY)) { /* program LINK */ @@ -1506,10 +1304,6 @@ EXPORT_SYMBOL(davinci_dma_link_lch); *****************************************************************************/ void davinci_dma_unlink_lch(int lch, int lch_que) { - if (DAVINCI_EDMA_IS_Q(lch)) - lch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART]; - if (DAVINCI_EDMA_IS_Q(lch_que)) - lch_que = qdam_to_param_mapping[lch_que - DAVINCI_EDMA_QSTART]; if ((lch >= 0) && (lch < DAVINCI_EDMA_NUM_PARAMENTRY) && (lch_que >= 0) && (lch_que < DAVINCI_EDMA_NUM_PARAMENTRY)) { edma_parm_or(PARM_LINK_BCNTRLD, dma_chan[lch].param_no, @@ -1530,12 +1324,8 @@ EXPORT_SYMBOL(davinci_dma_unlink_lch); *****************************************************************************/ void davinci_dma_chain_lch(int lch, int lch_que) { - if (DAVINCI_EDMA_IS_Q(lch)) - lch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART]; - if (DAVINCI_EDMA_IS_Q(lch_que)) - lch_que = qdam_to_param_mapping[lch_que - DAVINCI_EDMA_QSTART]; - if ((lch >= 0) && (lch < DAVINCI_EDMA_QEND) && - (lch_que >= 0) && (lch_que < DAVINCI_EDMA_QEND)) { + if ((lch >= 0) && (lch < DAVINCI_EDMA_NUM_DMACH) && + (lch_que >= 0) && (lch_que < DAVINCI_EDMA_NUM_DMACH)) { /* program tcc */ edma_parm_modify(PARM_OPT, lch, ~TCC, ((lch_que & 0x3f) << 12) | TCCHEN); @@ -1554,13 +1344,9 @@ EXPORT_SYMBOL(davinci_dma_chain_lch); *****************************************************************************/ void davinci_dma_unchain_lch(int lch, int lch_que) { - if (DAVINCI_EDMA_IS_Q(lch)) - lch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART]; - if (DAVINCI_EDMA_IS_Q(lch_que)) - lch_que = qdam_to_param_mapping[lch_que - DAVINCI_EDMA_QSTART]; /* reset TCCHEN */ - if ((lch >= 0) && (lch < DAVINCI_EDMA_QEND) && - (lch_que >= 0) && (lch_que < DAVINCI_EDMA_QEND)) { + if ((lch >= 0) && (lch < DAVINCI_EDMA_NUM_DMACH) && + (lch_que >= 0) && (lch_que < DAVINCI_EDMA_NUM_DMACH)) { edma_parm_and(PARM_OPT, lch, ~TCCHEN); } } --- a/arch/arm/mach-davinci/include/mach/edma.h +++ b/arch/arm/mach-davinci/include/mach/edma.h @@ -25,23 +25,31 @@ * 675 Mass Ave, Cambridge, MA 02139, USA. * */ -/****************************************************************************** - * DMA driver for DaVinci - * DMA driver for Davinci abstractes each ParamEntry as a Logical DMA channel - * for the user.So on Davinci the user can request 128 DAM channels + +/* + * The EDMA3 framework for DaVinci abstracts DMA Parameter RAM (PaRAM) slots + * as logical DMA channels. There are two types of logical channel: * - * Actual Physical DMA channels = 64 EDMA channels + 8 QDMA channels + * Master Triggers transfers, usually from a hardware event but + * also manually or by "chaining" from DMA completions. + * Not all PaRAM slots may be masters; and not all masters + * support hardware event triggering. * - * On davinci user can request for two kinds of Logical DMA channels - * DMA MasterChannel -> ParamEntry which is associated with a DMA channel. - * On Davinci there are (64 + 8) MasterChanneles - * MasterChannel can be triggered by an event or manually + * Slave A master may be linked to a "slave" PaRAM slot, used to + * reload master parameters when a transfer finishes. Any + * PaRAM slot may be such a link target. * - * DMA SlaveChannel -> ParamEntry which is not associated with DMA cahnnel but - * which can be used to associate with MasterChannel. - * On Davinci there are (128-(64 + 8)) SlaveChannels - * SlaveChannel can only be triggered by a MasterChannel + * Each PaRAM slot holds a DMA transfer descriptor with destination and + * source addresses, a link to the next PaRAM slot (if any), options for + * the transfer, and instructions for updating those addresses. + * + * The EDMA Channel Controller (CC) maps requests from master channels + * into physical Transfer Controller (TC) requests when the master + * triggers. The two physical DMA channels provided by the TC are thus + * shared by many logical channels. * + * DaVinci hardware also has a "QDMA" mechanism which is not currently + * supported through this interface. (DSP firmware uses it though.) */ #ifndef EDMA_H_ @@ -87,17 +95,11 @@ typedef struct { #define TRWORD (0x7<<2) #define PAENTRY (0x1ff<<5) -/*if changing the QDMA_TRWORD do appropriate change in davinci_start_dma */ -#define QDMA_TRWORD (7 & 0x7) /*Used by driver*/ #define DAVINCI_EDMA_NUM_DMACH 64 -#define DAVINCI_EDMA_NUM_QDMACH 8 -#define DAVINCI_EDMA_QSTART DAVINCI_EDMA_NUM_DMACH -#define DAVINCI_EDMA_QEND (DAVINCI_EDMA_QSTART + DAVINCI_EDMA_NUM_QDMACH) -#define DAVINCI_EDMA_IS_Q(ch_no) \ - ((ch_no >= DAVINCI_EDMA_QSTART) && (ch_no < DAVINCI_EDMA_QEND)) + #define DAVINCI_EDMA_NUM_PARAMENTRY 128 #define DAVINCI_EDMA_NUM_EVQUE 2 #define DAVINCI_EDMA_CHMAPEXIST 0 @@ -153,14 +155,6 @@ typedef struct { #define DAVINCI_DMA_PWM0 52 #define DAVINCI_DMA_PWM1 53 #define DAVINCI_DMA_PWM2 54 -#define DAVINCI_DMA_QDMA0 64 -#define DAVINCI_DMA_QDMA1 65 -#define DAVINCI_DMA_QDMA2 66 -#define DAVINCI_DMA_QDMA3 67 -#define DAVINCI_DMA_QDMA4 68 -#define DAVINCI_DMA_QDMA5 69 -#define DAVINCI_DMA_QDMA6 71 -#define DAVINCI_DMA_QDMA7 72 /*ch_status paramater of callback function possible values*/ #define DMA_COMPLETE 1 _______________________________________________ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source