aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4382-drm-amd-powerplay-new-framework-to-honour-DAL-clock-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4382-drm-amd-powerplay-new-framework-to-honour-DAL-clock-.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4382-drm-amd-powerplay-new-framework-to-honour-DAL-clock-.patch87
1 files changed, 87 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4382-drm-amd-powerplay-new-framework-to-honour-DAL-clock-.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4382-drm-amd-powerplay-new-framework-to-honour-DAL-clock-.patch
new file mode 100644
index 00000000..72045dd7
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4382-drm-amd-powerplay-new-framework-to-honour-DAL-clock-.patch
@@ -0,0 +1,87 @@
+From b22ad036507501190c9283aff6706bd9faa85daa Mon Sep 17 00:00:00 2001
+From: Evan Quan <evan.quan@amd.com>
+Date: Wed, 9 May 2018 10:57:53 +0800
+Subject: [PATCH 4382/5725] drm/amd/powerplay: new framework to honour DAL
+ clock limits
+
+This is needed for vega12 and vega20 which do not support legacy
+powerstate. With this new framework, the DAL clocks limits can also
+be honored on these asics.
+
+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/hardwaremanager.c | 9 +++++++++
+ drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c | 7 +++++++
+ drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h | 2 ++
+ drivers/gpu/drm/amd/powerplay/inc/hwmgr.h | 2 ++
+ 4 files changed, 20 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c b/drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c
+index e411012..f5571e9f 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c
+@@ -132,6 +132,15 @@ int phm_apply_state_adjust_rules(struct pp_hwmgr *hwmgr,
+ return 0;
+ }
+
++int phm_apply_clock_adjust_rules(struct pp_hwmgr *hwmgr)
++{
++ PHM_FUNC_CHECK(hwmgr);
++
++ if (hwmgr->hwmgr_func->apply_clocks_adjust_rules != NULL)
++ return hwmgr->hwmgr_func->apply_clocks_adjust_rules(hwmgr);
++ return 0;
++}
++
+ int phm_powerdown_uvd(struct pp_hwmgr *hwmgr)
+ {
+ PHM_FUNC_CHECK(hwmgr);
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
+index 308bff2..2a2955c 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
+@@ -265,6 +265,13 @@ int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip,
+ if (skip)
+ return 0;
+
++ if (!hwmgr->ps)
++ /*
++ * for vega12/vega20 which does not support power state manager
++ * DAL clock limits should also be honoured
++ */
++ phm_apply_clock_adjust_rules(hwmgr);
++
+ phm_display_configuration_changed(hwmgr);
+
+ if (hwmgr->ps)
+diff --git a/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h b/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h
+index 9bb8785..e029555 100644
+--- a/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h
++++ b/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h
+@@ -410,6 +410,8 @@ extern int phm_apply_state_adjust_rules(struct pp_hwmgr *hwmgr,
+ struct pp_power_state *adjusted_ps,
+ const struct pp_power_state *current_ps);
+
++extern int phm_apply_clock_adjust_rules(struct pp_hwmgr *hwmgr);
++
+ extern int phm_force_dpm_levels(struct pp_hwmgr *hwmgr, enum amd_dpm_forced_level level);
+ extern int phm_display_configuration_changed(struct pp_hwmgr *hwmgr);
+ extern int phm_notify_smc_display_config_after_ps_adjustment(struct pp_hwmgr *hwmgr);
+diff --git a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
+index 3c321c7..9b6c6af 100644
+--- a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
++++ b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
+@@ -229,6 +229,8 @@ struct pp_hwmgr_func {
+ struct pp_power_state *prequest_ps,
+ const struct pp_power_state *pcurrent_ps);
+
++ int (*apply_clocks_adjust_rules)(struct pp_hwmgr *hwmgr);
++
+ int (*force_dpm_level)(struct pp_hwmgr *hw_mgr,
+ enum amd_dpm_forced_level level);
+
+--
+2.7.4
+