[PATCH 1/4] drm/amd/powerplay: hardcode temp range to 0-89 for vega10.
Rex Zhu
Rex.Zhu at amd.com
Wed May 31 12:16:10 UTC 2017
clean up code in vega10_thermal.c
Change-Id: I2eb0b6c9afa4fa23d31b4dfed317689623fcbcda
Signed-off-by: Rex Zhu <Rex.Zhu at amd.com>
---
.../gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c | 49 ++++++++--------------
1 file changed, 17 insertions(+), 32 deletions(-)
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c
index 7bb4e46..1bc39ec 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_thermal.c
@@ -144,21 +144,13 @@ int vega10_fan_ctrl_set_static_mode(struct pp_hwmgr *hwmgr, uint32_t mode)
(cgs_read_register(hwmgr->device, reg) &
CG_FDO_CTRL2__FDO_PWM_MODE_MASK) >>
CG_FDO_CTRL2__FDO_PWM_MODE__SHIFT;
- hwmgr->tmin = (cgs_read_register(hwmgr->device, reg) &
- CG_FDO_CTRL2__TMIN_MASK) >>
- CG_FDO_CTRL2__TMIN__SHIFT;
hwmgr->fan_ctrl_is_in_default_mode = false;
}
cgs_write_register(hwmgr->device, reg,
(cgs_read_register(hwmgr->device, reg) &
- ~CG_FDO_CTRL2__TMIN_MASK) |
- (0 << CG_FDO_CTRL2__TMIN__SHIFT));
- cgs_write_register(hwmgr->device, reg,
- (cgs_read_register(hwmgr->device, reg) &
~CG_FDO_CTRL2__FDO_PWM_MODE_MASK) |
(mode << CG_FDO_CTRL2__FDO_PWM_MODE__SHIFT));
-
return 0;
}
@@ -170,20 +162,18 @@ int vega10_fan_ctrl_set_static_mode(struct pp_hwmgr *hwmgr, uint32_t mode)
int vega10_fan_ctrl_set_default_mode(struct pp_hwmgr *hwmgr)
{
uint32_t reg;
+ uint32_t ctrl;
reg = soc15_get_register_offset(THM_HWID, 0,
mmCG_FDO_CTRL2_BASE_IDX, mmCG_FDO_CTRL2);
if (!hwmgr->fan_ctrl_is_in_default_mode) {
- cgs_write_register(hwmgr->device, reg,
- (cgs_read_register(hwmgr->device, reg) &
- ~CG_FDO_CTRL2__FDO_PWM_MODE_MASK) |
- (hwmgr->fan_ctrl_default_mode <<
- CG_FDO_CTRL2__FDO_PWM_MODE__SHIFT));
- cgs_write_register(hwmgr->device, reg,
- (cgs_read_register(hwmgr->device, reg) &
- ~CG_FDO_CTRL2__TMIN_MASK) |
- (hwmgr->tmin << CG_FDO_CTRL2__TMIN__SHIFT));
+ ctrl = cgs_read_register(hwmgr->device, reg);
+ ctrl = ctrl & (~(CG_FDO_CTRL2__FDO_PWM_MODE_MASK));
+ ctrl = ctrl | (hwmgr->fan_ctrl_default_mode << CG_FDO_CTRL2__FDO_PWM_MODE__SHIFT);
+ ctrl = ctrl & (~(CG_FDO_CTRL2__TMIN_MASK));
+ ctrl = ctrl | (hwmgr->tmin << CG_FDO_CTRL2__TMIN__SHIFT);
+ cgs_write_register(hwmgr->device, reg, ctrl);
hwmgr->fan_ctrl_is_in_default_mode = true;
}
@@ -325,9 +315,9 @@ int vega10_fan_ctrl_reset_fan_speed_to_default(struct pp_hwmgr *hwmgr)
FDO_PWM_MODE_STATIC);
if (!result)
result = vega10_fan_ctrl_start_smc_fan_control(hwmgr);
- } else
+ } else {
result = vega10_fan_ctrl_set_default_mode(hwmgr);
-
+ }
return result;
}
@@ -404,15 +394,10 @@ static int vega10_thermal_set_temperature_range(struct pp_hwmgr *hwmgr,
{
uint32_t low = VEGA10_THERMAL_MINIMUM_ALERT_TEMP *
PP_TEMPERATURE_UNITS_PER_CENTIGRADES;
- uint32_t high = VEGA10_THERMAL_MAXIMUM_ALERT_TEMP *
+ uint32_t high = 89 *
PP_TEMPERATURE_UNITS_PER_CENTIGRADES;
uint32_t val, reg;
- if (low < range->min)
- low = range->min;
- if (high > range->max)
- high = range->max;
-
if (low > high)
return -EINVAL;
@@ -420,7 +405,6 @@ static int vega10_thermal_set_temperature_range(struct pp_hwmgr *hwmgr,
mmTHM_THERMAL_INT_CTRL_BASE_IDX, mmTHM_THERMAL_INT_CTRL);
val = cgs_read_register(hwmgr->device, reg);
-
val &= (~THM_THERMAL_INT_CTRL__MAX_IH_CREDIT_MASK);
val |= (5 << THM_THERMAL_INT_CTRL__MAX_IH_CREDIT__SHIFT);
@@ -450,24 +434,25 @@ static int vega10_thermal_set_temperature_range(struct pp_hwmgr *hwmgr,
static int vega10_thermal_initialize(struct pp_hwmgr *hwmgr)
{
uint32_t reg;
+ uint32_t tmp;
if (hwmgr->thermal_controller.fanInfo.ucTachometerPulsesPerRevolution) {
reg = soc15_get_register_offset(THM_HWID, 0,
mmCG_TACH_CTRL_BASE_IDX, mmCG_TACH_CTRL);
- cgs_write_register(hwmgr->device, reg,
- (cgs_read_register(hwmgr->device, reg) &
+ tmp = (cgs_read_register(hwmgr->device, reg) &
~CG_TACH_CTRL__EDGE_PER_REV_MASK) |
((hwmgr->thermal_controller.fanInfo.
ucTachometerPulsesPerRevolution - 1) <<
- CG_TACH_CTRL__EDGE_PER_REV__SHIFT));
+ CG_TACH_CTRL__EDGE_PER_REV__SHIFT);
+ cgs_write_register(hwmgr->device, reg, tmp);
}
reg = soc15_get_register_offset(THM_HWID, 0,
mmCG_FDO_CTRL2_BASE_IDX, mmCG_FDO_CTRL2);
- cgs_write_register(hwmgr->device, reg,
- (cgs_read_register(hwmgr->device, reg) &
+ tmp = (cgs_read_register(hwmgr->device, reg) &
~CG_FDO_CTRL2__TACH_PWM_RESP_RATE_MASK) |
- (0x28 << CG_FDO_CTRL2__TACH_PWM_RESP_RATE__SHIFT));
+ (0x28 << CG_FDO_CTRL2__TACH_PWM_RESP_RATE__SHIFT);
+ cgs_write_register(hwmgr->device, reg, tmp);
return 0;
}
--
1.9.1
More information about the amd-gfx
mailing list