aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/dma/ste_dma40.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c
index aa098a672605..8c46bb803dbb 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,
508 void __iomem *active_reg; 508 void __iomem *active_reg;
509 int ret = 0; 509 int ret = 0;
510 unsigned long flags; 510 unsigned long flags;
511 u32 wmask;
511 512
512 spin_lock_irqsave(&d40c->base->execmd_lock, flags); 513 spin_lock_irqsave(&d40c->base->execmd_lock, flags);
513 514
@@ -525,7 +526,9 @@ static int d40_channel_execute_command(struct d40_chan *d40c,
525 goto done; 526 goto done;
526 } 527 }
527 528
528 writel(command << D40_CHAN_POS(d40c->phy_chan->num), active_reg); 529 wmask = 0xffffffff & ~(D40_CHAN_POS_MASK(d40c->phy_chan->num));
530 writel(wmask | (command << D40_CHAN_POS(d40c->phy_chan->num)),
531 active_reg);
529 532
530 if (command == D40_DMA_SUSPEND_REQ) { 533 if (command == D40_DMA_SUSPEND_REQ) {
531 534