diff options
author | Jonathan Gray <jsg@cvs.openbsd.org> | 2020-05-11 05:08:11 +0000 |
---|---|---|
committer | Jonathan Gray <jsg@cvs.openbsd.org> | 2020-05-11 05:08:11 +0000 |
commit | 55989630e04ddc0bebcb6f661abbb95c39520f61 (patch) | |
tree | 92de71c526f07205170a91b470c344764e3b2263 /sys/dev | |
parent | 7628574d6191a8df71e64d77bc40e9bfb5c4af00 (diff) |
drm/amdgpu: Correctly initialize thermal controller for GPUs with Powerplay table v0 (e.g Hawaii)
From Sandeep Raghuraman
65d5ea5f20f76ecedcc470df45fe0d92146f8e8e in linux 4.19.y/4.19.122
bbc25dadc7ed19f9d6b2e30980f0eb4c741bb8bf in mainline linux
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/pci/drm/amd/powerplay/hwmgr/processpptables.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/sys/dev/pci/drm/amd/powerplay/hwmgr/processpptables.c b/sys/dev/pci/drm/amd/powerplay/hwmgr/processpptables.c index 925e17104f9..b9e08b06ed5 100644 --- a/sys/dev/pci/drm/amd/powerplay/hwmgr/processpptables.c +++ b/sys/dev/pci/drm/amd/powerplay/hwmgr/processpptables.c @@ -983,6 +983,32 @@ static int init_thermal_controller( struct pp_hwmgr *hwmgr, const ATOM_PPLIB_POWERPLAYTABLE *powerplay_table) { + hwmgr->thermal_controller.ucType = + powerplay_table->sThermalController.ucType; + hwmgr->thermal_controller.ucI2cLine = + powerplay_table->sThermalController.ucI2cLine; + hwmgr->thermal_controller.ucI2cAddress = + powerplay_table->sThermalController.ucI2cAddress; + + hwmgr->thermal_controller.fanInfo.bNoFan = + (0 != (powerplay_table->sThermalController.ucFanParameters & + ATOM_PP_FANPARAMETERS_NOFAN)); + + hwmgr->thermal_controller.fanInfo.ucTachometerPulsesPerRevolution = + powerplay_table->sThermalController.ucFanParameters & + ATOM_PP_FANPARAMETERS_TACHOMETER_PULSES_PER_REVOLUTION_MASK; + + hwmgr->thermal_controller.fanInfo.ulMinRPM + = powerplay_table->sThermalController.ucFanMinRPM * 100UL; + hwmgr->thermal_controller.fanInfo.ulMaxRPM + = powerplay_table->sThermalController.ucFanMaxRPM * 100UL; + + set_hw_cap(hwmgr, + ATOM_PP_THERMALCONTROLLER_NONE != hwmgr->thermal_controller.ucType, + PHM_PlatformCaps_ThermalController); + + hwmgr->thermal_controller.use_hw_fan_control = 1; + return 0; } |