aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0689-drm-amdgpu-Use-non-polling-user-mode-notification-for-DAL.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0689-drm-amdgpu-Use-non-polling-user-mode-notification-for-DAL.patch')
-rw-r--r--common/recipes-kernel/linux/files/0689-drm-amdgpu-Use-non-polling-user-mode-notification-for-DAL.patch66
1 files changed, 66 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0689-drm-amdgpu-Use-non-polling-user-mode-notification-for-DAL.patch b/common/recipes-kernel/linux/files/0689-drm-amdgpu-Use-non-polling-user-mode-notification-for-DAL.patch
new file mode 100644
index 00000000..14a1f57f
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0689-drm-amdgpu-Use-non-polling-user-mode-notification-for-DAL.patch
@@ -0,0 +1,66 @@
+From 7f629b8c628b12e1c913baeb82709b464ddffd7b Mon Sep 17 00:00:00 2001
+From: Eric Yang <eric.yang2@amd.com>
+Date: Tue, 27 Sep 2016 14:07:02 +0530
+Subject: [PATCH] Use non-polling user mode notification for DAL
+
+DAL do not use polling for user mode notification. This
+change allow actual user mode notification on S3 resume
+when DAL is enabled
+
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Eric Yang <eric.yang2@amd.com>
+Signed-off-by: Sanjay R Mehta <sanju.mehta@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 21 +++++++++++++++------
+ 1 file changed, 15 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+index 59209e4..cfeebcc 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+@@ -1707,12 +1707,14 @@ int amdgpu_suspend_kms(struct drm_device *dev, bool suspend, bool fbcon)
+
+ drm_kms_helper_poll_disable(dev);
+
+- /* turn off display hw */
+- drm_modeset_lock_all(dev);
+- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+- drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
++ if (!amdgpu_has_dal_support(adev)) {
++ /* turn off display hw */
++ drm_modeset_lock_all(dev);
++ list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
++ drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
++ }
++ drm_modeset_unlock_all(dev);
+ }
+- drm_modeset_unlock_all(dev);
+
+ /* unpin the front buffers and cursors */
+ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
+@@ -1807,6 +1809,9 @@ int amdgpu_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
+ if (r)
+ DRM_ERROR("amdgpu_resume failed (%d).\n", r);
+
++ if (r)
++ DRM_ERROR("amdgpu_resume failed (%d).\n", r);
++
+ amdgpu_fence_driver_resume(adev);
+
+ if (resume) {
+@@ -1866,7 +1871,11 @@ int amdgpu_resume_kms(struct drm_device *dev, bool resume, bool fbcon)
+ #ifdef CONFIG_PM
+ dev->dev->power.disable_depth++;
+ #endif
+- drm_helper_hpd_irq_event(dev);
++
++ if (!amdgpu_has_dal_support(adev))
++ drm_helper_hpd_irq_event(dev);
++ else
++ drm_kms_helper_hotplug_event(dev);
+ #ifdef CONFIG_PM
+ dev->dev->power.disable_depth--;
+ #endif
+--
+2.7.4
+