aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/1003-drm-amd-dal-keep-the-old-target-if-commit-fail-for-h.patch
diff options
context:
space:
mode:
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.patch53
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
+