![]() | |||||||||||||
Messages in this thread |
Alan Cox wrote: > >The DMA controller has some bits of state which are potentially in need >of restoration as well as a need to ensure you don't suspend while it is >running I would imagine. Even for bus masters I believe you would need >to restore the DMA enable bits. > > I avoid using DMA during suspend to make sure it doesn't get into some wierd state, but that doesn't solve the problem. I added some debug output to the driver, dumping the DMA controller's registers before and after suspend and it seems it goes completely apeshit. The registers are filled with, what it seems, random data. The reason it stops working seems to be that channel 4 gets disabled killing the cascaded channels. I'm going to try and confirm this today. Now for the solution. Reseting the DMA controller from a device driver isn't really a good solution. I had a look in dma.c but it didn't seem to have any place to attach resume/suspend functions. Also, I couldn't find where DMA channel 4 is enabled during startup. Or does the kernel count on BIOS doing this? Rgds Pierre - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2005-06-05 08:26 [from the cache] ©2003-2008 | |||||||||||||