linux/drivers/gpu/drm/omapdrm
Tony Lindgren fe4ed1b457 drm/omap: dsi: Fix PM for display blank with paired dss_pll calls
Currently dsi_display_init_dsi() calls dss_pll_enable() but it is not
paired with dss_pll_disable() in dsi_display_uninit_dsi(). This leaves
the DSS clocks enabled when the display is blanked wasting about extra
5mW of power while idle.

The clock that is left on by not calling dss_pll_disable() is
DSS_CLKCTRL bit 10 OPTFCLKEN_SYS_CLK that is the source clock for
DSI PLL.

We can fix this issue by by making the current dsi_pll_uninit() into
dsi_pll_disable(). This way we can just call dss_pll_disable() from
dsi_display_uninit_dsi() and the code becomes a bit easier to follow.

However, we need to also consider that DSI PLL can be muxed for DVI too
as pointed out by Tomi Valkeinen <tomi.valkeinen@ti.com>. In the DVI
case, we want to unconditionally disable the clocks. To get around this
issue, we separate out the DSI lane handling from dsi_pll_enable() and
dsi_pll_disable() as suggested by Tomi in an earlier experimental patch.

So we must only toggle the DSI regulator based on the vdds_dsi_enabled
flag from dsi_display_init_dsi() and dsi_display_uninit_dsi().

We need to make these two changes together to avoid breaking things
for DVI when fixing the DSI clock handling. And this all causes a
slight renumbering of the error path for dsi_display_init_dsi().

Suggested-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2019-03-18 11:42:14 +02:00
..
displays drm/omap: Remove panel-dpi driver 2019-03-18 11:42:14 +02:00
dss drm/omap: dsi: Fix PM for display blank with paired dss_pll calls 2019-03-18 11:42:14 +02:00
Kconfig drm/omap: Get rid of DRM_OMAP_NUM_CRTCS config option 2017-04-03 12:36:40 +03:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
omap_connector.c drm/omap: Add support for drm_panel 2019-03-18 11:42:14 +02:00
omap_connector.h drm/omap: Add support for drm_bridge 2019-03-18 11:42:14 +02:00
omap_crtc.c drm/omap: Add support for drm_bridge 2019-03-18 11:42:14 +02:00
omap_crtc.h drm/omap: Pass pipe pointer to omap_crtc_init() 2018-09-03 16:13:28 +03:00
omap_debugfs.c drm/omap: gem: Fix mm_list locking 2018-06-28 13:41:05 +03:00
omap_dmm_priv.h drm/omap: partial workaround for DRA7xx DMM errata i878 2018-10-02 09:36:56 +03:00
omap_dmm_tiler.c drm/omap: partial workaround for DRA7xx DMM errata i878 2018-10-02 09:36:56 +03:00
omap_dmm_tiler.h drm: omapdrm: Use kernel integer types 2018-03-01 09:09:10 +02:00
omap_drv.c drm/omap: Add support for drm_panel 2019-03-18 11:42:14 +02:00
omap_drv.h drm/omap: Add support for drm_bridge 2019-03-18 11:42:14 +02:00
omap_encoder.c drm/omap: Add support for drm_panel 2019-03-18 11:42:14 +02:00
omap_encoder.h drm/omap: Don't pass display pointer to encoder init function 2019-03-18 11:42:12 +02:00
omap_fb.c drm: Split out drm_probe_helper.h 2019-01-24 13:20:42 +01:00
omap_fb.h drm/omapdrm: Nuke omap_framebuffer_get_next_connector() 2018-05-25 21:21:39 +03:00
omap_fbdev.c drm: move drm_can_sleep() to drm_util.h 2019-01-14 10:58:37 +01:00
omap_fbdev.h drm/omap: cleanup fbdev init/free 2018-03-01 09:18:18 +02:00
omap_gem_dmabuf.c drm/omap: Replace drm_gem_object_{un/reference} with put,get functions 2018-10-02 09:36:56 +03:00
omap_gem.c drm/omap: Replace drm_gem_object_unreference_unlocked with put function 2018-10-02 09:36:56 +03:00
omap_gem.h gpu: drm: omapdrm: Adding new typedef vm_fault_t 2018-06-28 13:41:05 +03:00
omap_irq.c drm/omap: Group CRTC, encoder, connector and dssdev in a structure 2018-09-03 16:13:27 +03:00
omap_irq.h drm: omapdrm: Use kernel integer types 2018-03-01 09:09:10 +02:00
omap_plane.c drm/omap: Use normalized zpos for plane placement 2018-03-28 09:45:45 +03:00
omap_plane.h drm: omapdrm: Deconstruct the omap_drv.h header. 2017-12-19 10:32:00 +02:00
tcm-sita.c drm/omap: silence unititialized variable warning 2018-05-07 10:19:11 -04:00
tcm.h drm: omapdrm: Use kernel integer types 2018-03-01 09:09:10 +02:00
TODO