diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2613-drm-amd-powerplay-use-hardware-fan-control-if-no-pow.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2613-drm-amd-powerplay-use-hardware-fan-control-if-no-pow.patch | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2613-drm-amd-powerplay-use-hardware-fan-control-if-no-pow.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2613-drm-amd-powerplay-use-hardware-fan-control-if-no-pow.patch new file mode 100644 index 00000000..79b6bcc8 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2613-drm-amd-powerplay-use-hardware-fan-control-if-no-pow.patch @@ -0,0 +1,66 @@ +From a1c720d0f1bfe9b541cec1cba2facb092c86226f Mon Sep 17 00:00:00 2001 +From: Evan Quan <evan.quan@amd.com> +Date: Thu, 27 Jun 2019 11:01:04 +0800 +Subject: [PATCH 2613/2940] drm/amd/powerplay: use hardware fan control if no + powerplay fan table + +Otherwise, you may get divided-by-zero error or corrput the SMU fan +control feature. + +Change-Id: Icd7467a7fc5287a92945ba0fcc19699192b1683a +Signed-off-by: Evan Quan <evan.quan@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Tested-by: Slava Abramov <slava.abramov@amd.com> +Acked-by: Slava Abramov <slava.abramov@amd.com> +--- + drivers/gpu/drm/amd/powerplay/hwmgr/process_pptables_v1_0.c | 4 +++- + drivers/gpu/drm/amd/powerplay/inc/hwmgr.h | 1 + + drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c | 4 ++++ + 3 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/process_pptables_v1_0.c b/drivers/gpu/drm/amd/powerplay/hwmgr/process_pptables_v1_0.c +index ae64ff7153d6..1cd5a8b5cdc1 100644 +--- a/drivers/gpu/drm/amd/powerplay/hwmgr/process_pptables_v1_0.c ++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/process_pptables_v1_0.c +@@ -916,8 +916,10 @@ static int init_thermal_controller( + PHM_PlatformCaps_ThermalController + ); + +- if (0 == powerplay_table->usFanTableOffset) ++ if (0 == powerplay_table->usFanTableOffset) { ++ hwmgr->thermal_controller.use_hw_fan_control = 1; + return 0; ++ } + + fan_table = (const PPTable_Generic_SubTable_Header *) + (((unsigned long)powerplay_table) + +diff --git a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h +index 47dbecca5adb..c5989cb38b1b 100644 +--- a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h ++++ b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h +@@ -695,6 +695,7 @@ struct pp_thermal_controller_info { + uint8_t ucType; + uint8_t ucI2cLine; + uint8_t ucI2cAddress; ++ uint8_t use_hw_fan_control; + struct pp_fan_info fanInfo; + struct pp_advance_fan_control_parameters advanceFanControlParameters; + }; +diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c +index fbac2d3326b5..a1a9f6196009 100644 +--- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c ++++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c +@@ -2092,6 +2092,10 @@ static int polaris10_thermal_setup_fan_table(struct pp_hwmgr *hwmgr) + return 0; + } + ++ /* use hardware fan control */ ++ if (hwmgr->thermal_controller.use_hw_fan_control) ++ return 0; ++ + tmp64 = hwmgr->thermal_controller.advanceFanControlParameters. + usPWMMin * duty100; + do_div(tmp64, 10000); +-- +2.17.1 + |