aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-davinci/dma.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/arm/mach-davinci/dma.c b/arch/arm/mach-davinci/dma.c
index 97a49f98fe1..89a3dccde19 100644
--- a/arch/arm/mach-davinci/dma.c
+++ b/arch/arm/mach-davinci/dma.c
@@ -595,7 +595,7 @@ int edma_alloc_channel(int channel,
595 void *data, 595 void *data,
596 enum dma_event_q eventq_no) 596 enum dma_event_q eventq_no)
597{ 597{
598 unsigned i, done, ctlr = 0; 598 unsigned i, done = 0, ctlr = 0;
599 599
600 if (channel >= 0) { 600 if (channel >= 0) {
601 ctlr = EDMA_CTLR(channel); 601 ctlr = EDMA_CTLR(channel);
@@ -611,7 +611,7 @@ int edma_alloc_channel(int channel,
611 edma_info[i]->num_channels, 611 edma_info[i]->num_channels,
612 channel); 612 channel);
613 if (channel == edma_info[i]->num_channels) 613 if (channel == edma_info[i]->num_channels)
614 return -ENOMEM; 614 break;
615 if (!test_and_set_bit(channel, 615 if (!test_and_set_bit(channel,
616 edma_info[i]->edma_inuse)) { 616 edma_info[i]->edma_inuse)) {
617 done = 1; 617 done = 1;
@@ -623,6 +623,8 @@ int edma_alloc_channel(int channel,
623 if (done) 623 if (done)
624 break; 624 break;
625 } 625 }
626 if (!done)
627 return -ENOMEM;
626 } else if (channel >= edma_info[ctlr]->num_channels) { 628 } else if (channel >= edma_info[ctlr]->num_channels) {
627 return -EINVAL; 629 return -EINVAL;
628 } else if (test_and_set_bit(channel, edma_info[ctlr]->edma_inuse)) { 630 } else if (test_and_set_bit(channel, edma_info[ctlr]->edma_inuse)) {