Lines Matching refs:hwmgr
29 int smu7_fan_ctrl_get_fan_speed_info(struct pp_hwmgr *hwmgr, in smu7_fan_ctrl_get_fan_speed_info() argument
32 if (hwmgr->thermal_controller.fanInfo.bNoFan) in smu7_fan_ctrl_get_fan_speed_info()
41 hwmgr->thermal_controller.fanInfo.ucTachometerPulsesPerRevolution) { in smu7_fan_ctrl_get_fan_speed_info()
44 fan_speed_info->min_rpm = hwmgr->thermal_controller.fanInfo.ulMinRPM; in smu7_fan_ctrl_get_fan_speed_info()
45 fan_speed_info->max_rpm = hwmgr->thermal_controller.fanInfo.ulMaxRPM; in smu7_fan_ctrl_get_fan_speed_info()
54 int smu7_fan_ctrl_get_fan_speed_percent(struct pp_hwmgr *hwmgr, in smu7_fan_ctrl_get_fan_speed_percent() argument
61 if (hwmgr->thermal_controller.fanInfo.bNoFan) in smu7_fan_ctrl_get_fan_speed_percent()
64 duty100 = PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_fan_ctrl_get_fan_speed_percent()
66 duty = PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_fan_ctrl_get_fan_speed_percent()
83 int smu7_fan_ctrl_get_fan_speed_rpm(struct pp_hwmgr *hwmgr, uint32_t *speed) in smu7_fan_ctrl_get_fan_speed_rpm() argument
88 if (hwmgr->thermal_controller.fanInfo.bNoFan || in smu7_fan_ctrl_get_fan_speed_rpm()
89 !hwmgr->thermal_controller.fanInfo.ucTachometerPulsesPerRevolution) in smu7_fan_ctrl_get_fan_speed_rpm()
92 tach_period = PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_fan_ctrl_get_fan_speed_rpm()
98 crystal_clock_freq = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); in smu7_fan_ctrl_get_fan_speed_rpm()
111 int smu7_fan_ctrl_set_static_mode(struct pp_hwmgr *hwmgr, uint32_t mode) in smu7_fan_ctrl_set_static_mode() argument
113 if (hwmgr->fan_ctrl_is_in_default_mode) { in smu7_fan_ctrl_set_static_mode()
114 hwmgr->fan_ctrl_default_mode = in smu7_fan_ctrl_set_static_mode()
115 PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_fan_ctrl_set_static_mode()
117 hwmgr->tmin = in smu7_fan_ctrl_set_static_mode()
118 PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_fan_ctrl_set_static_mode()
120 hwmgr->fan_ctrl_is_in_default_mode = false; in smu7_fan_ctrl_set_static_mode()
123 PHM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_fan_ctrl_set_static_mode()
125 PHM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_fan_ctrl_set_static_mode()
136 int smu7_fan_ctrl_set_default_mode(struct pp_hwmgr *hwmgr) in smu7_fan_ctrl_set_default_mode() argument
138 if (!hwmgr->fan_ctrl_is_in_default_mode) { in smu7_fan_ctrl_set_default_mode()
139 PHM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_fan_ctrl_set_default_mode()
140 CG_FDO_CTRL2, FDO_PWM_MODE, hwmgr->fan_ctrl_default_mode); in smu7_fan_ctrl_set_default_mode()
141 PHM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_fan_ctrl_set_default_mode()
142 CG_FDO_CTRL2, TMIN, hwmgr->tmin); in smu7_fan_ctrl_set_default_mode()
143 hwmgr->fan_ctrl_is_in_default_mode = true; in smu7_fan_ctrl_set_default_mode()
149 int smu7_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr) in smu7_fan_ctrl_start_smc_fan_control() argument
154 cgs_write_register(hwmgr->device, mmSMC_MSG_ARG_0, FAN_CONTROL_FUZZY); in smu7_fan_ctrl_start_smc_fan_control()
155 result = smum_send_msg_to_smc(hwmgr, PPSMC_StartFanControl); in smu7_fan_ctrl_start_smc_fan_control()
158 hwmgr->hwmgr_func->set_max_fan_rpm_output(hwmgr, in smu7_fan_ctrl_start_smc_fan_control()
159 hwmgr->thermal_controller. in smu7_fan_ctrl_start_smc_fan_control()
162 hwmgr->hwmgr_func->set_max_fan_pwm_output(hwmgr, in smu7_fan_ctrl_start_smc_fan_control()
163 hwmgr->thermal_controller. in smu7_fan_ctrl_start_smc_fan_control()
167 cgs_write_register(hwmgr->device, mmSMC_MSG_ARG_0, FAN_CONTROL_TABLE); in smu7_fan_ctrl_start_smc_fan_control()
168 result = smum_send_msg_to_smc(hwmgr, PPSMC_StartFanControl); in smu7_fan_ctrl_start_smc_fan_control()
171 if (!result && hwmgr->thermal_controller. in smu7_fan_ctrl_start_smc_fan_control()
173 result = smum_send_msg_to_smc_with_parameter(hwmgr, in smu7_fan_ctrl_start_smc_fan_control()
175 hwmgr->thermal_controller. in smu7_fan_ctrl_start_smc_fan_control()
177 hwmgr->fan_ctrl_enabled = true; in smu7_fan_ctrl_start_smc_fan_control()
183 int smu7_fan_ctrl_stop_smc_fan_control(struct pp_hwmgr *hwmgr) in smu7_fan_ctrl_stop_smc_fan_control() argument
185 hwmgr->fan_ctrl_enabled = false; in smu7_fan_ctrl_stop_smc_fan_control()
186 return smum_send_msg_to_smc(hwmgr, PPSMC_StopFanControl); in smu7_fan_ctrl_stop_smc_fan_control()
195 int smu7_fan_ctrl_set_fan_speed_percent(struct pp_hwmgr *hwmgr, in smu7_fan_ctrl_set_fan_speed_percent() argument
202 if (hwmgr->thermal_controller.fanInfo.bNoFan) in smu7_fan_ctrl_set_fan_speed_percent()
209 smu7_fan_ctrl_stop_smc_fan_control(hwmgr); in smu7_fan_ctrl_set_fan_speed_percent()
211 duty100 = PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_fan_ctrl_set_fan_speed_percent()
221 PHM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_fan_ctrl_set_fan_speed_percent()
224 return smu7_fan_ctrl_set_static_mode(hwmgr, FDO_PWM_MODE_STATIC); in smu7_fan_ctrl_set_fan_speed_percent()
232 int smu7_fan_ctrl_reset_fan_speed_to_default(struct pp_hwmgr *hwmgr) in smu7_fan_ctrl_reset_fan_speed_to_default() argument
236 if (hwmgr->thermal_controller.fanInfo.bNoFan) in smu7_fan_ctrl_reset_fan_speed_to_default()
240 result = smu7_fan_ctrl_set_static_mode(hwmgr, FDO_PWM_MODE_STATIC); in smu7_fan_ctrl_reset_fan_speed_to_default()
242 result = smu7_fan_ctrl_start_smc_fan_control(hwmgr); in smu7_fan_ctrl_reset_fan_speed_to_default()
244 result = smu7_fan_ctrl_set_default_mode(hwmgr); in smu7_fan_ctrl_reset_fan_speed_to_default()
255 int smu7_fan_ctrl_set_fan_speed_rpm(struct pp_hwmgr *hwmgr, uint32_t speed) in smu7_fan_ctrl_set_fan_speed_rpm() argument
260 if (hwmgr->thermal_controller.fanInfo.bNoFan || in smu7_fan_ctrl_set_fan_speed_rpm()
261 (hwmgr->thermal_controller.fanInfo. in smu7_fan_ctrl_set_fan_speed_rpm()
263 (speed < hwmgr->thermal_controller.fanInfo.ulMinRPM) || in smu7_fan_ctrl_set_fan_speed_rpm()
264 (speed > hwmgr->thermal_controller.fanInfo.ulMaxRPM)) in smu7_fan_ctrl_set_fan_speed_rpm()
268 smu7_fan_ctrl_stop_smc_fan_control(hwmgr); in smu7_fan_ctrl_set_fan_speed_rpm()
270 crystal_clock_freq = amdgpu_asic_get_xclk((struct amdgpu_device *)hwmgr->adev); in smu7_fan_ctrl_set_fan_speed_rpm()
274 PHM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_fan_ctrl_set_fan_speed_rpm()
277 return smu7_fan_ctrl_set_static_mode(hwmgr, FDO_PWM_MODE_STATIC_RPM); in smu7_fan_ctrl_set_fan_speed_rpm()
285 int smu7_thermal_get_temperature(struct pp_hwmgr *hwmgr) in smu7_thermal_get_temperature() argument
289 temp = PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_thermal_get_temperature()
310 static int smu7_thermal_set_temperature_range(struct pp_hwmgr *hwmgr, in smu7_thermal_set_temperature_range() argument
326 PHM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_thermal_set_temperature_range()
329 PHM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_thermal_set_temperature_range()
332 PHM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_thermal_set_temperature_range()
344 static int smu7_thermal_initialize(struct pp_hwmgr *hwmgr) in smu7_thermal_initialize() argument
346 if (hwmgr->thermal_controller.fanInfo.ucTachometerPulsesPerRevolution) in smu7_thermal_initialize()
347 PHM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_thermal_initialize()
349 hwmgr->thermal_controller.fanInfo. in smu7_thermal_initialize()
352 PHM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_thermal_initialize()
363 static void smu7_thermal_enable_alert(struct pp_hwmgr *hwmgr) in smu7_thermal_enable_alert() argument
367 alert = PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_thermal_enable_alert()
370 PHM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_thermal_enable_alert()
374 smum_send_msg_to_smc(hwmgr, PPSMC_MSG_Thermal_Cntl_Enable); in smu7_thermal_enable_alert()
381 int smu7_thermal_disable_alert(struct pp_hwmgr *hwmgr) in smu7_thermal_disable_alert() argument
385 alert = PHM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_thermal_disable_alert()
388 PHM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC, in smu7_thermal_disable_alert()
392 return smum_send_msg_to_smc(hwmgr, PPSMC_MSG_Thermal_Cntl_Disable); in smu7_thermal_disable_alert()
400 int smu7_thermal_stop_thermal_controller(struct pp_hwmgr *hwmgr) in smu7_thermal_stop_thermal_controller() argument
402 int result = smu7_thermal_disable_alert(hwmgr); in smu7_thermal_stop_thermal_controller()
404 if (!hwmgr->thermal_controller.fanInfo.bNoFan) in smu7_thermal_stop_thermal_controller()
405 smu7_fan_ctrl_set_default_mode(hwmgr); in smu7_thermal_stop_thermal_controller()
419 static int smu7_thermal_start_smc_fan_control(struct pp_hwmgr *hwmgr) in smu7_thermal_start_smc_fan_control() argument
427 smu7_fan_ctrl_start_smc_fan_control(hwmgr); in smu7_thermal_start_smc_fan_control()
428 smu7_fan_ctrl_set_static_mode(hwmgr, FDO_PWM_MODE_STATIC); in smu7_thermal_start_smc_fan_control()
434 int smu7_start_thermal_controller(struct pp_hwmgr *hwmgr, in smu7_start_thermal_controller() argument
442 smu7_thermal_initialize(hwmgr); in smu7_start_thermal_controller()
443 ret = smu7_thermal_set_temperature_range(hwmgr, range->min, range->max); in smu7_start_thermal_controller()
446 smu7_thermal_enable_alert(hwmgr); in smu7_start_thermal_controller()
447 ret = smum_thermal_avfs_enable(hwmgr); in smu7_start_thermal_controller()
456 smum_thermal_setup_fan_table(hwmgr); in smu7_start_thermal_controller()
457 smu7_thermal_start_smc_fan_control(hwmgr); in smu7_start_thermal_controller()
463 int smu7_thermal_ctrl_uninitialize_thermal_controller(struct pp_hwmgr *hwmgr) in smu7_thermal_ctrl_uninitialize_thermal_controller() argument
465 if (!hwmgr->thermal_controller.fanInfo.bNoFan) in smu7_thermal_ctrl_uninitialize_thermal_controller()
466 smu7_fan_ctrl_set_default_mode(hwmgr); in smu7_thermal_ctrl_uninitialize_thermal_controller()