linux/drivers/gpu/drm
Archit Taneja d68fe15b18 drm/msm/mdp5: Use runtime PM get/put API instead of toggling clocks
mdp5_enable/disable calls are scattered all around in the MDP5 code.
Use the pm_runtime_get/put calls here instead, and populate the
runtime PM suspend/resume ops to manage the clocks.

About the overall design: MDP5 is a child of the top level MDSS
device. MDSS is also the parent to DSI, HDMI and other interfaces. When
we enable MDP5's power domain, we end up enabling MDSS's PD too. It is
only MDSS's PD that actually controlls the GDSC HW. Therefore, calling
runtime_get/put on the MDP5 device is like just requesting a vote to
enable/disable the GDSC.

Functionally, replacing the clock enable/disable calls with the RPM API
can result in the power domain (GDSC) state being toggled if no other
child isn't powered on. This can result in the register context being lost.
We make sure (in future commits) that code paths don't end up configuring
registers and then later lose state, resulting in a bad HW state.

For now, we've replaced each mdp5_enable/disable with runtime_get/put API.
We could optimize things later by removing runtime_get/put calls which
don't really need to be there. This could prevent unnecessary toggling of
the power domain and clocks.

Signed-off-by: Archit Taneja <architt@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@gmail.com>
2017-08-02 07:53:46 -04:00
..
amd drm/amd/powerplay: fix AVFS voltage offset for Vega10 2017-07-25 16:38:31 -04:00
arc drm/arcgpu: Drop drm_vblank_cleanup 2017-05-31 10:57:08 +02:00
arm drm/arm: hdlcd: remove unused variables 2017-06-21 10:51:26 +01:00
armada main drm pull for v4.13 2017-07-09 18:48:37 -07:00
ast
atmel-hlcdc Merge tag 'drm-misc-next-2017-06-15' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-06-16 09:33:43 +10:00
bochs
bridge i915, amd and some core fixes + mediatek color support 2017-07-13 11:26:18 -07:00
cirrus
etnaviv main drm pull for v4.13 2017-07-09 18:48:37 -07:00
exynos drm: exynos: mark pm functions as __maybe_unused 2017-07-27 09:24:03 +09:00
fsl-dcu drm/fsl-dcu: use new drm_atomic_helper_shutdown 2017-06-08 14:59:14 -07:00
gma500 Linux 4.12-rc3 2017-05-30 15:54:15 +10:00
hisilicon Linux 4.12-rc5 2017-06-16 13:58:27 +10:00
i2c
i810
i915 Merge tag 'gvt-fixes-2017-07-26' of https://github.com/01org/gvt-linux into drm-intel-fixes 2017-07-27 22:07:53 +02:00
imx imx-drm: fix parallel display regression and typo in plane format list 2017-07-21 14:04:44 +10:00
lib
mediatek drm/mediatek: separate color module to fixup error memory reallocation 2017-06-27 17:34:53 +08:00
meson Linux 4.12-rc5 2017-06-16 13:58:27 +10:00
mga main drm pull for v4.13 2017-07-09 18:48:37 -07:00
mgag200 Linux 4.12-rc7 2017-06-27 08:28:30 +10:00
msm drm/msm/mdp5: Use runtime PM get/put API instead of toggling clocks 2017-08-02 07:53:46 -04:00
mxsfb drm: mxsfb_crtc: Reset the eLCDIF controller 2017-06-15 14:26:24 -04:00
nouveau drm/nouveau/bar/gf100: fix access to upper half of BAR2 2017-07-25 15:30:27 +10:00
omapdrm drm/omap: fix tiled buffer stride calculations 2017-06-02 11:09:34 +03:00
panel drm/panel: s6e3ha2: Add support for s6e3hf2 panel on TM2e board 2017-06-14 20:18:22 +02:00
pl111 drm/pl111: Fix offset calculation for the primary plane. 2017-06-07 11:50:00 -07:00
qxl Linux 4.12-rc3 2017-05-30 15:54:15 +10:00
r128
radeon drm/radeon: Remove initialization of shared_resources.num_mec 2017-07-13 20:21:55 -05:00
rcar-du drm: rcar-du: Map memory through the VSP device 2017-06-09 12:25:38 +01:00
rockchip drm/rockchip: fix Kconfig dependencies 2017-07-24 09:53:09 +08:00
savage
selftests
shmobile
sis
sti
stm drm/stm: Drop drm_vblank_cleanup 2017-05-31 10:48:58 +02:00
sun4i sun4i-drm changes for 4.13 2017-06-16 10:02:35 +10:00
tdfx
tegra Linux 4.12-rc7 2017-06-27 08:28:30 +10:00
tilcdc
tinydrm drm: Use vsnprintf extension %ph 2017-05-31 10:30:38 +02:00
ttm drm/ttm: Fix use-after-free in ttm_bo_clean_mm 2017-07-03 16:25:43 -04:00
udl
vc4 drm/vc4: Fix VBLANK handling in crtc->enable() path 2017-07-14 13:19:48 -07:00
vgem
via
virtio
vmwgfx Merge branch 'drm-vmwgfx-fixes' of git://people.freedesktop.org/~syeh/repos_linux into drm-fixes 2017-07-24 15:57:28 +10:00
zte drm: zte: use devm_of_platform_populate() 2017-06-05 09:57:14 +08:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic.c drm: Reduce scope of 'state' variable 2017-06-15 14:26:02 -04:00
drm_atomic_helper.c Linux 4.12-rc5 2017-06-16 13:58:27 +10:00
drm_auth.c
drm_blend.c
drm_bridge.c drm: Introduce drm_bridge_mode_valid() 2017-05-30 08:37:50 +02:00
drm_bufs.c switch compat_drm_mapbufs() to drm_ioctl_kernel() 2017-07-04 13:16:26 -04:00
drm_cache.c
drm_color_mgmt.c
drm_connector.c Linux 4.12-rc7 2017-06-27 08:28:30 +10:00
drm_context.c
drm_crtc.c
drm_crtc_helper.c
drm_crtc_helper_internal.h drm: Add drm_{crtc/encoder/connector}_mode_valid() 2017-05-30 08:37:24 +02:00
drm_crtc_internal.h
drm_debugfs.c
drm_debugfs_crc.c
drm_dma.c
drm_dp_aux_dev.c drm_dp_aux_dev: switch to read_iter/write_iter 2017-07-08 20:51:46 -04:00
drm_dp_dual_mode_helper.c
drm_dp_helper.c drm/dp: Don't trust drm_dp_downstream_id() 2017-07-21 17:45:26 +03:00
drm_dp_mst_topology.c drm/mst: Avoid processing partially received up/down message transactions 2017-07-20 10:20:31 +02:00
drm_drv.c drm: Fix oops + Xserver hang when unplugging USB drm devices 2017-06-02 11:09:35 -04:00
drm_dumb_buffers.c
drm_edid.c
drm_edid_load.c
drm_encoder.c
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c
drm_file.c drm: introduce sync objects (v4) 2017-06-14 12:10:22 +10:00
drm_flip_work.c
drm_fourcc.c
drm_framebuffer.c drm/atomic: Add missing drm_atomic_state_clear to atomic_remove_fb 2017-07-03 10:31:37 +02:00
drm_gem.c
drm_gem_cma_helper.c
drm_global.c
drm_hashtab.c
drm_info.c
drm_internal.h main drm pull for v4.13 2017-07-09 18:48:37 -07:00
drm_ioc32.c drm: Add missing field copy in compat_drm_version 2017-07-13 11:25:04 -07:00
drm_ioctl.c main drm pull for v4.13 2017-07-09 18:48:37 -07:00
drm_irq.c drm/doc: Polish irq helper documentation 2017-06-01 08:02:14 +02:00
drm_kms_helper_common.c
drm_legacy.h switch compat_drm_mapbufs() to drm_ioctl_kernel() 2017-07-04 13:16:26 -04:00
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c
drm_mode_config.c
drm_mode_object.c
drm_modes.c
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c
drm_panel.c
drm_pci.c
drm_plane.c
drm_plane_helper.c
drm_prime.c
drm_print.c
drm_probe_helper.c drm: Use new mode_valid() helpers in connector probe helper 2017-05-30 08:37:50 +02:00
drm_property.c
drm_rect.c
drm_scatter.c
drm_scdc_helper.c
drm_simple_kms_helper.c
drm_syncobj.c drm: Remove unused drm_file parameter to drm_syncobj_replace_fence() 2017-07-06 15:53:00 +10:00
drm_sysfs.c
drm_trace.h
drm_trace_points.c
drm_vblank.c drm: vblank: Fix vblank timestamp update 2017-06-29 14:40:47 +02:00
drm_vm.c
drm_vma_manager.c
Kconfig
Makefile Merge tag 'drm-misc-next-2017-06-15' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-06-16 09:33:43 +10:00