Lines Matching full:vc
105 struct virt_dma_chan vc; /* Virtual channel */ member
116 /* protected by vc->lock */
140 container_of(dchan, struct pxad_chan, vc.chan)
152 dev_vdbg(&phy->vchan->vc.chan.dev->device, \
160 dev_vdbg(&phy->vchan->vc.chan.dev->device, \
167 dev_vdbg(&phy->vchan->vc.chan.dev->device, \
371 struct pxad_device *pdev = to_pxad_dev(pchan->vc.chan.device); in lookup_phy()
399 dev_dbg(&pchan->vc.chan.dev->device, in lookup_phy()
408 struct pxad_device *pdev = to_pxad_dev(chan->vc.chan.device); in pxad_free_phy()
412 dev_dbg(&chan->vc.chan.dev->device, in pxad_free_phy()
457 dev_dbg(&phy->vchan->vc.chan.dev->device, in phy_enable()
461 pdev = to_pxad_dev(phy->vchan->vc.chan.device); in phy_enable()
486 dev_dbg(&phy->vchan->vc.chan.dev->device, in phy_disable()
494 dev_dbg(&chan->vc.chan.dev->device, in pxad_launch_chan()
499 dev_dbg(&chan->vc.chan.dev->device, in pxad_launch_chan()
553 static bool pxad_try_hotchain(struct virt_dma_chan *vc, in pxad_try_hotchain() argument
557 struct pxad_chan *chan = to_pxad_chan(&vc->chan); in pxad_try_hotchain()
567 BUG_ON(list_empty(&vc->desc_issued)); in pxad_try_hotchain()
573 vd_last_issued = list_entry(vc->desc_issued.prev, in pxad_try_hotchain()
595 dev_warn(&phy->vchan->vc.chan.dev->device, in clear_chan_irq()
617 spin_lock(&chan->vc.lock); in pxad_chan_handler()
618 list_for_each_entry_safe(vd, tmp, &chan->vc.desc_issued, node) { in pxad_chan_handler()
620 dev_dbg(&chan->vc.chan.dev->device, in pxad_chan_handler()
643 dev_dbg(&chan->vc.chan.dev->device, in pxad_chan_handler()
646 list_empty(&chan->vc.desc_submitted), in pxad_chan_handler()
647 list_empty(&chan->vc.desc_issued)); in pxad_chan_handler()
650 if (list_empty(&chan->vc.desc_issued)) { in pxad_chan_handler()
652 !list_empty(&chan->vc.desc_submitted); in pxad_chan_handler()
654 vd = list_first_entry(&chan->vc.desc_issued, in pxad_chan_handler()
659 spin_unlock(&chan->vc.lock); in pxad_chan_handler()
686 struct pxad_device *pdev = to_pxad_dev(chan->vc.chan.device); in pxad_alloc_chan_resources()
697 dev_err(&chan->vc.chan.dev->device, in pxad_alloc_chan_resources()
710 vchan_free_chan_resources(&chan->vc); in pxad_free_chan_resources()
752 dev_err(&chan->vc.chan.dev->device, in pxad_alloc_desc()
775 struct virt_dma_chan *vc = to_virt_chan(tx->chan); in pxad_tx_submit() local
776 struct pxad_chan *chan = to_pxad_chan(&vc->chan); in pxad_tx_submit()
784 spin_lock_irqsave(&vc->lock, flags); in pxad_tx_submit()
787 if (list_empty(&vc->desc_submitted) && pxad_try_hotchain(vc, vd)) { in pxad_tx_submit()
788 list_move_tail(&vd->node, &vc->desc_issued); in pxad_tx_submit()
789 dev_dbg(&chan->vc.chan.dev->device, in pxad_tx_submit()
798 if (!list_empty(&vc->desc_submitted)) { in pxad_tx_submit()
799 vd_chained = list_entry(vc->desc_submitted.prev, in pxad_tx_submit()
812 dev_dbg(&chan->vc.chan.dev->device, in pxad_tx_submit()
815 list_move_tail(&vd->node, &vc->desc_submitted); in pxad_tx_submit()
819 spin_unlock_irqrestore(&vc->lock, flags); in pxad_tx_submit()
829 spin_lock_irqsave(&chan->vc.lock, flags); in pxad_issue_pending()
830 if (list_empty(&chan->vc.desc_submitted)) in pxad_issue_pending()
833 vd_first = list_first_entry(&chan->vc.desc_submitted, in pxad_issue_pending()
835 dev_dbg(&chan->vc.chan.dev->device, in pxad_issue_pending()
838 vchan_issue_pending(&chan->vc); in pxad_issue_pending()
839 if (!pxad_try_hotchain(&chan->vc, vd_first)) in pxad_issue_pending()
842 spin_unlock_irqrestore(&chan->vc.lock, flags); in pxad_issue_pending()
846 pxad_tx_prep(struct virt_dma_chan *vc, struct virt_dma_desc *vd, in pxad_tx_prep() argument
850 struct pxad_chan *chan = container_of(vc, struct pxad_chan, vc); in pxad_tx_prep()
853 tx = vchan_tx_prep(vc, vd, tx_flags); in pxad_tx_prep()
855 dev_dbg(&chan->vc.chan.dev->device, in pxad_tx_prep()
856 "%s(): vc=%p txd=%p[%x] flags=0x%lx\n", __func__, in pxad_tx_prep()
857 vc, vd, vd->tx.cookie, in pxad_tx_prep()
869 struct pxad_device *pdev = to_pxad_dev(chan->vc.chan.device); in pxad_get_config()
894 dev_dbg(&chan->vc.chan.dev->device, in pxad_get_config()
928 dev_dbg(&chan->vc.chan.dev->device, in pxad_prep_memcpy()
957 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags); in pxad_prep_memcpy()
977 dev_dbg(&chan->vc.chan.dev->device, in pxad_prep_slave_sg()
1006 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags); in pxad_prep_slave_sg()
1024 dev_err(&chan->vc.chan.dev->device, in pxad_prep_dma_cyclic()
1035 dev_dbg(&chan->vc.chan.dev->device, in pxad_prep_dma_cyclic()
1059 return pxad_tx_prep(&chan->vc, &sw_desc->vd, flags); in pxad_prep_dma_cyclic()
1077 struct pxad_device *pdev = to_pxad_dev(chan->vc.chan.device); in pxad_terminate_all()
1083 dev_dbg(&chan->vc.chan.dev->device, in pxad_terminate_all()
1084 "%s(): vchan %p: terminate all\n", __func__, &chan->vc); in pxad_terminate_all()
1086 spin_lock_irqsave(&chan->vc.lock, flags); in pxad_terminate_all()
1087 vchan_get_all_descriptors(&chan->vc, &head); in pxad_terminate_all()
1090 dev_dbg(&chan->vc.chan.dev->device, in pxad_terminate_all()
1104 spin_unlock_irqrestore(&chan->vc.lock, flags); in pxad_terminate_all()
1105 vchan_dma_desc_free_list(&chan->vc, &head); in pxad_terminate_all()
1128 spin_lock_irqsave(&chan->vc.lock, flags); in pxad_residue()
1130 vd = vchan_find_desc(&chan->vc, cookie); in pxad_residue()
1179 spin_unlock_irqrestore(&chan->vc.lock, flags); in pxad_residue()
1180 dev_dbg(&chan->vc.chan.dev->device, in pxad_residue()
1208 vchan_synchronize(&chan->vc); in pxad_synchronize()
1216 vc.chan.device_node) { in pxad_free_channels()
1217 list_del(&c->vc.chan.device_node); in pxad_free_channels()
1218 tasklet_kill(&c->vc.task); in pxad_free_channels()
1332 c->vc.desc_free = pxad_free_desc; in pxad_init_dmadev()
1333 vchan_init(&c->vc, &pdev->slave); in pxad_init_dmadev()