On Fri, 2018-07-13 at 11:12 +0200, Marek Vasut wrote:
On 07/13/2018 11:06 AM, Anson Huang wrote: [...]
On 07/13/2018 10:54 AM, Anson Huang wrote:
As display power domain is combined with lcdif node on some i.MX platforms like i.MX6SL, when lcdif driver is enabled, the mxsfb_load is called to enable runtime pm, and a pair of pm_runtime_get_sync and pm_runtime_put_sync are also called, that will cause generic power domain driver to disable lcdif power domain and lcdif is no longer working, the lcdif power should ONLY be turned off when display is disabled, so move the pm_runtime_put_sync to mxsfb_unload and remove the pm_runtime_get_sync in mxsfb_unload as well, in this way, when display is enabled, the lcdif power will be always ON until the display is disabled.
Signed-off-by: Anson Huang Anson.Huang@nxp.com
Doesn't this also mean the block will always be on, thus wasting power ?
I think drm driver should have somewhere to implement the display disable case, like when fb0 is blank (echo 1 > /sys/class/graphics/fb0/blank),
Isn't this just the fbdev emulation on top of drm/kms ? I think this stuff can be compiled out completely.
then lcdif can be powered gated, and when display is back on (unblank), lcdif needs to be re-initialization and display will be on, current implementation is incorrect, with kernel booting up, lcdif is NOT working at all.
It works fine on MX6SX , so I think this is isolated to MX6SL ? I'm CCing Stefan, he might have some valuable feedback here.
Some time ago I sent a patch which tries to implement "proper" runtime PM for lcdif: https://patchwork.kernel.org/patch/10449761/
It seems to have slipped through the cracks, can somebody please take a look at it?
This only actually matters on SOCs where the display power domain is gated, however:
* On imx6sx the DISP power domain is currently not defined in DTS. Defining requires dealing with pcie being spread in multiple PDs. * On imx6sl there is a nasty errata so the PD was marked always-on. This was a few days ago: https://lkml.org/lkml/2018/7/11/427 * imx6sll is new, evk dts only in next.
The lcdif block is also used in some imx8 chips so runtime PM should be dealt with eventually.