mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-22 11:58:21 +07:00
drm/amd/powerplay: enable MGPU fan boost feature on Vega10
For those SKUs which support this feature only. Signed-off-by: Evan Quan <evan.quan@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
049d69df2d
commit
713b64a58e
@ -4984,6 +4984,7 @@ static const struct pp_hwmgr_func vega10_hwmgr_funcs = {
|
|||||||
.get_asic_baco_capability = vega10_baco_get_capability,
|
.get_asic_baco_capability = vega10_baco_get_capability,
|
||||||
.get_asic_baco_state = vega10_baco_get_state,
|
.get_asic_baco_state = vega10_baco_get_state,
|
||||||
.set_asic_baco_state = vega10_baco_set_state,
|
.set_asic_baco_state = vega10_baco_set_state,
|
||||||
|
.enable_mgpu_fan_boost = vega10_enable_mgpu_fan_boost,
|
||||||
};
|
};
|
||||||
|
|
||||||
int vega10_hwmgr_init(struct pp_hwmgr *hwmgr)
|
int vega10_hwmgr_init(struct pp_hwmgr *hwmgr)
|
||||||
|
@ -556,6 +556,43 @@ int vega10_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int vega10_enable_mgpu_fan_boost(struct pp_hwmgr *hwmgr)
|
||||||
|
{
|
||||||
|
struct vega10_hwmgr *data = hwmgr->backend;
|
||||||
|
PPTable_t *table = &(data->smc_state_table.pp_table);
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (!data->smu_features[GNLD_FAN_CONTROL].supported)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!hwmgr->thermal_controller.advanceFanControlParameters.
|
||||||
|
usMGpuThrottlingRPMLimit)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
table->FanThrottlingRpm = hwmgr->thermal_controller.
|
||||||
|
advanceFanControlParameters.usMGpuThrottlingRPMLimit;
|
||||||
|
|
||||||
|
ret = smum_smc_table_manager(hwmgr,
|
||||||
|
(uint8_t *)(&(data->smc_state_table.pp_table)),
|
||||||
|
PPTABLE, false);
|
||||||
|
if (ret) {
|
||||||
|
pr_info("Failed to update fan control table in pptable!");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = vega10_disable_fan_control_feature(hwmgr);
|
||||||
|
if (ret) {
|
||||||
|
pr_info("Attempt to disable SMC fan control feature failed!");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = vega10_enable_fan_control_feature(hwmgr);
|
||||||
|
if (ret)
|
||||||
|
pr_info("Attempt to enable SMC fan control feature failed!");
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start the fan control on the SMC.
|
* Start the fan control on the SMC.
|
||||||
* @param hwmgr the address of the powerplay hardware manager.
|
* @param hwmgr the address of the powerplay hardware manager.
|
||||||
|
@ -73,6 +73,7 @@ extern int vega10_thermal_disable_alert(struct pp_hwmgr *hwmgr);
|
|||||||
extern int vega10_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr);
|
extern int vega10_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr);
|
||||||
extern int vega10_start_thermal_controller(struct pp_hwmgr *hwmgr,
|
extern int vega10_start_thermal_controller(struct pp_hwmgr *hwmgr,
|
||||||
struct PP_TemperatureRange *range);
|
struct PP_TemperatureRange *range);
|
||||||
|
extern int vega10_enable_mgpu_fan_boost(struct pp_hwmgr *hwmgr);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user