Prev: [PATCH 14/19] DMAENGINE: ste_dma40: no flow control on memcpy
Next: [PATCH 18/19] DMAENGINE: ste_dma40: support disabling physical channels
From: Linus Walleij on 20 Jun 2010 17:30 From: Jonas Aaberg <jonas.aberg(a)stericsson.com> Correct bug that could cause paused channels to stop. Signed-off-by: Jonas Aaberg <jonas.aberg(a)stericsson.com> Signed-off-by: Linus Walleij <linus.walleij(a)stericsson.com> --- drivers/dma/ste_dma40.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c index aa098a6..8c46bb8 100644 --- a/drivers/dma/ste_dma40.c +++ b/drivers/dma/ste_dma40.c @@ -508,6 +508,7 @@ static int d40_channel_execute_command(struct d40_chan *d40c, void __iomem *active_reg; int ret = 0; unsigned long flags; + u32 wmask; spin_lock_irqsave(&d40c->base->execmd_lock, flags); @@ -525,7 +526,9 @@ static int d40_channel_execute_command(struct d40_chan *d40c, goto done; } - writel(command << D40_CHAN_POS(d40c->phy_chan->num), active_reg); + wmask = 0xffffffff & ~(D40_CHAN_POS_MASK(d40c->phy_chan->num)); + writel(wmask | (command << D40_CHAN_POS(d40c->phy_chan->num)), + active_reg); if (command == D40_DMA_SUSPEND_REQ) { -- 1.6.3.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |