dmaengine: sh: rcar-dmac: add a new function to clear CHCR.DE with barrier
This patch adds a new function rcar_dmac_clear_chcr_de() to simplify adding pause function later. Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
538603c602
commit
4de1247a98
|
@ -759,6 +759,17 @@ static void rcar_dmac_chcr_de_barrier(struct rcar_dmac_chan *chan)
|
|||
dev_err(chan->chan.device->dev, "CHCR DE check error\n");
|
||||
}
|
||||
|
||||
static void rcar_dmac_clear_chcr_de(struct rcar_dmac_chan *chan)
|
||||
{
|
||||
u32 chcr = rcar_dmac_chan_read(chan, RCAR_DMACHCR);
|
||||
|
||||
/* set DE=0 and flush remaining data */
|
||||
rcar_dmac_chan_write(chan, RCAR_DMACHCR, (chcr & ~RCAR_DMACHCR_DE));
|
||||
|
||||
/* make sure all remaining data was flushed */
|
||||
rcar_dmac_chcr_de_barrier(chan);
|
||||
}
|
||||
|
||||
static void rcar_dmac_sync_tcr(struct rcar_dmac_chan *chan)
|
||||
{
|
||||
u32 chcr = rcar_dmac_chan_read(chan, RCAR_DMACHCR);
|
||||
|
@ -766,11 +777,7 @@ static void rcar_dmac_sync_tcr(struct rcar_dmac_chan *chan)
|
|||
if (!(chcr & RCAR_DMACHCR_DE))
|
||||
return;
|
||||
|
||||
/* set DE=0 and flush remaining data */
|
||||
rcar_dmac_chan_write(chan, RCAR_DMACHCR, (chcr & ~RCAR_DMACHCR_DE));
|
||||
|
||||
/* make sure all remaining data was flushed */
|
||||
rcar_dmac_chcr_de_barrier(chan);
|
||||
rcar_dmac_clear_chcr_de(chan);
|
||||
|
||||
/* back DE if remain data exists */
|
||||
if (rcar_dmac_chan_read(chan, RCAR_DMATCR))
|
||||
|
|
Loading…
Reference in New Issue