linux/drivers/gpu/drm/amd/display/amdgpu_dm
Nicholas Kazlauskas 58aa1c50e5 drm/amd/display: Use vblank control events for PSR enable/disable
[Why]
PSR can disable the HUBP along with the OTG when PSR is active.

We'll hit a pageflip timeout when the OTG is disable because we're no
longer updating the CRTC vblank counter and the pflip high IRQ will
not fire on the flip.

In order to flip the page flip timeout occur we should modify the
enter/exit conditions to match DRM requirements.

[How]
Use our deferred handlers for DRM vblank control to notify DMCU(B)
when it can enable or disable PSR based on whether vblank is disabled or
enabled respectively.

We'll need to pass along the stream with the notification now because
we want to access the CRTC state while the CRTC is locked to get the
stream state prior to the commit.

Retain a reference to the stream so it remains safe to continue to
access and release that reference once we're done with it.

Enable/disable logic follows what we were previously doing in
update_planes.

The workqueue has to be flushed before programming streams or planes
to ensure that we exit out of idle optimizations and PSR before
these events occur if necessary.

To keep the skip count logic the same to avoid FBCON PSR enablement
requires copying the allow condition onto the DM IRQ parameters - a
field that we can actually access from the worker.

Reviewed-by: Roman Li <Roman.Li@amd.com>
Acked-by: Wayne Lin <wayne.lin@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2021-08-16 15:35:56 -04:00
..
amdgpu_dm_color.c drm/amd/display: Verify Gamma & Degamma LUT sizes in amdgpu_dm_atomic_check 2021-06-11 16:16:07 -04:00
amdgpu_dm_crc.c drm/amd/display: Avoid get/put vblank when stream disabled 2021-05-19 22:39:28 -04:00
amdgpu_dm_crc.h drm/amd/display: Refactor suspend/resume of Secure display 2021-05-19 22:39:16 -04:00
amdgpu_dm_debugfs.c drm/amd/amdgpu: Add a new line to debugfs phy_settings output 2021-07-23 10:08:00 -04:00
amdgpu_dm_debugfs.h drm/amd/display: Support crc on specific region 2021-03-05 15:11:47 -05:00
amdgpu_dm_hdcp.c drm/amd/display: remove unused functions 2021-07-28 16:37:17 -04:00
amdgpu_dm_hdcp.h drm/amdgpu/display: remove hdcp_srm sysfs on device removal 2021-02-18 16:43:08 -05:00
amdgpu_dm_helpers.c drm/amd/display: Add DCN3.1 clock manager support 2021-06-04 16:03:26 -04:00
amdgpu_dm_irq_params.h drm/amd/display: Use vblank control events for PSR enable/disable 2021-08-16 15:35:56 -04:00
amdgpu_dm_irq.c drm/amd/display: use GFP_ATOMIC in amdgpu_dm_irq_schedule_work 2021-08-09 15:44:09 -04:00
amdgpu_dm_irq.h drm/amd/display: Support for DMUB AUX 2021-05-10 18:06:44 -04:00
amdgpu_dm_mst_types.c drm/amd/display: Create dc_sink when EDID fail 2021-08-16 15:35:56 -04:00
amdgpu_dm_mst_types.h
amdgpu_dm_pp_smu.c drm/amd/pm: make DAL communicate with SMU through unified interfaces 2021-04-09 16:42:37 -04:00
amdgpu_dm_psr.c drm/amd/display: remove unused variable 'dc' 2021-06-18 17:14:30 -04:00
amdgpu_dm_psr.h drm/amd/display: Delay PSR entry 2021-06-21 17:45:14 -04:00
amdgpu_dm_services.c
amdgpu_dm_trace.h drm/amd/display: Add control mechanism for FPU utilization 2021-08-05 21:17:59 -04:00
amdgpu_dm.c drm/amd/display: Use vblank control events for PSR enable/disable 2021-08-16 15:35:56 -04:00
amdgpu_dm.h drm/amd/display: Use vblank control events for PSR enable/disable 2021-08-16 15:35:56 -04:00
dc_fpu.c drm/amd/display: Add DC_FP helper to check FPU state 2021-08-05 21:17:59 -04:00
dc_fpu.h drm/amd/display: Add DC_FP helper to check FPU state 2021-08-05 21:17:59 -04:00
Makefile drm/amd/display: Add control mechanism for FPU 2021-08-05 21:17:59 -04:00