Commit 90ce731a authored by Troy Kisky's avatar Troy Kisky Committed by Kevin Hilman

ARM: DaVinci: dma: readability change

Use macro DAVINCI_EDMA_IS_Q to make
code easier to read
Signed-off-by: default avatarTroy Kisky <troy.kisky@boundarydevices.com>
Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
parent 8d073a22
...@@ -176,10 +176,8 @@ static void map_dmach_queue(int ch_no, int queue_no) ...@@ -176,10 +176,8 @@ static void map_dmach_queue(int ch_no, int queue_no)
ptr_edmacc_regs->dmaqnum[ch_no >> 3] &= (~(0x7 << bit_start)); ptr_edmacc_regs->dmaqnum[ch_no >> 3] &= (~(0x7 << bit_start));
ptr_edmacc_regs->dmaqnum[ch_no >> 3] |= ptr_edmacc_regs->dmaqnum[ch_no >> 3] |=
((queue_no & 0x7) << bit_start); ((queue_no & 0x7) << bit_start);
} else if (ch_no >= DAVINCI_EDMA_NUM_DMACH } else if (DAVINCI_EDMA_IS_Q(ch_no)) {
&& int bit_start = (ch_no - DAVINCI_EDMA_QSTART) * 4;
ch_no < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) {
int bit_start = (ch_no - DAVINCI_EDMA_NUM_DMACH) * 4;
ptr_edmacc_regs->qdmaqnum &= (~(0x7 << bit_start)); ptr_edmacc_regs->qdmaqnum &= (~(0x7 << bit_start));
ptr_edmacc_regs->qdmaqnum |= ((queue_no & 0x7) << bit_start); ptr_edmacc_regs->qdmaqnum |= ((queue_no & 0x7) << bit_start);
} }
...@@ -189,11 +187,10 @@ static void map_dmach_queue(int ch_no, int queue_no) ...@@ -189,11 +187,10 @@ static void map_dmach_queue(int ch_no, int queue_no)
entry */ entry */
static void map_dmach_param(int ch_no, int param_no) static void map_dmach_param(int ch_no, int param_no)
{ {
if (ch_no >= DAVINCI_EDMA_NUM_DMACH if (DAVINCI_EDMA_IS_Q(ch_no)) {
&& ch_no < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { ptr_edmacc_regs->qchmap[ch_no - DAVINCI_EDMA_QSTART] &=
ptr_edmacc_regs->qchmap[ch_no - DAVINCI_EDMA_NUM_DMACH] &=
~(PAENTRY | TRWORD); ~(PAENTRY | TRWORD);
ptr_edmacc_regs->qchmap[ch_no - DAVINCI_EDMA_NUM_DMACH] |= ptr_edmacc_regs->qchmap[ch_no - DAVINCI_EDMA_QSTART] |=
(((param_no & 0x1ff) << 5) | (QDMA_TRWORD << 2)); (((param_no & 0x1ff) << 5) | (QDMA_TRWORD << 2));
} }
} }
...@@ -353,8 +350,7 @@ static int request_dma_interrupt(int lch, ...@@ -353,8 +350,7 @@ static int request_dma_interrupt(int lch,
} }
/* qdma channels */ /* qdma channels */
else if (lch >= DAVINCI_EDMA_NUM_DMACH else if (DAVINCI_EDMA_IS_Q(lch)) {
&& lch < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) {
if (requested_tcc != TCC_ANY) { if (requested_tcc != TCC_ANY) {
/* Complete allocation algo requires lock and as it's /* Complete allocation algo requires lock and as it's
shared resources could be invoked by several thread. shared resources could be invoked by several thread.
...@@ -432,8 +428,7 @@ static int request_dma_interrupt(int lch, ...@@ -432,8 +428,7 @@ static int request_dma_interrupt(int lch,
if (is_break) { if (is_break) {
dev_dbg(&edma_dev.dev, "While allocating EDMA channel for QDMA"); dev_dbg(&edma_dev.dev, "While allocating EDMA channel for QDMA");
} }
if (lch >= DAVINCI_EDMA_NUM_DMACH && lch < if (DAVINCI_EDMA_IS_Q(lch)) {
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) {
if (free_intr_no < 32) { if (free_intr_no < 32) {
ptr_edmacc_regs->dra[0].drae = ptr_edmacc_regs->dra[0].drae =
ptr_edmacc_regs->dra[0].drae | (1 << free_intr_no); ptr_edmacc_regs->dra[0].drae | (1 << free_intr_no);
...@@ -765,11 +760,9 @@ int davinci_request_dma(int dev_id, const char *name, ...@@ -765,11 +760,9 @@ int davinci_request_dma(int dev_id, const char *name,
dev_id); dev_id);
return -EINVAL; return -EINVAL;
} }
} else if (dev_id >= DAVINCI_EDMA_NUM_DMACH } else if (DAVINCI_EDMA_IS_Q(dev_id)) {
&& dev_id <=
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) {
if (!(qdma_channels_arm[0] & if (!(qdma_channels_arm[0] &
(0x1 << (dev_id - DAVINCI_EDMA_NUM_DMACH)))) { (0x1 << (dev_id - DAVINCI_EDMA_QSTART)))) {
dev_dbg(&edma_dev.dev, dev_dbg(&edma_dev.dev,
"dev_id = %d not supported on ARM side\r\n", "dev_id = %d not supported on ARM side\r\n",
...@@ -780,13 +773,10 @@ int davinci_request_dma(int dev_id, const char *name, ...@@ -780,13 +773,10 @@ int davinci_request_dma(int dev_id, const char *name,
if ((dev_id != DAVINCI_DMA_CHANNEL_ANY) if ((dev_id != DAVINCI_DMA_CHANNEL_ANY)
&& (dev_id != DAVINCI_EDMA_PARAM_ANY)) { && (dev_id != DAVINCI_EDMA_PARAM_ANY)) {
if (dev_id >= DAVINCI_EDMA_NUM_DMACH if (DAVINCI_EDMA_IS_Q(dev_id)) {
&&
dev_id < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)
) {
ptr_edmacc_regs->qrae[0] = ptr_edmacc_regs->qrae[0] =
ptr_edmacc_regs->qrae[0] | ptr_edmacc_regs->qrae[0] |
(1 << (dev_id - DAVINCI_EDMA_NUM_DMACH)); (1 << (dev_id - DAVINCI_EDMA_QSTART));
} else { } else {
if (dev_id < 32) { if (dev_id < 32) {
ptr_edmacc_regs->dra[0].drae = ptr_edmacc_regs->dra[0].drae =
...@@ -844,13 +834,12 @@ int davinci_request_dma(int dev_id, const char *name, ...@@ -844,13 +834,12 @@ int davinci_request_dma(int dev_id, const char *name,
ret_val = -EINVAL; ret_val = -EINVAL;
} }
else if (dev_id >= DAVINCI_EDMA_NUM_DMACH && dev_id < else if (DAVINCI_EDMA_IS_Q(dev_id)) {
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { if ((qdam_to_param_mapping[dev_id - DAVINCI_EDMA_QSTART] !=
if ((qdam_to_param_mapping[dev_id - DAVINCI_EDMA_NUM_DMACH] !=
-1) -1)
&& &&
(dma_chan (dma_chan
[qdam_to_param_mapping[dev_id - DAVINCI_EDMA_NUM_DMACH]]. [qdam_to_param_mapping[dev_id - DAVINCI_EDMA_QSTART]].
in_use) in_use)
) { ) {
ret_val = -EINVAL; ret_val = -EINVAL;
...@@ -895,18 +884,12 @@ int davinci_request_dma(int dev_id, const char *name, ...@@ -895,18 +884,12 @@ int davinci_request_dma(int dev_id, const char *name,
} }
dev_dbg(&edma_dev.dev, "param_no=%d\r\n", dev_dbg(&edma_dev.dev, "param_no=%d\r\n",
dma_chan[*lch].param_no); dma_chan[*lch].param_no);
if (dma_chan[*lch].param_no >= if (DAVINCI_EDMA_IS_Q(
DAVINCI_EDMA_NUM_DMACH dma_chan[*lch].param_no)) {
&&
dma_chan[*lch].param_no <
(DAVINCI_EDMA_NUM_DMACH +
DAVINCI_EDMA_NUM_QDMACH)
) {
ptr_edmacc_regs->qrae[0] = ptr_edmacc_regs->qrae[0] =
ptr_edmacc_regs->qrae[0] | ptr_edmacc_regs->qrae[0] |
(1 << (dma_chan[*lch].param_no - (1 << (dma_chan[*lch].param_no -
DAVINCI_EDMA_NUM_DMACH)); DAVINCI_EDMA_QSTART));
} else { } else {
if (dma_chan[*lch].param_no < 32) { if (dma_chan[*lch].param_no < 32) {
...@@ -950,7 +933,7 @@ int davinci_request_dma(int dev_id, const char *name, ...@@ -950,7 +933,7 @@ int davinci_request_dma(int dev_id, const char *name,
else if (dev_id == DAVINCI_EDMA_PARAM_ANY) { else if (dev_id == DAVINCI_EDMA_PARAM_ANY) {
ret_val = 0; ret_val = 0;
for (i = (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH); for (i = DAVINCI_EDMA_QEND;
i < DAVINCI_EDMA_NUM_PARAMENTRY; i++) { i < DAVINCI_EDMA_NUM_PARAMENTRY; i++) {
if (!dma_chan[i].in_use) { if (!dma_chan[i].in_use) {
dev_dbg(&edma_dev.dev, "any link = %d\r\n", i); dev_dbg(&edma_dev.dev, "any link = %d\r\n", i);
...@@ -977,27 +960,23 @@ int davinci_request_dma(int dev_id, const char *name, ...@@ -977,27 +960,23 @@ int davinci_request_dma(int dev_id, const char *name,
ret_val = -EINVAL; ret_val = -EINVAL;
} }
if (!ret_val) { if (!ret_val) {
if (dev_id >= DAVINCI_EDMA_NUM_DMACH && dev_id < if (DAVINCI_EDMA_IS_Q(dev_id)) {
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) {
/* Master Channel */ /* Master Channel */
qdam_to_param_mapping[dev_id - qdam_to_param_mapping[dev_id - DAVINCI_EDMA_QSTART] =
DAVINCI_EDMA_NUM_DMACH] =
dma_chan[*lch].param_no; dma_chan[*lch].param_no;
LOCK; LOCK;
/* It's used global data structure and used to find out /* It's used global data structure and used to find out
whether channel is available or not */ whether channel is available or not */
dma_chan[qdam_to_param_mapping dma_chan[qdam_to_param_mapping
[dev_id - DAVINCI_EDMA_NUM_DMACH]].in_use = 1; [dev_id - DAVINCI_EDMA_QSTART]].in_use = 1;
UNLOCK; UNLOCK;
dma_chan[qdam_to_param_mapping dma_chan[qdam_to_param_mapping
[dev_id - DAVINCI_EDMA_NUM_DMACH]].dev_id = [dev_id - DAVINCI_EDMA_QSTART]].dev_id = *lch;
*lch;
dma_chan[qdam_to_param_mapping dma_chan[qdam_to_param_mapping
[dev_id - DAVINCI_EDMA_NUM_DMACH]].tcc = [dev_id - DAVINCI_EDMA_QSTART]].tcc =
dma_chan[*lch].tcc; dma_chan[*lch].tcc;
temp_ch = temp_ch = qdam_to_param_mapping
qdam_to_param_mapping[dev_id - [dev_id - DAVINCI_EDMA_QSTART];
DAVINCI_EDMA_NUM_DMACH];
dma_chan[temp_ch].param_no = dma_chan[*lch].param_no; dma_chan[temp_ch].param_no = dma_chan[*lch].param_no;
if (dma_chan[*lch].tcc != -1) { if (dma_chan[*lch].tcc != -1) {
ptr_edmacc_regs->paramentry[dma_chan[temp_ch]. ptr_edmacc_regs->paramentry[dma_chan[temp_ch].
...@@ -1064,9 +1043,8 @@ int davinci_request_dma(int dev_id, const char *name, ...@@ -1064,9 +1043,8 @@ int davinci_request_dma(int dev_id, const char *name,
void davinci_free_dma(int lch) void davinci_free_dma(int lch)
{ {
int temp_ch = 0; int temp_ch = 0;
if (lch >= DAVINCI_EDMA_NUM_DMACH && lch < if (DAVINCI_EDMA_IS_Q(lch)) {
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART];
temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_NUM_DMACH];
lch = temp_ch; lch = temp_ch;
} }
LOCK; LOCK;
...@@ -1074,10 +1052,8 @@ void davinci_free_dma(int lch) ...@@ -1074,10 +1052,8 @@ void davinci_free_dma(int lch)
UNLOCK; UNLOCK;
free_param(dma_chan[lch].param_no); free_param(dma_chan[lch].param_no);
if (lch >= 0 if ((lch >= 0) && (lch < DAVINCI_EDMA_QEND))
&& lch < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) {
free_dma_interrupt(dma_chan[lch].tcc); free_dma_interrupt(dma_chan[lch].tcc);
}
} }
/****************************************************************************** /******************************************************************************
...@@ -1093,9 +1069,8 @@ void davinci_set_dma_src_params(int lch, unsigned long src_port, ...@@ -1093,9 +1069,8 @@ void davinci_set_dma_src_params(int lch, unsigned long src_port,
enum address_mode mode, enum fifo_width width) enum address_mode mode, enum fifo_width width)
{ {
int temp_ch = 0; int temp_ch = 0;
if (lch >= DAVINCI_EDMA_NUM_DMACH && lch < if (DAVINCI_EDMA_IS_Q(lch)) {
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART];
temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_NUM_DMACH];
lch = temp_ch; lch = temp_ch;
} }
if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) { if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) {
...@@ -1130,9 +1105,8 @@ void davinci_set_dma_dest_params(int lch, unsigned long dest_port, ...@@ -1130,9 +1105,8 @@ void davinci_set_dma_dest_params(int lch, unsigned long dest_port,
enum address_mode mode, enum fifo_width width) enum address_mode mode, enum fifo_width width)
{ {
int temp_ch = 0; int temp_ch = 0;
if (lch >= DAVINCI_EDMA_NUM_DMACH && lch < if (DAVINCI_EDMA_IS_Q(lch)) {
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART];
temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_NUM_DMACH];
lch = temp_ch; lch = temp_ch;
} }
if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) { if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) {
...@@ -1165,9 +1139,8 @@ void davinci_set_dma_dest_params(int lch, unsigned long dest_port, ...@@ -1165,9 +1139,8 @@ void davinci_set_dma_dest_params(int lch, unsigned long dest_port,
void davinci_set_dma_src_index(int lch, short src_bidx, short src_cidx) void davinci_set_dma_src_index(int lch, short src_bidx, short src_cidx)
{ {
int temp_ch = 0; int temp_ch = 0;
if (lch >= DAVINCI_EDMA_NUM_DMACH && lch < if (DAVINCI_EDMA_IS_Q(lch)) {
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART];
temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_NUM_DMACH];
lch = temp_ch; lch = temp_ch;
} }
...@@ -1195,9 +1168,8 @@ void davinci_set_dma_src_index(int lch, short src_bidx, short src_cidx) ...@@ -1195,9 +1168,8 @@ void davinci_set_dma_src_index(int lch, short src_bidx, short src_cidx)
void davinci_set_dma_dest_index(int lch, short dest_bidx, short dest_cidx) void davinci_set_dma_dest_index(int lch, short dest_bidx, short dest_cidx)
{ {
int temp_ch = 0; int temp_ch = 0;
if (lch >= DAVINCI_EDMA_NUM_DMACH && lch < if (DAVINCI_EDMA_IS_Q(lch)) {
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART];
temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_NUM_DMACH];
lch = temp_ch; lch = temp_ch;
} }
if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) { if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) {
...@@ -1229,9 +1201,8 @@ void davinci_set_dma_transfer_params(int lch, unsigned short acnt, ...@@ -1229,9 +1201,8 @@ void davinci_set_dma_transfer_params(int lch, unsigned short acnt,
enum sync_dimension sync_mode) enum sync_dimension sync_mode)
{ {
int temp_ch = 0; int temp_ch = 0;
if (lch >= DAVINCI_EDMA_NUM_DMACH && lch < if (DAVINCI_EDMA_IS_Q(lch)) {
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART];
temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_NUM_DMACH];
lch = temp_ch; lch = temp_ch;
} }
if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) { if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) {
...@@ -1262,9 +1233,8 @@ void davinci_set_dma_transfer_params(int lch, unsigned short acnt, ...@@ -1262,9 +1233,8 @@ void davinci_set_dma_transfer_params(int lch, unsigned short acnt,
void davinci_set_dma_params(int lch, edmacc_paramentry_regs * temp) void davinci_set_dma_params(int lch, edmacc_paramentry_regs * temp)
{ {
int temp_ch = 0; int temp_ch = 0;
if (lch >= DAVINCI_EDMA_NUM_DMACH && lch < if (DAVINCI_EDMA_IS_Q(lch)) {
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART];
temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_NUM_DMACH];
lch = temp_ch; lch = temp_ch;
} }
if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) { if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) {
...@@ -1285,9 +1255,8 @@ void davinci_set_dma_params(int lch, edmacc_paramentry_regs * temp) ...@@ -1285,9 +1255,8 @@ void davinci_set_dma_params(int lch, edmacc_paramentry_regs * temp)
void davinci_get_dma_params(int lch, edmacc_paramentry_regs * temp) void davinci_get_dma_params(int lch, edmacc_paramentry_regs * temp)
{ {
int temp_ch = 0; int temp_ch = 0;
if (lch >= DAVINCI_EDMA_NUM_DMACH && lch < if (DAVINCI_EDMA_IS_Q(lch)) {
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_QSTART];
temp_ch = qdam_to_param_mapping[lch - DAVINCI_EDMA_NUM_DMACH];
lch = temp_ch; lch = temp_ch;
} }
if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) { if (lch >= 0 && lch < DAVINCI_EDMA_NUM_PARAMENTRY) {
...@@ -1355,11 +1324,9 @@ int davinci_start_dma(int lch) ...@@ -1355,11 +1324,9 @@ int davinci_start_dma(int lch)
ptr_edmacc_regs->shadow[0].eer); ptr_edmacc_regs->shadow[0].eer);
ret_val = 0; ret_val = 0;
} }
} else if ((lch >= DAVINCI_EDMA_NUM_DMACH) } else if (DAVINCI_EDMA_IS_Q(lch)) {
&& (lch <
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH))) {
ptr_edmacc_regs->shadow[0].qeesr = ptr_edmacc_regs->shadow[0].qeesr =
(1 << (lch - DAVINCI_EDMA_NUM_DMACH)); (1 << (lch - DAVINCI_EDMA_QSTART));
ret_val = 0; ret_val = 0;
} else { /* for slaveChannels */ } else { /* for slaveChannels */
ret_val = EINVAL; ret_val = EINVAL;
...@@ -1451,14 +1418,12 @@ void davinci_stop_dma(int lch) ...@@ -1451,14 +1418,12 @@ void davinci_stop_dma(int lch)
then just set the link field of the corresponding then just set the link field of the corresponding
param entry to 0xffff */ param entry to 0xffff */
} }
} else if ((lch >= DAVINCI_EDMA_NUM_DMACH) } else if (DAVINCI_EDMA_IS_Q(lch)) {
&&
(lch < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH))) {
/* for QDMA channels */ /* for QDMA channels */
ptr_edmacc_regs->qeecr = (1 << (lch - DAVINCI_EDMA_NUM_DMACH)); ptr_edmacc_regs->qeecr = (1 << (lch - DAVINCI_EDMA_QSTART));
dev_dbg(&edma_dev.dev, "QER=%d\r\n", ptr_edmacc_regs->qer); dev_dbg(&edma_dev.dev, "QER=%d\r\n", ptr_edmacc_regs->qer);
dev_dbg(&edma_dev.dev, "QEER=%d\r\n", ptr_edmacc_regs->qeer); dev_dbg(&edma_dev.dev, "QEER=%d\r\n", ptr_edmacc_regs->qeer);
} else if ((lch >= (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) } else if ((lch >= DAVINCI_EDMA_QEND)
&& lch < DAVINCI_EDMA_NUM_PARAMENTRY) { && lch < DAVINCI_EDMA_NUM_PARAMENTRY) {
/* for slaveChannels */ /* for slaveChannels */
ptr_edmacc_regs->paramentry[lch].link_bcntrld &= 0xffff0000; ptr_edmacc_regs->paramentry[lch].link_bcntrld &= 0xffff0000;
...@@ -1482,18 +1447,14 @@ void davinci_dma_link_lch(int lch_head, int lch_queue) ...@@ -1482,18 +1447,14 @@ void davinci_dma_link_lch(int lch_head, int lch_queue)
{ {
unsigned long link; unsigned long link;
int temp_ch = 0; int temp_ch = 0;
if (lch_head >= if (DAVINCI_EDMA_IS_Q(lch_head)) {
DAVINCI_EDMA_NUM_DMACH
&& lch_head < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) {
temp_ch = temp_ch =
qdam_to_param_mapping[lch_head - DAVINCI_EDMA_NUM_DMACH]; qdam_to_param_mapping[lch_head - DAVINCI_EDMA_QSTART];
lch_head = temp_ch; lch_head = temp_ch;
} }
if (lch_queue >= if (DAVINCI_EDMA_IS_Q(lch_queue)) {
DAVINCI_EDMA_NUM_DMACH
&& lch_queue < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) {
temp_ch = temp_ch =
qdam_to_param_mapping[lch_queue - DAVINCI_EDMA_NUM_DMACH]; qdam_to_param_mapping[lch_queue - DAVINCI_EDMA_QSTART];
lch_queue = temp_ch; lch_queue = temp_ch;
} }
if ((lch_head >= 0 && lch_head < DAVINCI_EDMA_NUM_PARAMENTRY) if ((lch_head >= 0 && lch_head < DAVINCI_EDMA_NUM_PARAMENTRY)
...@@ -1529,18 +1490,14 @@ void davinci_dma_link_lch(int lch_head, int lch_queue) ...@@ -1529,18 +1490,14 @@ void davinci_dma_link_lch(int lch_head, int lch_queue)
void davinci_dma_unlink_lch(int lch_head, int lch_queue) void davinci_dma_unlink_lch(int lch_head, int lch_queue)
{ {
int temp_ch = 0; int temp_ch = 0;
if (lch_head >= if (DAVINCI_EDMA_IS_Q(lch_head)) {
DAVINCI_EDMA_NUM_DMACH
&& lch_head < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) {
temp_ch = temp_ch =
qdam_to_param_mapping[lch_head - DAVINCI_EDMA_NUM_DMACH]; qdam_to_param_mapping[lch_head - DAVINCI_EDMA_QSTART];
lch_head = temp_ch; lch_head = temp_ch;
} }
if (lch_queue >= if (DAVINCI_EDMA_IS_Q(lch_queue)) {
DAVINCI_EDMA_NUM_DMACH
&& lch_queue < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) {
temp_ch = temp_ch =
qdam_to_param_mapping[lch_queue - DAVINCI_EDMA_NUM_DMACH]; qdam_to_param_mapping[lch_queue - DAVINCI_EDMA_QSTART];
lch_queue = temp_ch; lch_queue = temp_ch;
} }
if ((lch_head >= 0 && lch_head < DAVINCI_EDMA_NUM_PARAMENTRY) if ((lch_head >= 0 && lch_head < DAVINCI_EDMA_NUM_PARAMENTRY)
...@@ -1564,26 +1521,20 @@ void davinci_dma_unlink_lch(int lch_head, int lch_queue) ...@@ -1564,26 +1521,20 @@ void davinci_dma_unlink_lch(int lch_head, int lch_queue)
void davinci_dma_chain_lch(int lch_head, int lch_queue) void davinci_dma_chain_lch(int lch_head, int lch_queue)
{ {
int temp_ch = 0; int temp_ch = 0;
if (lch_head >= if (DAVINCI_EDMA_IS_Q(lch_head)) {
DAVINCI_EDMA_NUM_DMACH temp_ch = qdam_to_param_mapping
&& lch_head < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { [lch_head - DAVINCI_EDMA_QSTART];
temp_ch =
qdam_to_param_mapping[lch_head - DAVINCI_EDMA_NUM_DMACH];
lch_head = temp_ch; lch_head = temp_ch;
} }
if (lch_queue >= if (DAVINCI_EDMA_IS_Q(lch_queue)) {
DAVINCI_EDMA_NUM_DMACH temp_ch = qdam_to_param_mapping
&& lch_queue < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { [lch_queue - DAVINCI_EDMA_QSTART];
temp_ch =
qdam_to_param_mapping[lch_queue - DAVINCI_EDMA_NUM_DMACH];
lch_queue = temp_ch; lch_queue = temp_ch;
} }
if ((lch_head >= 0 if ((lch_head >= 0) &&
&& lch_head < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) (lch_head < DAVINCI_EDMA_QEND) &&
&& (lch_queue >= 0) &&
(lch_queue >= 0 (lch_queue < DAVINCI_EDMA_QEND)) {
&& lch_queue < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH))
) { /* set TCCHEN */
/* set TCCHEN */ /* set TCCHEN */
ptr_edmacc_regs->paramentry[lch_head].opt |= TCCHEN; ptr_edmacc_regs->paramentry[lch_head].opt |= TCCHEN;
/* program tcc */ /* program tcc */
...@@ -1605,25 +1556,20 @@ void davinci_dma_chain_lch(int lch_head, int lch_queue) ...@@ -1605,25 +1556,20 @@ void davinci_dma_chain_lch(int lch_head, int lch_queue)
void davinci_dma_unchain_lch(int lch_head, int lch_queue) void davinci_dma_unchain_lch(int lch_head, int lch_queue)
{ {
int temp_ch = 0; int temp_ch = 0;
if (lch_head >= if (DAVINCI_EDMA_IS_Q(lch_head)) {
DAVINCI_EDMA_NUM_DMACH temp_ch = qdam_to_param_mapping
&& lch_head < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { [lch_head - DAVINCI_EDMA_QSTART];
temp_ch =
qdam_to_param_mapping[lch_head - DAVINCI_EDMA_NUM_DMACH];
lch_head = temp_ch; lch_head = temp_ch;
} }
if (lch_queue >= if (DAVINCI_EDMA_IS_Q(lch_queue)) {
DAVINCI_EDMA_NUM_DMACH temp_ch = qdam_to_param_mapping
&& lch_queue < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) { [lch_queue - DAVINCI_EDMA_QSTART];
temp_ch =
qdam_to_param_mapping[lch_queue - DAVINCI_EDMA_NUM_DMACH];
lch_queue = temp_ch; lch_queue = temp_ch;
} }
if ((lch_head >= 0 if ((lch_head >= 0) &&
&& lch_head < (DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH)) (lch_head < DAVINCI_EDMA_QEND) &&
&& (lch_queue >= 0 (lch_queue >= 0) &&
&& lch_queue < (lch_queue < DAVINCI_EDMA_QEND)) {
(DAVINCI_EDMA_NUM_DMACH + DAVINCI_EDMA_NUM_QDMACH))) {
/* reset TCCHEN */ /* reset TCCHEN */
ptr_edmacc_regs->paramentry[lch_head].opt &= ~TCCHEN; ptr_edmacc_regs->paramentry[lch_head].opt &= ~TCCHEN;
} }
......
...@@ -236,6 +236,10 @@ typedef struct { ...@@ -236,6 +236,10 @@ typedef struct {
#define DAVINCI_EDMA_NUM_DMACH 64 #define DAVINCI_EDMA_NUM_DMACH 64
#define DAVINCI_EDMA_NUM_QDMACH 8 #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_PARAMENTRY 128
#define DAVINCI_EDMA_NUM_EVQUE 2 #define DAVINCI_EDMA_NUM_EVQUE 2
#define DAVINCI_EDMA_CHMAPEXIST 0 #define DAVINCI_EDMA_CHMAPEXIST 0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment