linux_dsm_epyc7002/drivers/gpu/drm
Kalyan Thota ca8199f134 drm/msm/dpu: ensure device suspend happens during PM sleep
"The PM core always increments the runtime usage counter
before calling the ->suspend() callback and decrements it
after calling the ->resume() callback"

DPU and DSI are managed as runtime devices. When
suspend is triggered, PM core adds a refcount on all the
devices and calls device suspend, since usage count is
already incremented, runtime suspend was not getting called
and it kept the clocks on which resulted in target not
entering into XO shutdown.

Add changes to force suspend on runtime devices during pm sleep.

Changes in v1:
 - Remove unnecessary checks in the function
    _dpu_kms_disable_dpu (Rob Clark).

Changes in v2:
 - Avoid using suspend_late to reset the usagecount
   as suspend_late might not be called during suspend
   call failures (Doug).

Changes in v3:
 - Use force suspend instead of managing device usage_count
   via runtime put and get API's to trigger callbacks (Doug).

Changes in v4:
 - Check the return values of pm_runtime_force_suspend and
   pm_runtime_force_resume API's and pass appropriately (Doug).

Changes in v5:
 - With v4 patch, test cycle has uncovered issues in device resume.

   On bubs: cmd tx failures were seen as SW is sending panel off
   commands when the dsi resources are turned off.

   Upon suspend, DRM driver will issue a NULL composition to the
   dpu, followed by turning off all the HW blocks.

   v5 changes will serialize the NULL commit and resource unwinding
   by handling them under PM prepare and PM complete phases there by
   ensuring that clks are on when panel off commands are being
   processed.

Changes in v6:
- Use drm_mode_config_helper_suspend/resume() instead of legacy API
  drm_atomic_helper_suspend/resume() (Doug).

  Trigger runtime callbacks from the suspend/resume call to turn
  off the resources.

Changes in v7:
- Add "__maybe_unused" to the functions to avoid compilation
  failures. Cleanup unnecessary configs (Doug).

