• Yoshihiro Shimoda's avatar
    dmaengine: sh: rcar-dmac: Should not stop the DMAC by rcar_dmac_sync_tcr() · 218c2104
    Yoshihiro Shimoda authored
    rcar_dmac_chan_get_residue() should not stop the DMAC, because
    the commit 538603c6 ("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 73a47bd0 ("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().
    
    Fixes: 73a47bd0 ("dmaengine: rcar-dmac: use TCRB instead of TCR for residue")
    Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Tested-by: default avatarHiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
    Reviewed-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
    218c2104
rcar-dmac.c 51.9 KB