aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0964-drm-amd-powerplay-add-fan-control-mode-interface-for.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0964-drm-amd-powerplay-add-fan-control-mode-interface-for.patch')
-rw-r--r--common/recipes-kernel/linux/files/0964-drm-amd-powerplay-add-fan-control-mode-interface-for.patch62
1 files changed, 62 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0964-drm-amd-powerplay-add-fan-control-mode-interface-for.patch b/common/recipes-kernel/linux/files/0964-drm-amd-powerplay-add-fan-control-mode-interface-for.patch
new file mode 100644
index 00000000..86de40f6
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0964-drm-amd-powerplay-add-fan-control-mode-interface-for.patch
@@ -0,0 +1,62 @@
+From 586629aacef111672337209e76cb12265b21293b Mon Sep 17 00:00:00 2001
+From: Rex Zhu <Rex.Zhu@amd.com>
+Date: Wed, 23 Mar 2016 18:47:29 +0800
+Subject: [PATCH 0964/1110] drm/amd/powerplay: add fan control mode interface
+ for baffin
+
+Add interface for manual fan control.
+
+Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ .../gpu/drm/amd/powerplay/hwmgr/polaris10_hwmgr.c | 26 ++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_hwmgr.c
+index 85a3341..fd29c56 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/polaris10_hwmgr.c
+@@ -4871,6 +4871,30 @@ static int polaris10_print_clock_levels(struct pp_hwmgr *hwmgr,
+ return size;
+ }
+
++static int polaris10_set_fan_control_mode(struct pp_hwmgr *hwmgr, uint32_t mode)
++{
++ if (mode) {
++ /* stop auto-manage */
++ if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
++ PHM_PlatformCaps_MicrocodeFanControl))
++ polaris10_fan_ctrl_stop_smc_fan_control(hwmgr);
++ polaris10_fan_ctrl_set_static_mode(hwmgr, mode);
++ } else
++ /* restart auto-manage */
++ polaris10_fan_ctrl_reset_fan_speed_to_default(hwmgr);
++
++ return 0;
++}
++
++static int polaris10_get_fan_control_mode(struct pp_hwmgr *hwmgr)
++{
++ if (hwmgr->fan_ctrl_is_in_default_mode)
++ return hwmgr->fan_ctrl_default_mode;
++ else
++ return PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
++ CG_FDO_CTRL2, FDO_PWM_MODE);
++}
++
+ static const struct pp_hwmgr_func polaris10_hwmgr_funcs = {
+ .backend_init = &polaris10_hwmgr_backend_init,
+ .backend_fini = &polaris10_hwmgr_backend_fini,
+@@ -4907,6 +4931,8 @@ static const struct pp_hwmgr_func polaris10_hwmgr_funcs = {
+ .register_internal_thermal_interrupt = polaris10_register_internal_thermal_interrupt,
+ .check_smc_update_required_for_display_configuration = polaris10_check_smc_update_required_for_display_configuration,
+ .check_states_equal = polaris10_check_states_equal,
++ .set_fan_control_mode = polaris10_set_fan_control_mode,
++ .get_fan_control_mode = polaris10_get_fan_control_mode,
+ .get_pp_table = polaris10_get_pp_table,
+ .set_pp_table = polaris10_set_pp_table,
+ .force_clock_level = polaris10_force_clock_level,
+--
+2.7.4
+