Lines Matching full:channel

59 	struct dma_channel		channel;  member
71 struct musb_dma_channel channel[MUSB_HSDMA_CHANNELS]; member
79 static void dma_channel_release(struct dma_channel *channel);
84 struct dma_channel *channel; in dma_controller_stop() local
89 "Stopping DMA controller while channel active\n"); in dma_controller_stop()
93 channel = &controller->channel[bit].channel; in dma_controller_stop()
94 dma_channel_release(channel); in dma_controller_stop()
109 struct dma_channel *channel = NULL; in dma_channel_allocate() local
115 musb_channel = &(controller->channel[bit]); in dma_channel_allocate()
120 channel = &(musb_channel->channel); in dma_channel_allocate()
121 channel->private_data = musb_channel; in dma_channel_allocate()
122 channel->status = MUSB_DMA_STATUS_FREE; in dma_channel_allocate()
123 channel->max_len = 0x100000; in dma_channel_allocate()
125 channel->desired_mode = transmit; in dma_channel_allocate()
126 channel->actual_len = 0; in dma_channel_allocate()
131 return channel; in dma_channel_allocate()
134 static void dma_channel_release(struct dma_channel *channel) in dma_channel_release() argument
136 struct musb_dma_channel *musb_channel = channel->private_data; in dma_channel_release()
138 channel->actual_len = 0; in dma_channel_release()
145 channel->status = MUSB_DMA_STATUS_UNKNOWN; in dma_channel_release()
148 static void configure_channel(struct dma_channel *channel, in configure_channel() argument
152 struct musb_dma_channel *musb_channel = channel->private_data; in configure_channel()
160 channel, packet_sz, &dma_addr, len, mode); in configure_channel()
186 static int dma_channel_program(struct dma_channel *channel, in dma_channel_program() argument
190 struct musb_dma_channel *musb_channel = channel->private_data; in dma_channel_program()
199 BUG_ON(channel->status == MUSB_DMA_STATUS_UNKNOWN || in dma_channel_program()
200 channel->status == MUSB_DMA_STATUS_BUSY); in dma_channel_program()
214 channel->actual_len = 0; in dma_channel_program()
218 channel->status = MUSB_DMA_STATUS_BUSY; in dma_channel_program()
220 configure_channel(channel, packet_sz, mode, dma_addr, len); in dma_channel_program()
225 static int dma_channel_abort(struct dma_channel *channel) in dma_channel_abort() argument
227 struct musb_dma_channel *musb_channel = channel->private_data; in dma_channel_abort()
235 if (channel->status == MUSB_DMA_STATUS_BUSY) { in dma_channel_abort()
265 channel->status = MUSB_DMA_STATUS_FREE; in dma_channel_abort()
276 struct dma_channel *channel; in dma_controller_irq() local
299 &(controller->channel[bchannel]); in dma_controller_irq()
300 channel = &musb_channel->channel; in dma_controller_irq()
301 if (channel->status == MUSB_DMA_STATUS_BUSY) { in dma_controller_irq()
318 &(controller->channel[bchannel]); in dma_controller_irq()
319 channel = &musb_channel->channel; in dma_controller_irq()
326 musb_channel->channel.status = in dma_controller_irq()
333 channel->actual_len = addr in dma_controller_irq()
337 channel, musb_channel->start_addr, in dma_controller_irq()
338 addr, channel->actual_len, in dma_controller_irq()
340 (channel->actual_len in dma_controller_irq()
346 channel->status = MUSB_DMA_STATUS_FREE; in dma_controller_irq()
350 (!channel->desired_mode || in dma_controller_irq()
351 (channel->actual_len % in dma_controller_irq()
364 if (channel->desired_mode == 1) { in dma_controller_irq()