projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
2123a61
)
DMAENGINE: ste_dma40: no premature stop
author
Jonas Aaberg
<
[email protected]
>
Sun, 20 Jun 2010 21:26:01 +0000
(21:26 +0000)
committer
Dan Williams
<
[email protected]
>
Wed, 23 Jun 2010 01:01:55 +0000
(18:01 -0700)
Correct bug that could cause paused channels to stop.
Signed-off-by: Jonas Aaberg <
[email protected]
>
Signed-off-by: Linus Walleij <
[email protected]
>
Signed-off-by: Dan Williams <
[email protected]
>
drivers/dma/ste_dma40.c
patch
|
blob
|
history
diff --git
a/drivers/dma/ste_dma40.c
b/drivers/dma/ste_dma40.c
index aa098a672605ca2b77e282183d195c6dcc22cdeb..8c46bb803dbbc02588a813701eb80dedf4892c6e 100644
(file)
--- 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) {