diff options
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.patch | 66 |
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 + |