|
@@ -334,12 +334,14 @@ int cpdma_ctlr_stop(struct cpdma_ctlr *ctlr)
|
|
}
|
|
}
|
|
|
|
|
|
ctlr->state = CPDMA_STATE_TEARDOWN;
|
|
ctlr->state = CPDMA_STATE_TEARDOWN;
|
|
|
|
+ spin_unlock_irqrestore(&ctlr->lock, flags);
|
|
|
|
|
|
for (i = 0; i < ARRAY_SIZE(ctlr->channels); i++) {
|
|
for (i = 0; i < ARRAY_SIZE(ctlr->channels); i++) {
|
|
if (ctlr->channels[i])
|
|
if (ctlr->channels[i])
|
|
cpdma_chan_stop(ctlr->channels[i]);
|
|
cpdma_chan_stop(ctlr->channels[i]);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ spin_lock_irqsave(&ctlr->lock, flags);
|
|
dma_reg_write(ctlr, CPDMA_RXINTMASKCLEAR, 0xffffffff);
|
|
dma_reg_write(ctlr, CPDMA_RXINTMASKCLEAR, 0xffffffff);
|
|
dma_reg_write(ctlr, CPDMA_TXINTMASKCLEAR, 0xffffffff);
|
|
dma_reg_write(ctlr, CPDMA_TXINTMASKCLEAR, 0xffffffff);
|
|
|
|
|