rcar-hpbdma: fixup channel busy check for double plane
The device busy check method is different between single and double planes. It will always return "busy" without this patch if channel used as double plane. Reviewed-by: Max Filippov <max.filippov@cogentembedded.com> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Acked-by: Simon Horman <horms+renesas@verge.net.au> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
Родитель
f1eab074df
Коммит
b3000cd835
|
@ -60,6 +60,7 @@
|
||||||
#define HPB_DMAE_DSTPR_DMSTP BIT(0)
|
#define HPB_DMAE_DSTPR_DMSTP BIT(0)
|
||||||
|
|
||||||
/* DMA status register (DSTSR) bits */
|
/* DMA status register (DSTSR) bits */
|
||||||
|
#define HPB_DMAE_DSTSR_DQSTS BIT(2)
|
||||||
#define HPB_DMAE_DSTSR_DMSTS BIT(0)
|
#define HPB_DMAE_DSTSR_DMSTS BIT(0)
|
||||||
|
|
||||||
/* DMA common registers */
|
/* DMA common registers */
|
||||||
|
@ -385,7 +386,10 @@ static bool hpb_dmae_channel_busy(struct shdma_chan *schan)
|
||||||
struct hpb_dmae_chan *chan = to_chan(schan);
|
struct hpb_dmae_chan *chan = to_chan(schan);
|
||||||
u32 dstsr = ch_reg_read(chan, HPB_DMAE_DSTSR);
|
u32 dstsr = ch_reg_read(chan, HPB_DMAE_DSTSR);
|
||||||
|
|
||||||
return (dstsr & HPB_DMAE_DSTSR_DMSTS) == HPB_DMAE_DSTSR_DMSTS;
|
if (chan->xfer_mode == XFER_DOUBLE)
|
||||||
|
return dstsr & HPB_DMAE_DSTSR_DQSTS;
|
||||||
|
else
|
||||||
|
return dstsr & HPB_DMAE_DSTSR_DMSTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
Загрузка…
Ссылка в новой задаче