mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-19 10:44:14 +08:00
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
Block a user