diff mbox

[3/3] rcar-hpbdma: fixup channel busy check for double plane

Message ID 87fvs01876.wl%kuninori.morimoto.gx@renesas.com (mailing list archive)
State Superseded
Headers show

Commit Message

Kuninori Morimoto Oct. 17, 2013, 10:51 a.m. UTC
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.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 drivers/dma/sh/rcar-hpbdma.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Sergei Shtylyov Oct. 17, 2013, 1:23 p.m. UTC | #1
Hello.

On 17-10-2013 14:51, Kuninori Morimoto wrote:

> 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.

> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
>   drivers/dma/sh/rcar-hpbdma.c |    5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)

> diff --git a/drivers/dma/sh/rcar-hpbdma.c b/drivers/dma/sh/rcar-hpbdma.c
> index 0518135..6fc37b4 100644
> --- a/drivers/dma/sh/rcar-hpbdma.c
> +++ b/drivers/dma/sh/rcar-hpbdma.c
> @@ -388,7 +388,10 @@ static bool hpb_dmae_channel_busy(struct shdma_chan *schan)
>   	struct hpb_dmae_chan *chan = to_chan(schan);
>   	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;

    This bit is not #define'd in the driver. Did you compile this?

WBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/dma/sh/rcar-hpbdma.c b/drivers/dma/sh/rcar-hpbdma.c
index 0518135..6fc37b4 100644
--- a/drivers/dma/sh/rcar-hpbdma.c
+++ b/drivers/dma/sh/rcar-hpbdma.c
@@ -388,7 +388,10 @@  static bool hpb_dmae_channel_busy(struct shdma_chan *schan)
 	struct hpb_dmae_chan *chan = to_chan(schan);
 	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