Signed-off-by: Kalyan Thota <kalyan_t@codeaurora.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Rob Clark <robdclark@chromium.org>
2020-07-30 13:44:52 -07:00
..
amd drm/ttm: make ttm_tt unbind function return void. 2020-07-29 09:43:06 +10:00
arc
arm
armada
aspeed Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
ast drm/ast: Use managed MM initialization 2020-07-20 09:16:23 +02:00
atmel-hlcdc
bochs
bridge drm/bridge: sil_sii8620: initialize return of sii8620_readb 2020-07-13 17:57:17 +02:00
etnaviv Merge branch 'etnaviv/next' of https://git.pengutronix.de/git/lst/linux into drm-next 2020-07-23 15:28:10 +10:00
exynos Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
fsl-dcu
gma500
hisilicon Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
i2c
i810 drm/i810: switch from 'pci_' to 'dma_' API 2020-07-20 09:34:24 +02:00
i915 Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
imx drm/imx: error path fixes and cleanups 2020-07-23 15:21:45 +10:00
ingenic drm/ingenic: Silence uninitialized-variable warning 2020-07-19 13:03:15 +02:00
lib
lima drm/lima: Expose job_hang_limit module parameter 2020-07-13 13:47:41 +08:00
mcde Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
mediatek Mediatek DRM Next for Linux 5.9 2020-07-24 09:41:57 +10:00
meson Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
mga
mgag200 drm/mgag200: Inline mga_crtc_{prepare, commit}() into enable function 2020-07-14 09:14:06 +02:00
msm drm/msm/dpu: ensure device suspend happens during PM sleep 2020-07-30 13:44:52 -07:00
mxsfb drm/mxsfb: drop unused function parameter 2020-07-20 10:59:10 +02:00
nouveau drm/ttm/nouveau: don't call tt destroy callback on alloc failure. 2020-07-29 10:06:38 +10:00
omapdrm
panel Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
panfrost
pl111
qxl drm/ttm: make ttm_tt unbind function return void. 2020-07-29 09:43:06 +10:00
r128
radeon drm/ttm: make ttm_tt unbind function return void. 2020-07-29 09:43:06 +10:00
rcar-du Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
rockchip
savage
scheduler
selftests
shmobile
sis
sti
stm drm/stm: repair runtime power management 2020-07-08 11:47:01 +02:00
sun4i Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
tdfx
tegra drm/tegra: Changes for v5.9-rc1 2020-07-24 09:38:55 +10:00
tidss drm/tidss: Replace HTTP links with HTTPS ones 2020-07-16 22:13:52 +02:00
tilcdc drm/tilcdc: Use standard drm_atomic_helper_commit 2020-07-14 10:32:33 +02:00
tiny
ttm drm/ttm/nouveau: don't call tt destroy callback on alloc failure. 2020-07-29 10:06:38 +10:00
tve200
udl
v3d
vboxvideo drm/vboxvideo: Replace HTTP links with HTTPS ones 2020-07-16 22:12:50 +02:00
vc4 drm/vc4: crtc: Remove the feed_txp tests 2020-07-07 10:51:58 +02:00
vgem drm/vgem: Replace opencoded version of drm_gem_dumb_map_offset() 2020-07-08 22:00:21 +01:00
via
virtio drm/virtio: Remove open-coded commit-tail function 2020-07-14 10:47:16 +02:00
vkms drm/vkms: change the max cursor width/height 2020-07-12 18:09:13 -04:00
vmwgfx drm/ttm: ttm_bo_swapout_all doesn't use it's argument. 2020-07-29 10:01:23 +10:00
xen
xlnx drm: xlnx: DRM/KMS driver for Xilinx ZynqMP DisplayPort Subsystem 2020-07-18 02:59:16 +03:00
zte
drm_agpsupport.c
drm_atomic_helper.c
drm_atomic_state_helper.c
drm_atomic_uapi.c
drm_atomic.c
drm_auth.c
drm_blend.c
drm_bridge_connector.c
drm_bridge.c
drm_bufs.c
drm_cache.c
drm_client_modeset.c
drm_client.c
drm_color_mgmt.c
drm_connector.c
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c
drm_crtc_internal.h
drm_crtc.c
drm_damage_helper.c
drm_debugfs_crc.c
drm_debugfs.c
drm_dma.c
drm_dp_aux_dev.c
drm_dp_cec.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c drm/dp: Include the AUX CH name in the debug messages 2020-07-09 21:20:33 +03:00
drm_dp_mst_topology_internal.h
drm_dp_mst_topology.c
drm_drv.c
drm_dsc.c
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c drm: core: Convert device logging to drm_* functions. 2020-07-20 09:34:24 +02:00
drm_encoder_slave.c
drm_encoder.c
drm_fb_cma_helper.c
drm_fb_helper.c Linux 5.8-rc6 2020-07-24 08:48:05 +10:00
drm_file.c
drm_flip_work.c
drm_format_helper.c
drm_fourcc.c
drm_framebuffer.c
drm_gem_cma_helper.c drm: core: Convert device logging to drm_* functions. 2020-07-20 09:34:24 +02:00
drm_gem_framebuffer_helper.c
drm_gem_shmem_helper.c
drm_gem_ttm_helper.c
drm_gem_vram_helper.c drm: remove optional dummy function from drivers using TTM 2020-07-21 16:03:28 +02:00
drm_gem.c
drm_hashtab.c
drm_hdcp.c
drm_internal.h drm/vblank: Add vblank works 2020-07-16 18:16:31 -04:00
drm_ioc32.c
drm_ioctl.c
drm_irq.c
drm_kms_helper_common.c
drm_lease.c
drm_legacy_misc.c
drm_legacy.h
drm_lock.c
drm_managed.c
drm_memory.c
drm_mipi_dbi.c drm: core: Convert device logging to drm_* functions. 2020-07-20 09:34:24 +02:00
drm_mipi_dsi.c drm: mipi-dsi: Convert logging to drm_* functions. 2020-07-10 20:21:45 +02:00
drm_mm.c
drm_mode_config.c
drm_mode_object.c
drm_modes.c drm: Replace HTTP links with HTTPS ones 2020-07-20 11:47:28 +02:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c
drm_panel_orientation_quirks.c
drm_panel.c
drm_pci.c
drm_plane_helper.c
drm_plane.c
drm_prime.c
drm_print.c
drm_probe_helper.c
drm_property.c
drm_rect.c
drm_scatter.c
drm_scdc_helper.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c
drm_syncobj.c
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vblank_work.c drm/vblank: Add vblank works 2020-07-16 18:16:31 -04:00
drm_vblank.c drm/vblank: Use spin_(un)lock_irq() in drm_crtc_queue_sequence_ioctl() 2020-07-21 11:08:35 -04:00
drm_vm.c
drm_vma_manager.c
drm_writeback.c
Kconfig drm: xlnx: DRM/KMS driver for Xilinx ZynqMP DisplayPort Subsystem 2020-07-18 02:59:16 +03:00
Makefile Xilinx ZynqMP DisplayPort Subsystem driver 2020-07-23 15:31:38 +10:00