diff options
-rw-r--r-- | arch/arm/plat-omap/dma.c | 62 | ||||
-rw-r--r-- | include/asm-arm/arch-omap/dma.h | 7 |
2 files changed, 44 insertions, 25 deletions
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 39c637b0ffea..02f00a98783f 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -72,7 +72,6 @@ struct omap_dma_lch { | |||
72 | long flags; | 72 | long flags; |
73 | }; | 73 | }; |
74 | 74 | ||
75 | #ifndef CONFIG_ARCH_OMAP1 | ||
76 | struct dma_link_info { | 75 | struct dma_link_info { |
77 | int *linked_dmach_q; | 76 | int *linked_dmach_q; |
78 | int no_of_lchs_linked; | 77 | int no_of_lchs_linked; |
@@ -86,7 +85,9 @@ struct dma_link_info { | |||
86 | 85 | ||
87 | }; | 86 | }; |
88 | 87 | ||
89 | static struct dma_link_info dma_linked_lch[OMAP_LOGICAL_DMA_CH_COUNT]; | 88 | static struct dma_link_info *dma_linked_lch; |
89 | |||
90 | #ifndef CONFIG_ARCH_OMAP1 | ||
90 | 91 | ||
91 | /* Chain handling macros */ | 92 | /* Chain handling macros */ |
92 | #define OMAP_DMA_CHAIN_QINIT(chain_id) \ | 93 | #define OMAP_DMA_CHAIN_QINIT(chain_id) \ |
@@ -119,12 +120,14 @@ static struct dma_link_info dma_linked_lch[OMAP_LOGICAL_DMA_CH_COUNT]; | |||
119 | dma_linked_lch[chain_id].q_count++; \ | 120 | dma_linked_lch[chain_id].q_count++; \ |
120 | } while (0) | 121 | } while (0) |
121 | #endif | 122 | #endif |
123 | |||
124 | static int dma_lch_count; | ||
122 | static int dma_chan_count; | 125 | static int dma_chan_count; |
123 | 126 | ||
124 | static spinlock_t dma_chan_lock; | 127 | static spinlock_t dma_chan_lock; |
125 | static struct omap_dma_lch dma_chan[OMAP_LOGICAL_DMA_CH_COUNT]; | 128 | static struct omap_dma_lch *dma_chan; |
126 | 129 | ||
127 | static const u8 omap1_dma_irq[OMAP_LOGICAL_DMA_CH_COUNT] = { | 130 | static const u8 omap1_dma_irq[OMAP1_LOGICAL_DMA_CH_COUNT] = { |
128 | INT_DMA_CH0_6, INT_DMA_CH1_7, INT_DMA_CH2_8, INT_DMA_CH3, | 131 | INT_DMA_CH0_6, INT_DMA_CH1_7, INT_DMA_CH2_8, INT_DMA_CH3, |
129 | INT_DMA_CH4, INT_DMA_CH5, INT_1610_DMA_CH6, INT_1610_DMA_CH7, | 132 | INT_DMA_CH4, INT_DMA_CH5, INT_1610_DMA_CH6, INT_1610_DMA_CH7, |
130 | INT_1610_DMA_CH8, INT_1610_DMA_CH9, INT_1610_DMA_CH10, | 133 | INT_1610_DMA_CH8, INT_1610_DMA_CH9, INT_1610_DMA_CH10, |
@@ -727,7 +730,7 @@ omap_dma_set_prio_lch(int lch, unsigned char read_prio, | |||
727 | { | 730 | { |
728 | u32 w; | 731 | u32 w; |
729 | 732 | ||
730 | if (unlikely((lch < 0 || lch >= OMAP_LOGICAL_DMA_CH_COUNT))) { | 733 | if (unlikely((lch < 0 || lch >= dma_lch_count))) { |
731 | printk(KERN_ERR "Invalid channel id\n"); | 734 | printk(KERN_ERR "Invalid channel id\n"); |
732 | return -EINVAL; | 735 | return -EINVAL; |
733 | } | 736 | } |
@@ -775,7 +778,7 @@ void omap_start_dma(int lch) | |||
775 | { | 778 | { |
776 | if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) { | 779 | if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) { |
777 | int next_lch, cur_lch; | 780 | int next_lch, cur_lch; |
778 | char dma_chan_link_map[OMAP_LOGICAL_DMA_CH_COUNT]; | 781 | char dma_chan_link_map[OMAP_DMA4_LOGICAL_DMA_CH_COUNT]; |
779 | 782 | ||
780 | dma_chan_link_map[lch] = 1; | 783 | dma_chan_link_map[lch] = 1; |
781 | /* Set the link register of the first channel */ | 784 | /* Set the link register of the first channel */ |
@@ -819,7 +822,7 @@ void omap_stop_dma(int lch) | |||
819 | { | 822 | { |
820 | if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) { | 823 | if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) { |
821 | int next_lch, cur_lch = lch; | 824 | int next_lch, cur_lch = lch; |
822 | char dma_chan_link_map[OMAP_LOGICAL_DMA_CH_COUNT]; | 825 | char dma_chan_link_map[OMAP_DMA4_LOGICAL_DMA_CH_COUNT]; |
823 | 826 | ||
824 | memset(dma_chan_link_map, 0, sizeof(dma_chan_link_map)); | 827 | memset(dma_chan_link_map, 0, sizeof(dma_chan_link_map)); |
825 | do { | 828 | do { |
@@ -1061,7 +1064,7 @@ int omap_request_dma_chain(int dev_id, const char *dev_name, | |||
1061 | } | 1064 | } |
1062 | 1065 | ||
1063 | if (unlikely((no_of_chans < 1 | 1066 | if (unlikely((no_of_chans < 1 |
1064 | || no_of_chans > OMAP_LOGICAL_DMA_CH_COUNT))) { | 1067 | || no_of_chans > dma_lch_count))) { |
1065 | printk(KERN_ERR "Invalid Number of channels requested\n"); | 1068 | printk(KERN_ERR "Invalid Number of channels requested\n"); |
1066 | return -EINVAL; | 1069 | return -EINVAL; |
1067 | } | 1070 | } |
@@ -1138,7 +1141,7 @@ int omap_modify_dma_chain_params(int chain_id, | |||
1138 | 1141 | ||
1139 | /* Check for input params */ | 1142 | /* Check for input params */ |
1140 | if (unlikely((chain_id < 0 | 1143 | if (unlikely((chain_id < 0 |
1141 | || chain_id >= OMAP_LOGICAL_DMA_CH_COUNT))) { | 1144 | || chain_id >= dma_lch_count))) { |
1142 | printk(KERN_ERR "Invalid chain id\n"); | 1145 | printk(KERN_ERR "Invalid chain id\n"); |
1143 | return -EINVAL; | 1146 | return -EINVAL; |
1144 | } | 1147 | } |
@@ -1176,7 +1179,7 @@ int omap_free_dma_chain(int chain_id) | |||
1176 | u32 i; | 1179 | u32 i; |