forked from Minki/linux
Blackfin: fix suspend/resume failure with some on-chip ROMs
Some Blackfin on-chip ROMs utilize some MDMA channels during the suspend and resume process, but don't clean up after themselves. So manually clear all DMA channels when resuming since no DMA could have been running at this point in time. Now Linux should be able to work regardless of any laziness on the part of the on-chip ROM or boot loader. Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
a8a8a669ea
commit
865bddfbf7
@ -225,8 +225,13 @@ int blackfin_dma_suspend(void)
|
||||
void blackfin_dma_resume(void)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < MAX_DMA_SUSPEND_CHANNELS; ++i)
|
||||
dma_ch[i].regs->peripheral_map = dma_ch[i].saved_peripheral_map;
|
||||
|
||||
for (i = 0; i < MAX_DMA_CHANNELS; ++i) {
|
||||
dma_ch[i].regs->cfg = 0;
|
||||
|
||||
if (i < MAX_DMA_SUSPEND_CHANNELS)
|
||||
dma_ch[i].regs->peripheral_map = dma_ch[i].saved_peripheral_map;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user