git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ARM: OMAP: dma: Fix the dma_chan_link_map init order
[pandora-kernel.git]
/
arch
/
arm
/
plat-omap
/
dma.c
diff --git
a/arch/arm/plat-omap/dma.c
b/arch/arm/plat-omap/dma.c
index
78f45de
..
e3e3559
100644
(file)
--- a/
arch/arm/plat-omap/dma.c
+++ b/
arch/arm/plat-omap/dma.c
@@
-689,8
+689,8
@@
int omap_request_dma(int dev_id, const char *dev_name,
for (ch = 0; ch < dma_chan_count; ch++) {
if (free_ch == -1 && dma_chan[ch].dev_id == -1) {
free_ch = ch;
for (ch = 0; ch < dma_chan_count; ch++) {
if (free_ch == -1 && dma_chan[ch].dev_id == -1) {
free_ch = ch;
- if (dev_id == 0)
-
break;
+ /* Exit after first free channel found */
+ break;
}
}
if (free_ch == -1) {
}
}
if (free_ch == -1) {
@@
-882,11
+882,12
@@
void omap_start_dma(int lch)
int next_lch, cur_lch;
char dma_chan_link_map[dma_lch_count];
int next_lch, cur_lch;
char dma_chan_link_map[dma_lch_count];
- dma_chan_link_map[lch] = 1;
/* Set the link register of the first channel */
enable_lnk(lch);
memset(dma_chan_link_map, 0, sizeof(dma_chan_link_map));
/* Set the link register of the first channel */
enable_lnk(lch);
memset(dma_chan_link_map, 0, sizeof(dma_chan_link_map));
+ dma_chan_link_map[lch] = 1;
+
cur_lch = dma_chan[lch].next_lch;
do {
next_lch = dma_chan[cur_lch].next_lch;
cur_lch = dma_chan[lch].next_lch;
do {
next_lch = dma_chan[cur_lch].next_lch;
@@
-2013,7
+2014,7
@@
static int __devinit omap_system_dma_probe(struct platform_device *pdev)
errata = p->errata;
if ((d->dev_caps & RESERVE_CHANNEL) && omap_dma_reserve_channels
errata = p->errata;
if ((d->dev_caps & RESERVE_CHANNEL) && omap_dma_reserve_channels
- && (omap_dma_reserve_channels <
= dma_
lch_count))
+ && (omap_dma_reserve_channels <
d->
lch_count))
d->lch_count = omap_dma_reserve_channels;
dma_lch_count = d->lch_count;
d->lch_count = omap_dma_reserve_channels;
dma_lch_count = d->lch_count;