On Mon, 2020-07-27 at 15:14 +0530, Vinod Koul wrote: > On 23-07-20, 10:34, EastL wrote: > > On Wed, 2020-07-15 at 11:49 +0530, Vinod Koul wrote: > > > On 02-07-20, 15:06, EastL Lee wrote: > > > > > > > static enum dma_status mtk_cqdma_tx_status(struct dma_chan *c, > > > > dma_cookie_t cookie, > > > > struct dma_tx_state *txstate) > > > > { > > > > - struct mtk_cqdma_vchan *cvc = to_cqdma_vchan(c); > > > > - struct mtk_cqdma_vdesc *cvd; > > > > - struct virt_dma_desc *vd; > > > > - enum dma_status ret; > > > > - unsigned long flags; > > > > - size_t bytes = 0; > > > > - > > > > - ret = dma_cookie_status(c, cookie, txstate); > > > > - if (ret == DMA_COMPLETE || !txstate) > > > > - return ret; > > > > - > > > > - spin_lock_irqsave(&cvc->vc.lock, flags); > > > > - vd = mtk_cqdma_find_active_desc(c, cookie); > > > > - spin_unlock_irqrestore(&cvc->vc.lock, flags); > > > > - > > > > - if (vd) { > > > > - cvd = to_cqdma_vdesc(vd); > > > > - bytes = cvd->residue; > > > > - } > > > > - > > > > - dma_set_residue(txstate, bytes); > > > > > > any reason why you want to remove setting residue? > > Because Mediatek CQDMA HW can't support residue. > > And previously it did? No, It was calculated by sw before. We found that the residue was not necessary, so we removed it.