X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=blobdiff_plain;f=arch%2Farm%2Fplat-omap%2Fdma.c;h=96c14a3208e510ba4d5cd00cfefab50a399ed1de;hp=d6bf94fc9afbb0a3e8ef241106d8390652af2b83;hb=fd15ae01c5b1c73f2c992afd219bd18856ae3e48;hpb=f8f7d76872a85cebda68cd0b9c0dcbb7a35ef3eb diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index d6bf94fc9afb..96c14a3208e5 100644 --- 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; - if (dev_id == 0) - break; + /* Exit after first free channel found */ + break; } } 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]; - 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)); + dma_chan_link_map[lch] = 1; + cur_lch = dma_chan[lch].next_lch; do { next_lch = dma_chan[cur_lch].next_lch; @@ -2076,6 +2077,7 @@ static int __devinit omap_system_dma_probe(struct platform_device *pdev) dma_irq = platform_get_irq_byname(pdev, irq_name); if (dma_irq < 0) { dev_err(&pdev->dev, "failed: request IRQ %d", dma_irq); + ret = dma_irq; goto exit_dma_lch_fail; } ret = setup_irq(dma_irq, &omap24xx_dma_irq); @@ -2106,8 +2108,6 @@ exit_dma_irq_fail: } exit_dma_lch_fail: - kfree(p); - kfree(d); kfree(dma_chan); return ret; } @@ -2128,8 +2128,6 @@ static int __devexit omap_system_dma_remove(struct platform_device *pdev) free_irq(dma_irq, (void *)(irq_rel + 1)); } } - kfree(p); - kfree(d); kfree(dma_chan); return 0; }