Lines Matching defs:cvc
266 static void mtk_cqdma_issue_vchan_pending(struct mtk_cqdma_vchan *cvc)
269 struct mtk_cqdma_pchan *pc = cvc->pc;
273 lockdep_assert_held(&cvc->vc.lock);
276 list_for_each_entry_safe(vd, vd2, &cvc->vc.desc_issued, node) {
299 static bool mtk_cqdma_is_vchan_active(struct mtk_cqdma_vchan *cvc)
303 list_for_each_entry(cvd, &cvc->pc->queue, node)
304 if (cvc == to_cqdma_vchan(cvd->ch))
316 struct mtk_cqdma_vchan *cvc;
325 cvc = to_cqdma_vchan(cvd->ch);
334 spin_lock(&cvc->vc.lock);
342 if (cvc->issue_synchronize && !mtk_cqdma_is_vchan_active(cvc)) {
343 complete(&cvc->issue_completion);
344 cvc->issue_synchronize = false;
348 spin_unlock(&cvc->vc.lock);
422 struct mtk_cqdma_vchan *cvc = to_cqdma_vchan(c);
426 spin_lock_irqsave(&cvc->pc->lock, flags);
427 list_for_each_entry(vd, &cvc->pc->queue, node)
429 spin_unlock_irqrestore(&cvc->pc->lock, flags);
432 spin_unlock_irqrestore(&cvc->pc->lock, flags);
434 list_for_each_entry(vd, &cvc->vc.desc_issued, node)
445 struct mtk_cqdma_vchan *cvc = to_cqdma_vchan(c);
456 spin_lock_irqsave(&cvc->vc.lock, flags);
458 spin_unlock_irqrestore(&cvc->vc.lock, flags);
472 struct mtk_cqdma_vchan *cvc = to_cqdma_vchan(c);
477 spin_lock_irqsave(&cvc->pc->lock, pc_flags);
478 spin_lock_irqsave(&cvc->vc.lock, vc_flags);
480 if (vchan_issue_pending(&cvc->vc))
481 mtk_cqdma_issue_vchan_pending(cvc);
483 spin_unlock_irqrestore(&cvc->vc.lock, vc_flags);
484 spin_unlock_irqrestore(&cvc->pc->lock, pc_flags);
573 struct mtk_cqdma_vchan *cvc = to_cqdma_vchan(c);
579 spin_lock_irqsave(&cvc->pc->lock, pc_flags);
580 spin_lock_irqsave(&cvc->vc.lock, vc_flags);
583 if (mtk_cqdma_is_vchan_active(cvc)) {
584 cvc->issue_synchronize = true;
588 spin_unlock_irqrestore(&cvc->vc.lock, vc_flags);
589 spin_unlock_irqrestore(&cvc->pc->lock, pc_flags);
593 wait_for_completion(&cvc->issue_completion);
596 vchan_synchronize(&cvc->vc);
598 WARN_ONCE(!list_empty(&cvc->vc.desc_completed),
660 struct mtk_cqdma_vchan *cvc = to_cqdma_vchan(c);
666 spin_lock_irqsave(&cvc->pc->lock, flags);
669 if (refcount_dec_and_test(&cvc->pc->refcnt)) {
671 mtk_dma_set(cvc->pc, MTK_CQDMA_FLUSH, MTK_CQDMA_FLUSH_BIT);
674 if (mtk_cqdma_poll_engine_done(cvc->pc, true) < 0)
678 mtk_dma_clr(cvc->pc, MTK_CQDMA_FLUSH, MTK_CQDMA_FLUSH_BIT);
679 mtk_dma_clr(cvc->pc, MTK_CQDMA_INT_FLAG,
683 mtk_dma_clr(cvc->pc, MTK_CQDMA_INT_EN, MTK_CQDMA_INT_EN_BIT);
686 spin_unlock_irqrestore(&cvc->pc->lock, flags);