Hi All, I am trying to implement suspend/resume functionality to to imx-hdmi driver: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/driver... So, I need some help about this. I logged the request in imx community, but it seems they are not responding. Firstly I expect nxp community members to support (if anybody here). Otherwise, I guess, people who are experts here and have prior experience in implementing suspend/resume for their drivers, should be able to give me some guidance. Currently, I am trying to understand what needs to be taken care during suspend/resume. With some reference, I figured out that hdmi power off/on needs to be done during suspend/resume. But after resume, system is hanging. It seems like vblank events are not getting triggered after the resume. May be irq remains disabled after resume, I need to figure out some way to enable the all the irqs again. Even if I try to install hdmi driver as a dynamic loadable module, still I get the same issue. So, I wonder, what is the right way to handle suspend/resume for any driver. Some clue/reference should help me to keep going... Regards, Pintu
Am Montag, den 17.06.2019, 19:19 +0530 schrieb Pintu Agarwal:
Currently, I am trying to understand what needs to be taken care during suspend/resume.
You need to take care of * wakeup sources * not requiring services of devices higher up in the tree.
With some reference, I figured out that hdmi power off/on needs to be done during suspend/resume.
That would make sense. First of all you need to understand that the generic model is, well, generic. Now this may look like a tautology, so let me explain. A generic model cannot tell you how to save power on a specific hardware. It exists to model dependencies among subsystems and to help you. The suspend() call is a notification which tells you that the rest of the system will not require your services until resume() is called(). That means that after resume() your driver must be functional again. And it means that between suspend() and resume() you cannot touch your device because what is above you in the tree need not be functional.
But after resume, system is hanging. It seems like vblank events are not getting triggered after the resume. May be irq remains disabled after resume, I need to figure out some way to enable the all the irqs again.
In your case it looks like parts of dw_hdmi_imx_bind() need to be redone in resume(). HTH Oliver
Hi Pintu, On Mon, Jun 17, 2019 at 10:50 AM Pintu Agarwal <pintu.ping@gmail.com> wrote:
Hi All,
I am trying to implement suspend/resume functionality to to imx-hdmi driver: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/driver...
Please test a recent kernel, such as 5.1.11. I recall that last time you reported an issue with the dw hdmi you were running kernel 3.10 with backported patches from 4.9. Just tried suspend/resume on a imx6q board and HDMI behaves correctly.
participants (3)
-
Fabio Estevam -
Oliver Neukum -
Pintu Agarwal