Lines Matching defs:mxs_chan

185 	struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
186 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
187 int chan_id = mxs_chan->chan.chan_id;
196 if (mxs_chan->flags & MXS_DMA_USE_SEMAPHORE &&
197 mxs_chan->flags & MXS_DMA_SG_LOOP) {
198 mxs_chan->reset = true;
221 dev_err(&mxs_chan->mxs_dma->pdev->dev,
229 mxs_chan->status = DMA_COMPLETE;
234 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
235 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
236 int chan_id = mxs_chan->chan.chan_id;
239 writel(mxs_chan->ccw_phys,
243 if (mxs_chan->flags & MXS_DMA_USE_SEMAPHORE &&
244 mxs_chan->flags & MXS_DMA_SG_LOOP) {
252 mxs_chan->reset = false;
257 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
259 mxs_chan->status = DMA_COMPLETE;
264 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
265 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
266 int chan_id = mxs_chan->chan.chan_id;
276 mxs_chan->status = DMA_PAUSED;
282 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
283 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
284 int chan_id = mxs_chan->chan.chan_id;
294 mxs_chan->status = DMA_IN_PROGRESS;
305 struct mxs_dma_chan *mxs_chan = from_tasklet(mxs_chan, t, tasklet);
307 dmaengine_desc_get_callback_invoke(&mxs_chan->desc, NULL);
324 struct mxs_dma_chan *mxs_chan;
364 mxs_chan = &mxs_dma->mxs_chans[chan];
370 mxs_chan->status = DMA_ERROR;
371 mxs_dma_reset_chan(&mxs_chan->chan);
372 } else if (mxs_chan->status != DMA_COMPLETE) {
373 if (mxs_chan->flags & MXS_DMA_SG_LOOP) {
374 mxs_chan->status = DMA_IN_PROGRESS;
375 if (mxs_chan->flags & MXS_DMA_USE_SEMAPHORE)
379 mxs_chan->status = DMA_COMPLETE;
383 if (mxs_chan->status == DMA_COMPLETE) {
384 if (mxs_chan->reset)
386 dma_cookie_complete(&mxs_chan->desc);
390 tasklet_schedule(&mxs_chan->tasklet);
397 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
398 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
401 mxs_chan->ccw = dma_alloc_coherent(mxs_dma->dma_device.dev,
403 &mxs_chan->ccw_phys, GFP_KERNEL);
404 if (!mxs_chan->ccw) {
409 ret = request_irq(mxs_chan->chan_irq, mxs_dma_int_handler,
420 dma_async_tx_descriptor_init(&mxs_chan->desc, chan);
421 mxs_chan->desc.tx_submit = mxs_dma_tx_submit;
424 async_tx_ack(&mxs_chan->desc);
429 free_irq(mxs_chan->chan_irq, mxs_dma);
432 mxs_chan->ccw, mxs_chan->ccw_phys);
439 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
440 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
444 free_irq(mxs_chan->chan_irq, mxs_dma);
447 mxs_chan->ccw, mxs_chan->ccw_phys);
479 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
480 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
487 if (mxs_chan->status == DMA_IN_PROGRESS)
488 idx = mxs_chan->desc_count;
497 mxs_chan->status = DMA_IN_PROGRESS;
498 mxs_chan->flags = 0;
506 ccw = &mxs_chan->ccw[idx - 1];
507 ccw->next = mxs_chan->ccw_phys + sizeof(*ccw) * idx;
516 ccw = &mxs_chan->ccw[idx++];
541 ccw = &mxs_chan->ccw[idx++];
543 ccw->next = mxs_chan->ccw_phys + sizeof(*ccw) * idx;
564 mxs_chan->desc_count = idx;
566 return &mxs_chan->desc;
569 mxs_chan->status = DMA_ERROR;
578 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
579 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
583 if (mxs_chan->status == DMA_IN_PROGRESS)
586 mxs_chan->status = DMA_IN_PROGRESS;
587 mxs_chan->flags |= MXS_DMA_SG_LOOP;
588 mxs_chan->flags |= MXS_DMA_USE_SEMAPHORE;
605 struct mxs_dma_ccw *ccw = &mxs_chan->ccw[i];
608 ccw->next = mxs_chan->ccw_phys;
610 ccw->next = mxs_chan->ccw_phys + sizeof(*ccw) * (i + 1);
629 mxs_chan->desc_count = i;
631 return &mxs_chan->desc;
634 mxs_chan->status = DMA_ERROR;
649 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
650 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
653 if (mxs_chan->status == DMA_IN_PROGRESS &&
654 mxs_chan->flags & MXS_DMA_SG_LOOP) {
658 last_ccw = &mxs_chan->ccw[mxs_chan->desc_count - 1];
669 return mxs_chan->status;
708 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
709 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
719 mxs_chan->chan_irq = chan_irq;
779 struct mxs_dma_chan *mxs_chan = &mxs_dma->mxs_chans[i];
781 mxs_chan->mxs_dma = mxs_dma;
782 mxs_chan->chan.device = &mxs_dma->dma_device;
783 dma_cookie_init(&mxs_chan->chan);
785 tasklet_setup(&mxs_chan->tasklet, mxs_dma_tasklet);
788 /* Add the channel to mxs_chan list */
789 list_add_tail(&mxs_chan->chan.device_node,