summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsg <jsg@openbsd.org>2020-08-22 06:36:30 +0000
committerjsg <jsg@openbsd.org>2020-08-22 06:36:30 +0000
commite883540302a1c5dfa12b7b107478cd3a34fa4553 (patch)
tree973f4a2a019e8d33fc5a61b97d0ef841671e54f1
parentdrm/amdgpu: Fix bug where DPM is not enabled after hibernate and resume (diff)
downloadwireguard-openbsd-e883540302a1c5dfa12b7b107478cd3a34fa4553.tar.xz
wireguard-openbsd-e883540302a1c5dfa12b7b107478cd3a34fa4553.zip
drm/amd/display: Fix dmesg warning from setting abm level
From Stylon Wang bab191af99bd97db80ba19aafeea8081949bbe53 in linux 5.7.y/5.7.17 c5892a10218214d729699ab61bad6fc109baf0ce in mainline linux
-rw-r--r--sys/dev/pci/drm/amd/display/amdgpu_dm/amdgpu_dm.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/sys/dev/pci/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/sys/dev/pci/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 2ca7db4a61c..1dec6f39583 100644
--- a/sys/dev/pci/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/sys/dev/pci/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -8472,6 +8472,29 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
if (ret)
goto fail;
+ /* Check connector changes */
+ for_each_oldnew_connector_in_state(state, connector, old_con_state, new_con_state, i) {
+ struct dm_connector_state *dm_old_con_state = to_dm_connector_state(old_con_state);
+ struct dm_connector_state *dm_new_con_state = to_dm_connector_state(new_con_state);
+
+ /* Skip connectors that are disabled or part of modeset already. */
+ if (!old_con_state->crtc && !new_con_state->crtc)
+ continue;
+
+ if (!new_con_state->crtc)
+ continue;
+
+ new_crtc_state = drm_atomic_get_crtc_state(state, new_con_state->crtc);
+ if (IS_ERR(new_crtc_state)) {
+ ret = PTR_ERR(new_crtc_state);
+ goto fail;
+ }
+
+ if (dm_old_con_state->abm_level !=
+ dm_new_con_state->abm_level)
+ new_crtc_state->connectors_changed = true;
+ }
+
#if defined(CONFIG_DRM_AMD_DC_DCN)
if (!compute_mst_dsc_configs_for_state(state, dm_state->context))
goto fail;