2013-06-15 04:53:38

by Qiao Zhou

[permalink] [raw]
Subject: [PATCH V2] dma: mmp_tdma: disable irq when disabling dma channel

V2 -> V1:
1, mask dma interrupt when disable DMA channel.
2, remove patch v1.

if the dma channel is disabled without interrupt masked, the interrupt
status may still be set. next time when dma channel is enabled again,
the old interrupt status may trigger the interrupt wrongly. we need to
mask the interrupt when dma channel is disabled.

Qiao Zhou (1):
dma: mmp_tdma: disable irq when disabling dma channel

drivers/dma/mmp_tdma.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)


2013-06-15 04:54:00

by Qiao Zhou

[permalink] [raw]
Subject: [PATCH V2] dma: mmp_tdma: disable irq when disabling dma channel

mask dma irq when disabling dma channel, so that interrupt status
will not be set and interrupt won't come again.

Signed-off-by: Qiao Zhou <[email protected]>
---
drivers/dma/mmp_tdma.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/dma/mmp_tdma.c b/drivers/dma/mmp_tdma.c
index 43d5a6c..9b93665 100644
--- a/drivers/dma/mmp_tdma.c
+++ b/drivers/dma/mmp_tdma.c
@@ -154,6 +154,10 @@ static void mmp_tdma_disable_chan(struct mmp_tdma_chan *tdmac)
{
writel(readl(tdmac->reg_base + TDCR) & ~TDCR_CHANEN,
tdmac->reg_base + TDCR);
+
+ /* disable irq */
+ writel(0, tdmac->reg_base + TDIMR);
+
tdmac->status = DMA_SUCCESS;
}

--
1.7.0.4

2013-06-15 07:52:51

by Zhangfei Gao

[permalink] [raw]
Subject: Re: [PATCH V2] dma: mmp_tdma: disable irq when disabling dma channel

On Sat, Jun 15, 2013 at 12:51 PM, Qiao Zhou <[email protected]> wrote:
> mask dma irq when disabling dma channel, so that interrupt status
> will not be set and interrupt won't come again.
>
> Signed-off-by: Qiao Zhou <[email protected]>

Acked-by: Zhangfei Gao <[email protected]>

2013-06-21 09:31:39

by Vinod Koul

[permalink] [raw]
Subject: Re: [PATCH V2] dma: mmp_tdma: disable irq when disabling dma channel

On Sat, Jun 15, 2013 at 12:51:48PM +0800, Qiao Zhou wrote:
> mask dma irq when disabling dma channel, so that interrupt status
> will not be set and interrupt won't come again.
>
> Signed-off-by: Qiao Zhou <[email protected]>
Applied, thanks

--
~Vinod
> ---
> drivers/dma/mmp_tdma.c | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/dma/mmp_tdma.c b/drivers/dma/mmp_tdma.c
> index 43d5a6c..9b93665 100644
> --- a/drivers/dma/mmp_tdma.c
> +++ b/drivers/dma/mmp_tdma.c
> @@ -154,6 +154,10 @@ static void mmp_tdma_disable_chan(struct mmp_tdma_chan *tdmac)
> {
> writel(readl(tdmac->reg_base + TDCR) & ~TDCR_CHANEN,
> tdmac->reg_base + TDCR);
> +
> + /* disable irq */
> + writel(0, tdmac->reg_base + TDIMR);
> +
> tdmac->status = DMA_SUCCESS;
> }
>
> --
> 1.7.0.4
>

--