drm/amdgpu: Load fw between hw_init/resume_phase1 and phase2
Extract the function of fw loading out of powerplay. Do fw loading between hw_init/resuem_phase1 and phase2 Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -89,7 +89,6 @@ int hwmgr_early_init(struct pp_hwmgr *hwmgr)
|
||||
hwmgr_init_default_caps(hwmgr);
|
||||
hwmgr_set_user_specify_caps(hwmgr);
|
||||
hwmgr->fan_ctrl_is_in_default_mode = true;
|
||||
hwmgr->reload_fw = 1;
|
||||
hwmgr_init_workload_prority(hwmgr);
|
||||
|
||||
switch (hwmgr->chip_family) {
|
||||
@@ -209,17 +208,6 @@ int hwmgr_hw_init(struct pp_hwmgr *hwmgr)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (!hwmgr || !hwmgr->smumgr_funcs)
|
||||
return -EINVAL;
|
||||
|
||||
if (hwmgr->smumgr_funcs->start_smu) {
|
||||
ret = hwmgr->smumgr_funcs->start_smu(hwmgr);
|
||||
if (ret) {
|
||||
pr_err("smc start failed\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (!hwmgr->pm_en)
|
||||
return 0;
|
||||
|
||||
@@ -301,7 +289,6 @@ int hwmgr_suspend(struct pp_hwmgr *hwmgr)
|
||||
if (!hwmgr || !hwmgr->pm_en)
|
||||
return 0;
|
||||
|
||||
hwmgr->reload_fw = true;
|
||||
phm_disable_smc_firmware_ctf(hwmgr);
|
||||
ret = psm_set_boot_states(hwmgr);
|
||||
if (ret)
|
||||
@@ -321,13 +308,6 @@ int hwmgr_resume(struct pp_hwmgr *hwmgr)
|
||||
if (!hwmgr)
|
||||
return -EINVAL;
|
||||
|
||||
if (hwmgr->smumgr_funcs && hwmgr->smumgr_funcs->start_smu) {
|
||||
if (hwmgr->smumgr_funcs->start_smu(hwmgr)) {
|
||||
pr_err("smc start failed\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (!hwmgr->pm_en)
|
||||
return 0;
|
||||
|
||||
|
@@ -734,7 +734,6 @@ struct pp_hwmgr {
|
||||
void *smu_backend;
|
||||
const struct pp_smumgr_func *smumgr_funcs;
|
||||
bool is_kicker;
|
||||
bool reload_fw;
|
||||
|
||||
enum PP_DAL_POWERLEVEL dal_power_level;
|
||||
struct phm_dynamic_state_info dyn_state;
|
||||
|
@@ -343,9 +343,6 @@ int smu7_request_smu_load_fw(struct pp_hwmgr *hwmgr)
|
||||
uint32_t fw_to_load;
|
||||
int r = 0;
|
||||
|
||||
if (!hwmgr->reload_fw)
|
||||
return 0;
|
||||
|
||||
amdgpu_ucode_init_bo(hwmgr->adev);
|
||||
|
||||
if (smu_data->soft_regs_start)
|
||||
@@ -432,10 +429,9 @@ int smu7_request_smu_load_fw(struct pp_hwmgr *hwmgr)
|
||||
smu7_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_LoadUcodes, fw_to_load);
|
||||
|
||||
r = smu7_check_fw_load_finish(hwmgr, fw_to_load);
|
||||
if (!r) {
|
||||
hwmgr->reload_fw = 0;
|
||||
if (!r)
|
||||
return 0;
|
||||
}
|
||||
|
||||
pr_err("SMU load firmware failed\n");
|
||||
|
||||
failed:
|
||||
|
@@ -661,9 +661,6 @@ static int smu8_request_smu_load_fw(struct pp_hwmgr *hwmgr)
|
||||
uint32_t fw_to_check = 0;
|
||||
int ret;
|
||||
|
||||
if (!hwmgr->reload_fw)
|
||||
return 0;
|
||||
|
||||
amdgpu_ucode_init_bo(hwmgr->adev);
|
||||
|
||||
smu8_smu_populate_firmware_entries(hwmgr);
|
||||
@@ -719,8 +716,6 @@ static int smu8_request_smu_load_fw(struct pp_hwmgr *hwmgr)
|
||||
return ret;
|
||||
}
|
||||
|
||||
hwmgr->reload_fw = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Fai riferimento in un nuovo problema
Block a user