diff options
Diffstat (limited to 'arch/arm/plat-omap')
-rw-r--r-- | arch/arm/plat-omap/dma.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index e06c34bdc34a..4d463ca6821f 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -701,8 +701,8 @@ int omap_request_dma(int dev_id, const char *dev_name, | |||
701 | for (ch = 0; ch < dma_chan_count; ch++) { | 701 | for (ch = 0; ch < dma_chan_count; ch++) { |
702 | if (free_ch == -1 && dma_chan[ch].dev_id == -1) { | 702 | if (free_ch == -1 && dma_chan[ch].dev_id == -1) { |
703 | free_ch = ch; | 703 | free_ch = ch; |
704 | if (dev_id == 0) | 704 | /* Exit after first free channel found */ |
705 | break; | 705 | break; |
706 | } | 706 | } |
707 | } | 707 | } |
708 | if (free_ch == -1) { | 708 | if (free_ch == -1) { |
@@ -894,11 +894,12 @@ void omap_start_dma(int lch) | |||
894 | int next_lch, cur_lch; | 894 | int next_lch, cur_lch; |
895 | char dma_chan_link_map[MAX_LOGICAL_DMA_CH_COUNT]; | 895 | char dma_chan_link_map[MAX_LOGICAL_DMA_CH_COUNT]; |
896 | 896 | ||
897 | dma_chan_link_map[lch] = 1; | ||
898 | /* Set the link register of the first channel */ | 897 | /* Set the link register of the first channel */ |
899 | enable_lnk(lch); | 898 | enable_lnk(lch); |
900 | 899 | ||
901 | memset(dma_chan_link_map, 0, sizeof(dma_chan_link_map)); | 900 | memset(dma_chan_link_map, 0, sizeof(dma_chan_link_map)); |
901 | dma_chan_link_map[lch] = 1; | ||
902 | |||
902 | cur_lch = dma_chan[lch].next_lch; | 903 | cur_lch = dma_chan[lch].next_lch; |
903 | do { | 904 | do { |
904 | next_lch = dma_chan[cur_lch].next_lch; | 905 | next_lch = dma_chan[cur_lch].next_lch; |
@@ -2110,8 +2111,6 @@ exit_dma_irq_fail: | |||
2110 | } | 2111 | } |
2111 | 2112 | ||
2112 | exit_dma_lch_fail: | 2113 | exit_dma_lch_fail: |
2113 | kfree(p); | ||
2114 | kfree(d); | ||
2115 | kfree(dma_chan); | 2114 | kfree(dma_chan); |
2116 | return ret; | 2115 | return ret; |
2117 | } | 2116 | } |
@@ -2132,8 +2131,6 @@ static int omap_system_dma_remove(struct platform_device *pdev) | |||
2132 | free_irq(dma_irq, (void *)(irq_rel + 1)); | 2131 | free_irq(dma_irq, (void *)(irq_rel + 1)); |
2133 | } | 2132 | } |
2134 | } | 2133 | } |
2135 | kfree(p); | ||
2136 | kfree(d); | ||
2137 | kfree(dma_chan); | 2134 | kfree(dma_chan); |
2138 | return 0; | 2135 | return 0; |
2139 | } | 2136 | } |