Lines Matching refs:chan
113 struct dma_chan chan; member
200 static struct mxs_dma_chan *to_mxs_dma_chan(struct dma_chan *chan) in to_mxs_dma_chan() argument
202 return container_of(chan, struct mxs_dma_chan, chan); in to_mxs_dma_chan()
205 static void mxs_dma_reset_chan(struct dma_chan *chan) in mxs_dma_reset_chan() argument
207 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan); in mxs_dma_reset_chan()
209 int chan_id = mxs_chan->chan.chan_id; in mxs_dma_reset_chan()
254 static void mxs_dma_enable_chan(struct dma_chan *chan) in mxs_dma_enable_chan() argument
256 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan); in mxs_dma_enable_chan()
258 int chan_id = mxs_chan->chan.chan_id; in mxs_dma_enable_chan()
277 static void mxs_dma_disable_chan(struct dma_chan *chan) in mxs_dma_disable_chan() argument
279 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan); in mxs_dma_disable_chan()
284 static int mxs_dma_pause_chan(struct dma_chan *chan) in mxs_dma_pause_chan() argument
286 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan); in mxs_dma_pause_chan()
288 int chan_id = mxs_chan->chan.chan_id; in mxs_dma_pause_chan()
302 static int mxs_dma_resume_chan(struct dma_chan *chan) in mxs_dma_resume_chan() argument
304 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan); in mxs_dma_resume_chan()
306 int chan_id = mxs_chan->chan.chan_id; in mxs_dma_resume_chan()
350 int chan = mxs_dma_irq_to_chan(mxs_dma, irq); in mxs_dma_int_handler() local
352 if (chan < 0) in mxs_dma_int_handler()
357 completed = (completed >> chan) & 0x1; in mxs_dma_int_handler()
360 writel((1 << chan), in mxs_dma_int_handler()
365 err &= (1 << (MXS_DMA_CHANNELS + chan)) | (1 << chan); in mxs_dma_int_handler()
372 err = (err >> (MXS_DMA_CHANNELS + chan)) + (err >> chan); in mxs_dma_int_handler()
375 writel((1 << chan), in mxs_dma_int_handler()
387 mxs_chan = &mxs_dma->mxs_chans[chan]; in mxs_dma_int_handler()
392 chan); in mxs_dma_int_handler()
394 mxs_dma_reset_chan(&mxs_chan->chan); in mxs_dma_int_handler()
400 HW_APBHX_CHn_SEMA(mxs_dma, chan)); in mxs_dma_int_handler()
418 static int mxs_dma_alloc_chan_resources(struct dma_chan *chan) in mxs_dma_alloc_chan_resources() argument
420 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan); in mxs_dma_alloc_chan_resources()
443 mxs_dma_reset_chan(chan); in mxs_dma_alloc_chan_resources()
445 dma_async_tx_descriptor_init(&mxs_chan->desc, chan); in mxs_dma_alloc_chan_resources()
462 static void mxs_dma_free_chan_resources(struct dma_chan *chan) in mxs_dma_free_chan_resources() argument
464 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan); in mxs_dma_free_chan_resources()
467 mxs_dma_disable_chan(chan); in mxs_dma_free_chan_resources()
500 struct dma_chan *chan, struct scatterlist *sgl, in mxs_dma_prep_slave_sg() argument
504 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan); in mxs_dma_prep_slave_sg()
598 struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len, in mxs_dma_prep_dma_cyclic() argument
602 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan); in mxs_dma_prep_dma_cyclic()
662 static int mxs_dma_terminate_all(struct dma_chan *chan) in mxs_dma_terminate_all() argument
664 mxs_dma_reset_chan(chan); in mxs_dma_terminate_all()
665 mxs_dma_disable_chan(chan); in mxs_dma_terminate_all()
670 static enum dma_status mxs_dma_tx_status(struct dma_chan *chan, in mxs_dma_tx_status() argument
673 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan); in mxs_dma_tx_status()
686 HW_APBHX_CHn_BAR(mxs_dma, chan->chan_id)); in mxs_dma_tx_status()
690 dma_set_tx_state(txstate, chan->completed_cookie, chan->cookie, in mxs_dma_tx_status()
730 static bool mxs_dma_filter_fn(struct dma_chan *chan, void *fn_param) in mxs_dma_filter_fn() argument
733 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan); in mxs_dma_filter_fn()
740 if (chan->chan_id != param->chan_id) in mxs_dma_filter_fn()
820 mxs_chan->chan.device = &mxs_dma->dma_device; in mxs_dma_probe()
821 dma_cookie_init(&mxs_chan->chan); in mxs_dma_probe()
828 list_add_tail(&mxs_chan->chan.device_node, in mxs_dma_probe()