aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1122-drm-amd-powerplay-enforce-display-related-settings-o.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1122-drm-amd-powerplay-enforce-display-related-settings-o.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1122-drm-amd-powerplay-enforce-display-related-settings-o.patch113
1 files changed, 113 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1122-drm-amd-powerplay-enforce-display-related-settings-o.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1122-drm-amd-powerplay-enforce-display-related-settings-o.patch
new file mode 100644
index 00000000..d82614a4
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1122-drm-amd-powerplay-enforce-display-related-settings-o.patch
@@ -0,0 +1,113 @@
+From 9806af59ca3920316be5c1119849ed7ceeb4b52d Mon Sep 17 00:00:00 2001
+From: Evan Quan <evan.quan@amd.com>
+Date: Thu, 17 Jan 2019 17:52:41 +0800
+Subject: [PATCH 1122/2940] drm/amd/powerplay: enforce display related settings
+ only on needed
+
+No display related settings are needed on dpm level change.
+
+Signed-off-by: Evan Quan <evan.quan@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c | 10 +++++-----
+ drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c | 11 +++++------
+ drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.h | 2 +-
+ 3 files changed, 11 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
+index 9dc7d7bd7d51..88abbe18d083 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
+@@ -274,7 +274,7 @@ int hwmgr_hw_fini(struct pp_hwmgr *hwmgr)
+
+ phm_stop_thermal_controller(hwmgr);
+ psm_set_boot_states(hwmgr);
+- psm_adjust_power_state_dynamic(hwmgr, false, NULL);
++ psm_adjust_power_state_dynamic(hwmgr, true, NULL);
+ phm_disable_dynamic_state_management(hwmgr);
+ phm_disable_clock_power_gatings(hwmgr);
+
+@@ -296,7 +296,7 @@ int hwmgr_suspend(struct pp_hwmgr *hwmgr)
+ ret = psm_set_boot_states(hwmgr);
+ if (ret)
+ return ret;
+- ret = psm_adjust_power_state_dynamic(hwmgr, false, NULL);
++ ret = psm_adjust_power_state_dynamic(hwmgr, true, NULL);
+ if (ret)
+ return ret;
+ ret = phm_power_down_asic(hwmgr);
+@@ -326,7 +326,7 @@ int hwmgr_resume(struct pp_hwmgr *hwmgr)
+ if (ret)
+ return ret;
+
+- ret = psm_adjust_power_state_dynamic(hwmgr, false, NULL);
++ ret = psm_adjust_power_state_dynamic(hwmgr, true, NULL);
+
+ return ret;
+ }
+@@ -380,12 +380,12 @@ int hwmgr_handle_task(struct pp_hwmgr *hwmgr, enum amd_pp_task task_id,
+ ret = psm_set_user_performance_state(hwmgr, requested_ui_label, &requested_ps);
+ if (ret)
+ return ret;
+- ret = psm_adjust_power_state_dynamic(hwmgr, false, requested_ps);
++ ret = psm_adjust_power_state_dynamic(hwmgr, true, requested_ps);
+ break;
+ }
+ case AMD_PP_TASK_COMPLETE_INIT:
+ case AMD_PP_TASK_READJUST_POWER_STATE:
+- ret = psm_adjust_power_state_dynamic(hwmgr, false, NULL);
++ ret = psm_adjust_power_state_dynamic(hwmgr, true, NULL);
+ break;
+ default:
+ break;
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
+index 68f3dcaa8070..ce177d7f04cb 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
+@@ -256,16 +256,14 @@ static void power_state_management(struct pp_hwmgr *hwmgr,
+ }
+ }
+
+-int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip,
++int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip_display_settings,
+ struct pp_power_state *new_ps)
+ {
+ uint32_t index;
+ long workload;
+
+- if (skip)
+- return 0;
+-
+- phm_display_configuration_changed(hwmgr);
++ if (!skip_display_settings)
++ phm_display_configuration_changed(hwmgr);
+
+ if (hwmgr->ps)
+ power_state_management(hwmgr, new_ps);
+@@ -276,7 +274,8 @@ int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip,
+ */
+ phm_apply_clock_adjust_rules(hwmgr);
+
+- phm_notify_smc_display_config_after_ps_adjustment(hwmgr);
++ if (!skip_display_settings)
++ phm_notify_smc_display_config_after_ps_adjustment(hwmgr);
+
+ if ((hwmgr->request_dpm_level != hwmgr->dpm_level) &&
+ !phm_force_dpm_levels(hwmgr, hwmgr->request_dpm_level))
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.h b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.h
+index fa1b6825036a..b62d55f1f289 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.h
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.h
+@@ -34,7 +34,7 @@ int psm_set_user_performance_state(struct pp_hwmgr *hwmgr,
+ enum PP_StateUILabel label_id,
+ struct pp_power_state **state);
+ int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr,
+- bool skip,
++ bool skip_display_settings,
+ struct pp_power_state *new_ps);
+
+ #endif
+--
+2.17.1
+