diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/1003-drm-amd-dal-keep-the-old-target-if-commit-fail-for-h.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/1003-drm-amd-dal-keep-the-old-target-if-commit-fail-for-h.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/1003-drm-amd-dal-keep-the-old-target-if-commit-fail-for-h.patch b/common/recipes-kernel/linux/files/1003-drm-amd-dal-keep-the-old-target-if-commit-fail-for-h.patch new file mode 100644 index 00000000..43d50bab --- /dev/null +++ b/common/recipes-kernel/linux/files/1003-drm-amd-dal-keep-the-old-target-if-commit-fail-for-h.patch @@ -0,0 +1,53 @@ +From 241c93fd927bc959a80bddf085147356ff4f4ceb Mon Sep 17 00:00:00 2001 +From: Eric Yang <eric.yang2@amd.com> +Date: Mon, 4 Apr 2016 10:57:43 -0400 +Subject: [PATCH 1003/1110] drm/amd/dal: keep the old target if commit fail for + headless + +Signed-off-by: Eric Yang <eric.yang2@amd.com> +Acked-by: Harry Wentland <harry.wentland@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c +index a21d634..a091d97 100644 +--- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c ++++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c +@@ -2363,6 +2363,7 @@ void dm_restore_drm_connector_state(struct drm_device *dev, struct drm_connector + struct amdgpu_crtc *disconnected_acrtc; + const struct dc_sink *sink; + struct dc_target *commit_targets[6]; ++ struct dc_target *current_target; + uint32_t commit_targets_count = 0; + + +@@ -2394,7 +2395,8 @@ void dm_restore_drm_connector_state(struct drm_device *dev, struct drm_connector + */ + manage_dm_interrupts(adev, disconnected_acrtc, false); + /* this is the update mode case */ +- dc_target_release(disconnected_acrtc->target); ++ ++ current_target = disconnected_acrtc->target; + + disconnected_acrtc->target = new_target; + disconnected_acrtc->enabled = true; +@@ -2416,11 +2418,12 @@ void dm_restore_drm_connector_state(struct drm_device *dev, struct drm_connector + commit_targets_count)) { + DRM_INFO("Failed to restore connector state!\n"); + dc_target_release(disconnected_acrtc->target); +- disconnected_acrtc->target = NULL; +- disconnected_acrtc->enabled = false; ++ disconnected_acrtc->target = current_target; ++ manage_dm_interrupts(adev, disconnected_acrtc, true); + return; + } + ++ dc_target_release(current_target); + + dm_dc_surface_commit(dc, &disconnected_acrtc->base, + to_dm_connector_state( +-- +2.7.4 + |