linux_dsm_epyc7002/drivers/gpu/drm/omapdrm/dss
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
..
base.c drm/omap: Whitelist DT nodes to fixup with omapdss, prefix 2019-03-18 11:42:14 +02:00
core.c drm/omap: dss: Move platform_device_register from core.c to dss.c probe 2018-09-03 16:13:25 +03:00
dispc_coefs.c drm: omapdrm: Remove filename from header and fix copyright tag 2017-12-19 11:21:32 +02:00
dispc.c drm/omap: Substitute format_is_yuv() with format->is_yuv 2018-10-02 09:36:56 +03:00
dispc.h drm: omapdrm: Remove filename from header and fix copyright tag 2017-12-19 11:21:32 +02:00
display.c drm/omap: Move display alias ID to omap_drm_pipeline 2019-03-18 11:42:12 +02:00
dpi.c drm/omap: Merge omap_dss_device type and output_type fields 2019-03-18 11:42:13 +02:00
dsi.c drm/omap: dsi: Fix PM for display blank with paired dss_pll calls 2019-03-18 11:42:14 +02:00
dss-of.c drm/omap: Simplify OF lookup of DSS devices 2019-03-18 11:42:13 +02:00
dss.c drm/omap: Reverse direction of the DSS device enable/disable operations 2019-03-18 11:42:12 +02:00
dss.h drm/omap: Call dispc timings check operation directly 2018-09-03 16:13:30 +03:00
hdmi4_cec.c drm: omapdrm: hdmi4: Allocate the omap_hdmi data structure dynamically 2018-03-01 09:18:18 +02:00
hdmi4_cec.h omapdrm: hdmi4_cec: add OMAP4 HDMI CEC support 2017-10-12 10:49:14 +03:00
hdmi4_core.c drm/omap: check return value from soc_device_match 2018-05-07 10:19:11 -04:00
hdmi4_core.h drm: omapdrm: hdmi4: Allocate the omap_hdmi data structure dynamically 2018-03-01 09:18:18 +02:00
hdmi4.c drm/omap: Merge omap_dss_device type and output_type fields 2019-03-18 11:42:13 +02:00
hdmi5_core.c drm/omap: hdmi: Constify video mode and related pointers 2018-09-03 16:13:30 +03:00
hdmi5_core.h
hdmi5.c drm/omap: Merge omap_dss_device type and output_type fields 2019-03-18 11:42:13 +02:00
hdmi_common.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
hdmi_phy.c drm: omapdrm: Use unsigned int type 2018-03-01 09:09:10 +02:00
hdmi_pll.c drm: omapdrm: dss: Store the registered plls array in struct dss_device 2018-03-01 09:18:18 +02:00
hdmi_wp.c drm/omap: hdmi: Constify video mode and related pointers 2018-09-03 16:13:30 +03:00
hdmi.h drm/omap: hdmi: Constify video mode and related pointers 2018-09-03 16:13:30 +03:00
Kconfig omapdrm: hdmi4: hook up the HDMI CEC support 2017-10-12 10:49:14 +03:00
Makefile main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
omapdss-boot-init.c drm/omap: Remove panel-dpi driver 2019-03-18 11:42:14 +02:00
omapdss.h drm/omap: Add support for drm_panel 2019-03-18 11:42:14 +02:00
output.c drm/omap: Add support for drm_panel 2019-03-18 11:42:14 +02:00
pll.c drm/omap: Implement workaround for DRA7 errata ID:i932 2018-06-28 13:41:05 +03:00
sdi.c drm: Use new DRM_BUS_FLAG_*_(DRIVE|SAMPLE)_(POS|NEG)EDGE flags 2019-03-18 11:42:13 +02:00
venc.c drm/omap: Merge omap_dss_device type and output_type fields 2019-03-18 11:42:13 +02:00
video-pll.c drm/omap: Implement workaround for DRA7 errata ID:i932 2018-06-28 13:41:05 +03:00