-----Original Message----- From: Dasgupta, Romit Sent: Friday, November 06, 2009 7:22 PM To: Aggarwal, Anuj; linux-omap@vger.kernel.org; alsa-devel@alsa- project.org Subject: RE: OMAP-McBSP driver not allowing suspend/resume
As can be seen from the log, both the CORE and PER power domains are not going to the suspend state.
On further debug, I found that McBSP 2 instance belongs to the PER domain whereas SDMA belongs to CORE domain. And at least McBSP driver (on l-o tip) doesn't allow disabling of the clocks unless McBSP instance itself is freed. Because of this, when McBSP is stopped after receiving the suspend request, the clocks are still ON and the PER domain is not allowed to enter to the desired low-power state.
Yes, the McBSP clocks are enabled when the PCM substream is opened and released only when the pcm substream is closed. There are no .suspend/.resume callbacks in the mcbsp driver today. You need to save context of McBSP and disable clocks on suspend and enable clocks and restore context on resume.
Ok, I got that. And I think the same needs to be done for sdma as well. I can see omap_dma_global_context_save/ omap_dma_global_context_restore being called from omap3_core_save_context/omap3_core_restore_context which is saving the global sdma configuration registers. But I think sdma channel specific registers need to be saved too for the active channels.