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