Lines Matching defs:mchan
241 struct mpc_dma_chan *mchan = dma_chan_to_mpc_dma_chan(c);
243 return container_of(mchan, struct mpc_dma, channels[c->chan_id]);
250 * a) mchan->lock is acquired,
251 * b) mchan->active list is empty,
252 * c) mchan->queued list contains at least one entry.
254 static void mpc_dma_execute(struct mpc_dma_chan *mchan)
256 struct mpc_dma *mdma = dma_chan_to_mpc_dma(&mchan->chan);
260 int cid = mchan->chan.chan_id;
262 while (!list_empty(&mchan->queued)) {
263 mdesc = list_first_entry(&mchan->queued,
272 if (list_empty(&mchan->active))
273 list_move_tail(&mdesc->node, &mchan->active);
276 list_move_tail(&mdesc->node, &mchan->active);
281 list_for_each_entry(mdesc, &mchan->active, node) {
320 struct mpc_dma_chan *mchan;
327 mchan = &mdma->channels[ch + off];
329 spin_lock(&mchan->lock);
336 list_for_each_entry(mdesc, &mchan->active, node)
340 list_splice_tail_init(&mchan->active, &mchan->completed);
341 if (!list_empty(&mchan->queued))
342 mpc_dma_execute(mchan);
344 spin_unlock(&mchan->lock);
379 struct mpc_dma_chan *mchan;
387 mchan = &mdma->channels[i];
390 spin_lock_irqsave(&mchan->lock, flags);
391 if (!list_empty(&mchan->completed))
392 list_splice_tail_init(&mchan->completed, &list);
393 spin_unlock_irqrestore(&mchan->lock, flags);
409 spin_lock_irqsave(&mchan->lock, flags);
410 list_splice_tail_init(&list, &mchan->free);
411 mchan->chan.completed_cookie = last_cookie;
412 spin_unlock_irqrestore(&mchan->lock, flags);
462 struct mpc_dma_chan *mchan = dma_chan_to_mpc_dma_chan(txd->chan);
469 spin_lock_irqsave(&mchan->lock, flags);
472 list_move_tail(&mdesc->node, &mchan->queued);
475 if (list_empty(&mchan->active))
476 mpc_dma_execute(mchan);
480 spin_unlock_irqrestore(&mchan->lock, flags);
489 struct mpc_dma_chan *mchan = dma_chan_to_mpc_dma_chan(chan);
531 spin_lock_irqsave(&mchan->lock, flags);
532 mchan->tcd = tcd;
533 mchan->tcd_paddr = tcd_paddr;
534 list_splice_tail_init(&descs, &mchan->free);
535 spin_unlock_irqrestore(&mchan->lock, flags);
547 struct mpc_dma_chan *mchan = dma_chan_to_mpc_dma_chan(chan);
554 spin_lock_irqsave(&mchan->lock, flags);
557 BUG_ON(!list_empty(&mchan->prepared));
558 BUG_ON(!list_empty(&mchan->queued));
559 BUG_ON(!list_empty(&mchan->active));
560 BUG_ON(!list_empty(&mchan->completed));
563 list_splice_tail_init(&mchan->free, &descs);
564 tcd = mchan->tcd;
565 tcd_paddr = mchan->tcd_paddr;
567 spin_unlock_irqrestore(&mchan->lock, flags);
605 struct mpc_dma_chan *mchan = dma_chan_to_mpc_dma_chan(chan);
611 spin_lock_irqsave(&mchan->lock, iflags);
612 if (!list_empty(&mchan->free)) {
613 mdesc = list_first_entry(&mchan->free, struct mpc_dma_desc,
617 spin_unlock_irqrestore(&mchan->lock, iflags);
667 spin_lock_irqsave(&mchan->lock, iflags);
668 list_add_tail(&mdesc->node, &mchan->prepared);
669 spin_unlock_irqrestore(&mchan->lock, iflags);
689 struct mpc_dma_chan *mchan = dma_chan_to_mpc_dma_chan(chan);
707 spin_lock_irqsave(&mchan->lock, iflags);
709 mdesc = list_first_entry(&mchan->free,
712 spin_unlock_irqrestore(&mchan->lock, iflags);
721 per_paddr = mchan->src_per_paddr;
722 tcd_nunits = mchan->src_tcd_nunits;
724 per_paddr = mchan->dst_per_paddr;
725 tcd_nunits = mchan->dst_tcd_nunits;
728 spin_unlock_irqrestore(&mchan->lock, iflags);
745 if (!IS_ALIGNED(sg_dma_address(sg), mchan->dwidth))
749 tcd->doff = mchan->dwidth;
754 if (!IS_ALIGNED(sg_dma_address(sg), mchan->swidth))
757 tcd->soff = mchan->swidth;
761 tcd->ssize = buswidth_to_dmatsize(mchan->swidth);
762 tcd->dsize = buswidth_to_dmatsize(mchan->dwidth);
766 if (!IS_ALIGNED(tcd->nbytes, mchan->swidth))
794 spin_lock_irqsave(&mchan->lock, iflags);
795 list_add_tail(&mdesc->node, &mchan->prepared);
796 spin_unlock_irqrestore(&mchan->lock, iflags);
803 spin_lock_irqsave(&mchan->lock, iflags);
804 list_add_tail(&mdesc->node, &mchan->free);
805 spin_unlock_irqrestore(&mchan->lock, iflags);
832 struct mpc_dma_chan *mchan = dma_chan_to_mpc_dma_chan(chan);
833 struct mpc_dma *mdma = dma_chan_to_mpc_dma(&mchan->chan);
859 spin_lock_irqsave(&mchan->lock, flags);
861 mchan->src_per_paddr = cfg->src_addr;
862 mchan->src_tcd_nunits = cfg->src_maxburst;
863 mchan->swidth = cfg->src_addr_width;
864 mchan->dst_per_paddr = cfg->dst_addr;
865 mchan->dst_tcd_nunits = cfg->dst_maxburst;
866 mchan->dwidth = cfg->dst_addr_width;
869 if (mchan->src_tcd_nunits == 0)
870 mchan->src_tcd_nunits = 1;
871 if (mchan->dst_tcd_nunits == 0)
872 mchan->dst_tcd_nunits = 1;
874 spin_unlock_irqrestore(&mchan->lock, flags);
881 struct mpc_dma_chan *mchan = dma_chan_to_mpc_dma_chan(chan);
886 spin_lock_irqsave(&mchan->lock, flags);
889 list_splice_tail_init(&mchan->prepared, &mchan->free);
890 list_splice_tail_init(&mchan->queued, &mchan->free);
891 list_splice_tail_init(&mchan->active, &mchan->free);
893 spin_unlock_irqrestore(&mchan->lock, flags);
904 struct mpc_dma_chan *mchan;
998 mchan = &mdma->channels[i];
1000 mchan->chan.device = dma;
1001 dma_cookie_init(&mchan->chan);
1003 INIT_LIST_HEAD(&mchan->free);
1004 INIT_LIST_HEAD(&mchan->prepared);
1005 INIT_LIST_HEAD(&mchan->queued);
1006 INIT_LIST_HEAD(&mchan->active);
1007 INIT_LIST_HEAD(&mchan->completed);
1009 spin_lock_init(&mchan->lock);
1010 list_add_tail(&mchan->chan.device_node, &dma->channels);