On 25-07-18, 17:27, Yoshihiro Shimoda wrote: > rcar_dmac_chan_get_residue() should not stop the DMAC, because > the commit 538603c6026c ("dmaengine: sh: rcar-dmac: avoid to write > CHCR.TE to 1 if TCR is set to 0") had fixed unexpected re-transferring > issue. But it had caused the next issue which might stop the cyclic > mode transferring. Thus, for example R-Car sound might be stopped > suddenly. > > According to the commit 73a47bd0da66 ("dmaengine: rcar-dmac: use TCRB > instead of TCR for residue"), the purpose of clearing CHCR.DE bit is > flushing buffered data to calculate the exact residue. > > Such the "exact" residue had been required by sh-sci driver. sh-sci > driver is calling dmaengine_pause() to stop transferring, and get > "exact" residue. Otherwise, it might receive extra data during > getting residue without pausing. > > In rx_timer_fn() of sh-sci driver: > dmaengine_tx_status(); /* For checking roughly */ > dmaengine_pause(); > dmaengine_tx_status(); /* For getting residue */ > dmaengine_terminate_all(); > > But, unfortunately the rcar-dmac driver didn't support dmaengine_pause() > at that time. So, the sh-sci driver cannot get the "exact" residue > without stopping the transferring, because rcar-dmac is buffering data > inside. > > Because of these backgrounds, rcar-dmac had been cleared/set CHCR.DE > bit in rcar_dmac_chan_get_residue() to synchronizing data and getting > "exact" residue. > > However, rcar-dmac driver has rcar_dmac_chan_pause() now, and clearing > CHCR.DE bit in rcar_dmac_chan_get_residue() doesn't need anymore. > So, this patch removes the rcar_dmac_sync_tcr(). Applied, thanks -- ~Vinod