Lines Matching refs:channel
99 static void set_dma_peripheral_map(unsigned int channel, const char *device_id) in set_dma_peripheral_map() argument
104 switch (channel) { in set_dma_peripheral_map()
113 dma_ch[channel].regs->peripheral_map = per_map; in set_dma_peripheral_map()
122 int request_dma(unsigned int channel, const char *device_id) in request_dma() argument
127 printk(KERN_WARNING "request_dma(%u): no device_id given\n", channel); in request_dma()
130 if (channel >= CH_IMEM_STREAM0_DEST && channel <= CH_IMEM_STREAM1_DEST) { in request_dma()
139 if (atomic_cmpxchg(&dma_ch[channel].chan_status, 0, 1)) { in request_dma()
144 set_dma_peripheral_map(channel, device_id); in request_dma()
145 dma_ch[channel].device_id = device_id; in request_dma()
146 dma_ch[channel].irq = 0; in request_dma()
157 int set_dma_callback(unsigned int channel, irq_handler_t callback, void *data) in set_dma_callback() argument
162 BUG_ON(channel >= MAX_DMA_CHANNELS || !callback || in set_dma_callback()
163 !atomic_read(&dma_ch[channel].chan_status)); in set_dma_callback()
165 irq = channel2irq(channel); in set_dma_callback()
166 ret = request_irq(irq, callback, 0, dma_ch[channel].device_id, data); in set_dma_callback()
170 dma_ch[channel].irq = irq; in set_dma_callback()
171 dma_ch[channel].data = data; in set_dma_callback()
183 static void clear_dma_buffer(unsigned int channel) in clear_dma_buffer() argument
185 dma_ch[channel].regs->cfg |= RESTART; in clear_dma_buffer()
187 dma_ch[channel].regs->cfg &= ~RESTART; in clear_dma_buffer()
190 void free_dma(unsigned int channel) in free_dma() argument
193 BUG_ON(channel >= MAX_DMA_CHANNELS || in free_dma()
194 !atomic_read(&dma_ch[channel].chan_status)); in free_dma()
197 disable_dma(channel); in free_dma()
198 clear_dma_buffer(channel); in free_dma()
200 if (dma_ch[channel].irq) in free_dma()
201 free_irq(dma_ch[channel].irq, dma_ch[channel].data); in free_dma()
204 atomic_set(&dma_ch[channel].chan_status, 0); in free_dma()