Commit d3f8c0ab authored by Rex Zhu's avatar Rex Zhu Committed by Alex Deucher

drm/amd/powerplay: refine interface in struct pp_smumgr_func

unify to use struct hwmgr as function parameter in
smumgr.
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarRex Zhu <Rex.Zhu@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent e9c7577c
...@@ -83,7 +83,7 @@ static int pp_sw_init(void *handle) ...@@ -83,7 +83,7 @@ static int pp_sw_init(void *handle)
if (smumgr->smumgr_funcs->smu_init == NULL) if (smumgr->smumgr_funcs->smu_init == NULL)
return -EINVAL; return -EINVAL;
ret = smumgr->smumgr_funcs->smu_init(smumgr); ret = smumgr->smumgr_funcs->smu_init(pp_handle->hwmgr);
pr_info("amdgpu: powerplay sw initialized\n"); pr_info("amdgpu: powerplay sw initialized\n");
} }
...@@ -103,7 +103,7 @@ static int pp_sw_fini(void *handle) ...@@ -103,7 +103,7 @@ static int pp_sw_fini(void *handle)
if (smumgr->smumgr_funcs->smu_fini == NULL) if (smumgr->smumgr_funcs->smu_fini == NULL)
return -EINVAL; return -EINVAL;
ret = smumgr->smumgr_funcs->smu_fini(smumgr); ret = smumgr->smumgr_funcs->smu_fini(pp_handle->hwmgr);
} }
return ret; return ret;
} }
...@@ -122,9 +122,9 @@ static int pp_hw_init(void *handle) ...@@ -122,9 +122,9 @@ static int pp_hw_init(void *handle)
if (smumgr->smumgr_funcs->start_smu == NULL) if (smumgr->smumgr_funcs->start_smu == NULL)
return -EINVAL; return -EINVAL;
if(smumgr->smumgr_funcs->start_smu(smumgr)) { if(smumgr->smumgr_funcs->start_smu(pp_handle->hwmgr)) {
pr_err("smc start failed\n"); pr_err("smc start failed\n");
smumgr->smumgr_funcs->smu_fini(smumgr); smumgr->smumgr_funcs->smu_fini(pp_handle->hwmgr);
return -EINVAL;; return -EINVAL;;
} }
if (ret == PP_DPM_DISABLED) if (ret == PP_DPM_DISABLED)
...@@ -246,10 +246,10 @@ static int pp_resume(void *handle) ...@@ -246,10 +246,10 @@ static int pp_resume(void *handle)
if (smumgr->smumgr_funcs->start_smu == NULL) if (smumgr->smumgr_funcs->start_smu == NULL)
return -EINVAL; return -EINVAL;
ret = smumgr->smumgr_funcs->start_smu(smumgr); ret = smumgr->smumgr_funcs->start_smu(pp_handle->hwmgr);
if (ret) { if (ret) {
pr_err("smc start failed\n"); pr_err("smc start failed\n");
smumgr->smumgr_funcs->smu_fini(smumgr); smumgr->smumgr_funcs->smu_fini(pp_handle->hwmgr);
return ret; return ret;
} }
......
...@@ -113,12 +113,12 @@ int cz_enable_disable_uvd_dpm(struct pp_hwmgr *hwmgr, bool enable) ...@@ -113,12 +113,12 @@ int cz_enable_disable_uvd_dpm(struct pp_hwmgr *hwmgr, bool enable)
PHM_PlatformCaps_UVDDPM)) { PHM_PlatformCaps_UVDDPM)) {
cz_hwmgr->dpm_flags |= DPMFlags_UVD_Enabled; cz_hwmgr->dpm_flags |= DPMFlags_UVD_Enabled;
dpm_features |= UVD_DPM_MASK; dpm_features |= UVD_DPM_MASK;
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_EnableAllSmuFeatures, dpm_features); PPSMC_MSG_EnableAllSmuFeatures, dpm_features);
} else { } else {
dpm_features |= UVD_DPM_MASK; dpm_features |= UVD_DPM_MASK;
cz_hwmgr->dpm_flags &= ~DPMFlags_UVD_Enabled; cz_hwmgr->dpm_flags &= ~DPMFlags_UVD_Enabled;
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_DisableAllSmuFeatures, dpm_features); PPSMC_MSG_DisableAllSmuFeatures, dpm_features);
} }
return 0; return 0;
...@@ -134,12 +134,12 @@ int cz_enable_disable_vce_dpm(struct pp_hwmgr *hwmgr, bool enable) ...@@ -134,12 +134,12 @@ int cz_enable_disable_vce_dpm(struct pp_hwmgr *hwmgr, bool enable)
PHM_PlatformCaps_VCEDPM)) { PHM_PlatformCaps_VCEDPM)) {
cz_hwmgr->dpm_flags |= DPMFlags_VCE_Enabled; cz_hwmgr->dpm_flags |= DPMFlags_VCE_Enabled;
dpm_features |= VCE_DPM_MASK; dpm_features |= VCE_DPM_MASK;
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_EnableAllSmuFeatures, dpm_features); PPSMC_MSG_EnableAllSmuFeatures, dpm_features);
} else { } else {
dpm_features |= VCE_DPM_MASK; dpm_features |= VCE_DPM_MASK;
cz_hwmgr->dpm_flags &= ~DPMFlags_VCE_Enabled; cz_hwmgr->dpm_flags &= ~DPMFlags_VCE_Enabled;
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_DisableAllSmuFeatures, dpm_features); PPSMC_MSG_DisableAllSmuFeatures, dpm_features);
} }
......
...@@ -818,7 +818,7 @@ void phm_apply_dal_min_voltage_request(struct pp_hwmgr *hwmgr) ...@@ -818,7 +818,7 @@ void phm_apply_dal_min_voltage_request(struct pp_hwmgr *hwmgr)
for (i = 0; i < vddc_table->count; i++) { for (i = 0; i < vddc_table->count; i++) {
if (req_vddc <= vddc_table->entries[i].vddc) { if (req_vddc <= vddc_table->entries[i].vddc) {
req_volt = (((uint32_t)vddc_table->entries[i].vddc) * VOLTAGE_SCALE); req_volt = (((uint32_t)vddc_table->entries[i].vddc) * VOLTAGE_SCALE);
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_VddC_Request, req_volt); PPSMC_MSG_VddC_Request, req_volt);
return; return;
} }
......
...@@ -174,33 +174,33 @@ static int rv_set_clock_limit(struct pp_hwmgr *hwmgr, const void *input) ...@@ -174,33 +174,33 @@ static int rv_set_clock_limit(struct pp_hwmgr *hwmgr, const void *input)
((hwmgr->uvd_arbiter.dclk_soft_min / 100) != rv_data->dclk_soft_min)) { ((hwmgr->uvd_arbiter.dclk_soft_min / 100) != rv_data->dclk_soft_min)) {
rv_data->vclk_soft_min = hwmgr->uvd_arbiter.vclk_soft_min / 100; rv_data->vclk_soft_min = hwmgr->uvd_arbiter.vclk_soft_min / 100;
rv_data->dclk_soft_min = hwmgr->uvd_arbiter.dclk_soft_min / 100; rv_data->dclk_soft_min = hwmgr->uvd_arbiter.dclk_soft_min / 100;
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_SetSoftMinVcn, PPSMC_MSG_SetSoftMinVcn,
(rv_data->vclk_soft_min << 16) | rv_data->vclk_soft_min); (rv_data->vclk_soft_min << 16) | rv_data->vclk_soft_min);
} }
if((hwmgr->gfx_arbiter.sclk_hard_min != 0) && if((hwmgr->gfx_arbiter.sclk_hard_min != 0) &&
((hwmgr->gfx_arbiter.sclk_hard_min / 100) != rv_data->soc_actual_hard_min_freq)) { ((hwmgr->gfx_arbiter.sclk_hard_min / 100) != rv_data->soc_actual_hard_min_freq)) {
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_SetHardMinSocclkByFreq, PPSMC_MSG_SetHardMinSocclkByFreq,
hwmgr->gfx_arbiter.sclk_hard_min / 100); hwmgr->gfx_arbiter.sclk_hard_min / 100);
rv_read_arg_from_smc(hwmgr->smumgr, &rv_data->soc_actual_hard_min_freq); rv_read_arg_from_smc(hwmgr, &rv_data->soc_actual_hard_min_freq);
} }
if ((hwmgr->gfx_arbiter.gfxclk != 0) && if ((hwmgr->gfx_arbiter.gfxclk != 0) &&
(rv_data->gfx_actual_soft_min_freq != (hwmgr->gfx_arbiter.gfxclk))) { (rv_data->gfx_actual_soft_min_freq != (hwmgr->gfx_arbiter.gfxclk))) {
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_SetMinVideoGfxclkFreq, PPSMC_MSG_SetMinVideoGfxclkFreq,
hwmgr->gfx_arbiter.gfxclk / 100); hwmgr->gfx_arbiter.gfxclk / 100);
rv_read_arg_from_smc(hwmgr->smumgr, &rv_data->gfx_actual_soft_min_freq); rv_read_arg_from_smc(hwmgr, &rv_data->gfx_actual_soft_min_freq);
} }
if ((hwmgr->gfx_arbiter.fclk != 0) && if ((hwmgr->gfx_arbiter.fclk != 0) &&
(rv_data->fabric_actual_soft_min_freq != (hwmgr->gfx_arbiter.fclk / 100))) { (rv_data->fabric_actual_soft_min_freq != (hwmgr->gfx_arbiter.fclk / 100))) {
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_SetMinVideoFclkFreq, PPSMC_MSG_SetMinVideoFclkFreq,
hwmgr->gfx_arbiter.fclk / 100); hwmgr->gfx_arbiter.fclk / 100);
rv_read_arg_from_smc(hwmgr->smumgr, &rv_data->fabric_actual_soft_min_freq); rv_read_arg_from_smc(hwmgr, &rv_data->fabric_actual_soft_min_freq);
} }
return 0; return 0;
...@@ -212,7 +212,7 @@ static int rv_set_deep_sleep_dcefclk(struct pp_hwmgr *hwmgr, uint32_t clock) ...@@ -212,7 +212,7 @@ static int rv_set_deep_sleep_dcefclk(struct pp_hwmgr *hwmgr, uint32_t clock)
if (rv_data->need_min_deep_sleep_dcefclk && rv_data->deep_sleep_dcefclk != clock/100) { if (rv_data->need_min_deep_sleep_dcefclk && rv_data->deep_sleep_dcefclk != clock/100) {
rv_data->deep_sleep_dcefclk = clock/100; rv_data->deep_sleep_dcefclk = clock/100;
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_SetMinDeepSleepDcefclk, PPSMC_MSG_SetMinDeepSleepDcefclk,
rv_data->deep_sleep_dcefclk); rv_data->deep_sleep_dcefclk);
} }
...@@ -225,7 +225,7 @@ static int rv_set_active_display_count(struct pp_hwmgr *hwmgr, uint32_t count) ...@@ -225,7 +225,7 @@ static int rv_set_active_display_count(struct pp_hwmgr *hwmgr, uint32_t count)
if (rv_data->num_active_display != count) { if (rv_data->num_active_display != count) {
rv_data->num_active_display = count; rv_data->num_active_display = count;
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_SetDisplayCount, PPSMC_MSG_SetDisplayCount,
rv_data->num_active_display); rv_data->num_active_display);
} }
...@@ -277,7 +277,7 @@ static int rv_disable_gfx_off(struct pp_hwmgr *hwmgr) ...@@ -277,7 +277,7 @@ static int rv_disable_gfx_off(struct pp_hwmgr *hwmgr)
struct rv_hwmgr *rv_data = (struct rv_hwmgr *)(hwmgr->backend); struct rv_hwmgr *rv_data = (struct rv_hwmgr *)(hwmgr->backend);
if (rv_data->gfx_off_controled_by_driver) if (rv_data->gfx_off_controled_by_driver)
smum_send_msg_to_smc(hwmgr->smumgr, smum_send_msg_to_smc(hwmgr,
PPSMC_MSG_DisableGfxOff); PPSMC_MSG_DisableGfxOff);
return 0; return 0;
...@@ -293,7 +293,7 @@ static int rv_enable_gfx_off(struct pp_hwmgr *hwmgr) ...@@ -293,7 +293,7 @@ static int rv_enable_gfx_off(struct pp_hwmgr *hwmgr)
struct rv_hwmgr *rv_data = (struct rv_hwmgr *)(hwmgr->backend); struct rv_hwmgr *rv_data = (struct rv_hwmgr *)(hwmgr->backend);
if (rv_data->gfx_off_controled_by_driver) if (rv_data->gfx_off_controled_by_driver)
smum_send_msg_to_smc(hwmgr->smumgr, smum_send_msg_to_smc(hwmgr,
PPSMC_MSG_EnableGfxOff); PPSMC_MSG_EnableGfxOff);
return 0; return 0;
...@@ -383,7 +383,7 @@ static int rv_populate_clock_table(struct pp_hwmgr *hwmgr) ...@@ -383,7 +383,7 @@ static int rv_populate_clock_table(struct pp_hwmgr *hwmgr)
DpmClocks_t *table = &(rv_data->clock_table); DpmClocks_t *table = &(rv_data->clock_table);
struct rv_clock_voltage_information *pinfo = &(rv_data->clock_vol_info); struct rv_clock_voltage_information *pinfo = &(rv_data->clock_vol_info);
result = rv_copy_table_from_smc(hwmgr->smumgr, (uint8_t *)table, CLOCKTABLE); result = rv_copy_table_from_smc(hwmgr, (uint8_t *)table, CLOCKTABLE);
PP_ASSERT_WITH_CODE((0 == result), PP_ASSERT_WITH_CODE((0 == result),
"Attempt to copy clock table from smc failed", "Attempt to copy clock table from smc failed",
...@@ -799,7 +799,7 @@ int rv_display_clock_voltage_request(struct pp_hwmgr *hwmgr, ...@@ -799,7 +799,7 @@ int rv_display_clock_voltage_request(struct pp_hwmgr *hwmgr,
return -EINVAL; return -EINVAL;
} }
result = smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, msg, result = smum_send_msg_to_smc_with_parameter(hwmgr, msg,
clk_freq); clk_freq);
return result; return result;
......
...@@ -27,21 +27,21 @@ ...@@ -27,21 +27,21 @@
static int smu7_enable_disable_uvd_dpm(struct pp_hwmgr *hwmgr, bool enable) static int smu7_enable_disable_uvd_dpm(struct pp_hwmgr *hwmgr, bool enable)
{ {
return smum_send_msg_to_smc(hwmgr->smumgr, enable ? return smum_send_msg_to_smc(hwmgr, enable ?
PPSMC_MSG_UVDDPM_Enable : PPSMC_MSG_UVDDPM_Enable :
PPSMC_MSG_UVDDPM_Disable); PPSMC_MSG_UVDDPM_Disable);
} }
static int smu7_enable_disable_vce_dpm(struct pp_hwmgr *hwmgr, bool enable) static int smu7_enable_disable_vce_dpm(struct pp_hwmgr *hwmgr, bool enable)
{ {
return smum_send_msg_to_smc(hwmgr->smumgr, enable ? return smum_send_msg_to_smc(hwmgr, enable ?
PPSMC_MSG_VCEDPM_Enable : PPSMC_MSG_VCEDPM_Enable :
PPSMC_MSG_VCEDPM_Disable); PPSMC_MSG_VCEDPM_Disable);
} }
static int smu7_enable_disable_samu_dpm(struct pp_hwmgr *hwmgr, bool enable) static int smu7_enable_disable_samu_dpm(struct pp_hwmgr *hwmgr, bool enable)
{ {
return smum_send_msg_to_smc(hwmgr->smumgr, enable ? return smum_send_msg_to_smc(hwmgr, enable ?
PPSMC_MSG_SAMUDPM_Enable : PPSMC_MSG_SAMUDPM_Enable :
PPSMC_MSG_SAMUDPM_Disable); PPSMC_MSG_SAMUDPM_Disable);
} }
...@@ -70,7 +70,7 @@ static int smu7_update_samu_dpm(struct pp_hwmgr *hwmgr, bool bgate) ...@@ -70,7 +70,7 @@ static int smu7_update_samu_dpm(struct pp_hwmgr *hwmgr, bool bgate)
int smu7_powerdown_uvd(struct pp_hwmgr *hwmgr) int smu7_powerdown_uvd(struct pp_hwmgr *hwmgr)
{ {
if (phm_cf_want_uvd_power_gating(hwmgr)) if (phm_cf_want_uvd_power_gating(hwmgr))
return smum_send_msg_to_smc(hwmgr->smumgr, return smum_send_msg_to_smc(hwmgr,
PPSMC_MSG_UVDPowerOFF); PPSMC_MSG_UVDPowerOFF);
return 0; return 0;
} }
...@@ -80,10 +80,10 @@ static int smu7_powerup_uvd(struct pp_hwmgr *hwmgr) ...@@ -80,10 +80,10 @@ static int smu7_powerup_uvd(struct pp_hwmgr *hwmgr)
if (phm_cf_want_uvd_power_gating(hwmgr)) { if (phm_cf_want_uvd_power_gating(hwmgr)) {
if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
PHM_PlatformCaps_UVDDynamicPowerGating)) { PHM_PlatformCaps_UVDDynamicPowerGating)) {
return smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, return smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_UVDPowerON, 1); PPSMC_MSG_UVDPowerON, 1);
} else { } else {
return smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, return smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_UVDPowerON, 0); PPSMC_MSG_UVDPowerON, 0);
} }
} }
...@@ -94,7 +94,7 @@ static int smu7_powerup_uvd(struct pp_hwmgr *hwmgr) ...@@ -94,7 +94,7 @@ static int smu7_powerup_uvd(struct pp_hwmgr *hwmgr)
static int smu7_powerdown_vce(struct pp_hwmgr *hwmgr) static int smu7_powerdown_vce(struct pp_hwmgr *hwmgr)
{ {
if (phm_cf_want_vce_power_gating(hwmgr)) if (phm_cf_want_vce_power_gating(hwmgr))
return smum_send_msg_to_smc(hwmgr->smumgr, return smum_send_msg_to_smc(hwmgr,
PPSMC_MSG_VCEPowerOFF); PPSMC_MSG_VCEPowerOFF);
return 0; return 0;
} }
...@@ -102,7 +102,7 @@ static int smu7_powerdown_vce(struct pp_hwmgr *hwmgr) ...@@ -102,7 +102,7 @@ static int smu7_powerdown_vce(struct pp_hwmgr *hwmgr)
static int smu7_powerup_vce(struct pp_hwmgr *hwmgr) static int smu7_powerup_vce(struct pp_hwmgr *hwmgr)
{ {
if (phm_cf_want_vce_power_gating(hwmgr)) if (phm_cf_want_vce_power_gating(hwmgr))
return smum_send_msg_to_smc(hwmgr->smumgr, return smum_send_msg_to_smc(hwmgr,
PPSMC_MSG_VCEPowerON); PPSMC_MSG_VCEPowerON);
return 0; return 0;
} }
...@@ -111,7 +111,7 @@ static int smu7_powerdown_samu(struct pp_hwmgr *hwmgr) ...@@ -111,7 +111,7 @@ static int smu7_powerdown_samu(struct pp_hwmgr *hwmgr)
{ {
if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
PHM_PlatformCaps_SamuPowerGating)) PHM_PlatformCaps_SamuPowerGating))
return smum_send_msg_to_smc(hwmgr->smumgr, return smum_send_msg_to_smc(hwmgr,
PPSMC_MSG_SAMPowerOFF); PPSMC_MSG_SAMPowerOFF);
return 0; return 0;
} }
...@@ -120,7 +120,7 @@ static int smu7_powerup_samu(struct pp_hwmgr *hwmgr) ...@@ -120,7 +120,7 @@ static int smu7_powerup_samu(struct pp_hwmgr *hwmgr)
{ {
if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
PHM_PlatformCaps_SamuPowerGating)) PHM_PlatformCaps_SamuPowerGating))
return smum_send_msg_to_smc(hwmgr->smumgr, return smum_send_msg_to_smc(hwmgr,
PPSMC_MSG_SAMPowerON); PPSMC_MSG_SAMPowerON);
return 0; return 0;
} }
...@@ -235,7 +235,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -235,7 +235,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_GFX_CGCG_MASK; value = CG_GFX_CGCG_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
if (PP_STATE_SUPPORT_LS & *msg_id) { if (PP_STATE_SUPPORT_LS & *msg_id) {
...@@ -245,7 +245,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -245,7 +245,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_GFX_CGLS_MASK; value = CG_GFX_CGLS_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
break; break;
...@@ -258,7 +258,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -258,7 +258,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_GFX_3DCG_MASK; value = CG_GFX_3DCG_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
...@@ -269,7 +269,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -269,7 +269,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_GFX_3DLS_MASK; value = CG_GFX_3DLS_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
break; break;
...@@ -282,7 +282,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -282,7 +282,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_GFX_RLC_LS_MASK; value = CG_GFX_RLC_LS_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
break; break;
...@@ -295,7 +295,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -295,7 +295,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_GFX_CP_LS_MASK; value = CG_GFX_CP_LS_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
break; break;
...@@ -309,7 +309,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -309,7 +309,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
CG_GFX_OTHERS_MGCG_MASK); CG_GFX_OTHERS_MGCG_MASK);
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
break; break;
...@@ -329,7 +329,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -329,7 +329,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_SYS_BIF_MGCG_MASK; value = CG_SYS_BIF_MGCG_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
if (PP_STATE_SUPPORT_LS & *msg_id) { if (PP_STATE_SUPPORT_LS & *msg_id) {
...@@ -339,7 +339,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -339,7 +339,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_SYS_BIF_MGLS_MASK; value = CG_SYS_BIF_MGLS_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
break; break;
...@@ -352,7 +352,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -352,7 +352,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_SYS_MC_MGCG_MASK; value = CG_SYS_MC_MGCG_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
...@@ -363,7 +363,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -363,7 +363,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_SYS_MC_MGLS_MASK; value = CG_SYS_MC_MGLS_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
break; break;
...@@ -376,7 +376,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -376,7 +376,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_SYS_DRM_MGCG_MASK; value = CG_SYS_DRM_MGCG_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
if (PP_STATE_SUPPORT_LS & *msg_id) { if (PP_STATE_SUPPORT_LS & *msg_id) {
...@@ -386,7 +386,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -386,7 +386,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_SYS_DRM_MGLS_MASK; value = CG_SYS_DRM_MGLS_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
break; break;
...@@ -399,7 +399,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -399,7 +399,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_SYS_HDP_MGCG_MASK; value = CG_SYS_HDP_MGCG_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
...@@ -410,7 +410,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -410,7 +410,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_SYS_HDP_MGLS_MASK; value = CG_SYS_HDP_MGLS_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
break; break;
...@@ -423,7 +423,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -423,7 +423,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_SYS_SDMA_MGCG_MASK; value = CG_SYS_SDMA_MGCG_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
...@@ -434,7 +434,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -434,7 +434,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_SYS_SDMA_MGLS_MASK; value = CG_SYS_SDMA_MGLS_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
break; break;
...@@ -447,7 +447,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr, ...@@ -447,7 +447,7 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
value = CG_SYS_ROM_MASK; value = CG_SYS_ROM_MASK;
if (smum_send_msg_to_smc_with_parameter( if (smum_send_msg_to_smc_with_parameter(
hwmgr->smumgr, msg, value)) hwmgr, msg, value))
return -EINVAL; return -EINVAL;
} }
break; break;
...@@ -487,9 +487,9 @@ int smu7_enable_per_cu_power_gating(struct pp_hwmgr *hwmgr, bool enable) ...@@ -487,9 +487,9 @@ int smu7_enable_per_cu_power_gating(struct pp_hwmgr *hwmgr, bool enable)
active_cus = sys_info.value; active_cus = sys_info.value;
if (enable) if (enable)
return smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, return smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_GFX_CU_PG_ENABLE, active_cus); PPSMC_MSG_GFX_CU_PG_ENABLE, active_cus);
else else
return smum_send_msg_to_smc(hwmgr->smumgr, return smum_send_msg_to_smc(hwmgr,
PPSMC_MSG_GFX_CU_PG_DISABLE); PPSMC_MSG_GFX_CU_PG_DISABLE);
} }
...@@ -660,7 +660,7 @@ static int smu7_enable_didt(struct pp_hwmgr *hwmgr, const bool enable) ...@@ -660,7 +660,7 @@ static int smu7_enable_didt(struct pp_hwmgr *hwmgr, const bool enable)
didt_block |= block_en << TCP_Enable_SHIFT; didt_block |= block_en << TCP_Enable_SHIFT;
if (enable) if (enable)
result = smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, PPSMC_MSG_Didt_Block_Function, didt_block); result = smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_Didt_Block_Function, didt_block);
return result; return result;
} }
...@@ -781,7 +781,7 @@ int smu7_enable_didt_config(struct pp_hwmgr *hwmgr) ...@@ -781,7 +781,7 @@ int smu7_enable_didt_config(struct pp_hwmgr *hwmgr)
PP_ASSERT_WITH_CODE((result == 0), "EnableDiDt failed.", return result); PP_ASSERT_WITH_CODE((result == 0), "EnableDiDt failed.", return result);
if (hwmgr->chip_id == CHIP_POLARIS11) { if (hwmgr->chip_id == CHIP_POLARIS11) {
result = smum_send_msg_to_smc(hwmgr->smumgr, result = smum_send_msg_to_smc(hwmgr,
(uint16_t)(PPSMC_MSG_EnableDpmDidt)); (uint16_t)(PPSMC_MSG_EnableDpmDidt));
PP_ASSERT_WITH_CODE((0 == result), PP_ASSERT_WITH_CODE((0 == result),
"Failed to enable DPM DIDT.", return result); "Failed to enable DPM DIDT.", return result);
...@@ -809,7 +809,7 @@ int smu7_disable_didt_config(struct pp_hwmgr *hwmgr) ...@@ -809,7 +809,7 @@ int smu7_disable_didt_config(struct pp_hwmgr *hwmgr)
"Post DIDT enable clock gating failed.", "Post DIDT enable clock gating failed.",
return result); return result);
if (hwmgr->chip_id == CHIP_POLARIS11) { if (hwmgr->chip_id == CHIP_POLARIS11) {
result = smum_send_msg_to_smc(hwmgr->smumgr, result = smum_send_msg_to_smc(hwmgr,
(uint16_t)(PPSMC_MSG_DisableDpmDidt)); (uint16_t)(PPSMC_MSG_DisableDpmDidt));
PP_ASSERT_WITH_CODE((0 == result), PP_ASSERT_WITH_CODE((0 == result),
"Failed to disable DPM DIDT.", return result); "Failed to disable DPM DIDT.", return result);
...@@ -827,7 +827,7 @@ int smu7_enable_smc_cac(struct pp_hwmgr *hwmgr) ...@@ -827,7 +827,7 @@ int smu7_enable_smc_cac(struct pp_hwmgr *hwmgr)
if (PP_CAP(PHM_PlatformCaps_CAC)) { if (PP_CAP(PHM_PlatformCaps_CAC)) {
int smc_result; int smc_result;
smc_result = smum_send_msg_to_smc(hwmgr->smumgr, smc_result = smum_send_msg_to_smc(hwmgr,
(uint16_t)(PPSMC_MSG_EnableCac)); (uint16_t)(PPSMC_MSG_EnableCac));
PP_ASSERT_WITH_CODE((0 == smc_result), PP_ASSERT_WITH_CODE((0 == smc_result),
"Failed to enable CAC in SMC.", result = -1); "Failed to enable CAC in SMC.", result = -1);
...@@ -843,7 +843,7 @@ int smu7_disable_smc_cac(struct pp_hwmgr *hwmgr) ...@@ -843,7 +843,7 @@ int smu7_disable_smc_cac(struct pp_hwmgr *hwmgr)
int result = 0; int result = 0;
if (PP_CAP(PHM_PlatformCaps_CAC) && data->cac_enabled) { if (PP_CAP(PHM_PlatformCaps_CAC) && data->cac_enabled) {
int smc_result = smum_send_msg_to_smc(hwmgr->smumgr, int smc_result = smum_send_msg_to_smc(hwmgr,
(uint16_t)(PPSMC_MSG_DisableCac)); (uint16_t)(PPSMC_MSG_DisableCac));
PP_ASSERT_WITH_CODE((smc_result == 0), PP_ASSERT_WITH_CODE((smc_result == 0),
"Failed to disable CAC in SMC.", result = -1); "Failed to disable CAC in SMC.", result = -1);
...@@ -859,7 +859,7 @@ int smu7_set_power_limit(struct pp_hwmgr *hwmgr, uint32_t n) ...@@ -859,7 +859,7 @@ int smu7_set_power_limit(struct pp_hwmgr *hwmgr, uint32_t n)
if (data->power_containment_features & if (data->power_containment_features &
POWERCONTAINMENT_FEATURE_PkgPwrLimit) POWERCONTAINMENT_FEATURE_PkgPwrLimit)
return smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, return smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_PkgPwrSetLimit, n); PPSMC_MSG_PkgPwrSetLimit, n);
return 0; return 0;
} }
...@@ -867,7 +867,7 @@ int smu7_set_power_limit(struct pp_hwmgr *hwmgr, uint32_t n) ...@@ -867,7 +867,7 @@ int smu7_set_power_limit(struct pp_hwmgr *hwmgr, uint32_t n)
static int smu7_set_overdriver_target_tdp(struct pp_hwmgr *hwmgr, static int smu7_set_overdriver_target_tdp(struct pp_hwmgr *hwmgr,
uint32_t target_tdp) uint32_t target_tdp)
{ {
return smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, return smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_OverDriveSetTargetTdp, target_tdp); PPSMC_MSG_OverDriveSetTargetTdp, target_tdp);
} }
...@@ -888,7 +888,7 @@ int smu7_enable_power_containment(struct pp_hwmgr *hwmgr) ...@@ -888,7 +888,7 @@ int smu7_enable_power_containment(struct pp_hwmgr *hwmgr)
if (PP_CAP(PHM_PlatformCaps_PowerContainment)) { if (PP_CAP(PHM_PlatformCaps_PowerContainment)) {
if (data->enable_tdc_limit_feature) { if (data->enable_tdc_limit_feature) {
smc_result = smum_send_msg_to_smc(hwmgr->smumgr, smc_result = smum_send_msg_to_smc(hwmgr,
(uint16_t)(PPSMC_MSG_TDCLimitEnable)); (uint16_t)(PPSMC_MSG_TDCLimitEnable));
PP_ASSERT_WITH_CODE((0 == smc_result), PP_ASSERT_WITH_CODE((0 == smc_result),
"Failed to enable TDCLimit in SMC.", result = -1;); "Failed to enable TDCLimit in SMC.", result = -1;);
...@@ -898,7 +898,7 @@ int smu7_enable_power_containment(struct pp_hwmgr *hwmgr) ...@@ -898,7 +898,7 @@ int smu7_enable_power_containment(struct pp_hwmgr *hwmgr)
} }
if (data->enable_pkg_pwr_tracking_feature) { if (data->enable_pkg_pwr_tracking_feature) {
smc_result = smum_send_msg_to_smc(hwmgr->smumgr, smc_result = smum_send_msg_to_smc(hwmgr,
(uint16_t)(PPSMC_MSG_PkgPwrLimitEnable)); (uint16_t)(PPSMC_MSG_PkgPwrLimitEnable));
PP_ASSERT_WITH_CODE((0 == smc_result), PP_ASSERT_WITH_CODE((0 == smc_result),
"Failed to enable PkgPwrTracking in SMC.", result = -1;); "Failed to enable PkgPwrTracking in SMC.", result = -1;);
...@@ -927,7 +927,7 @@ int smu7_disable_power_containment(struct pp_hwmgr *hwmgr) ...@@ -927,7 +927,7 @@ int smu7_disable_power_containment(struct pp_hwmgr *hwmgr)
if (data->power_containment_features & if (data->power_containment_features &
POWERCONTAINMENT_FEATURE_TDCLimit) { POWERCONTAINMENT_FEATURE_TDCLimit) {
smc_result = smum_send_msg_to_smc(hwmgr->smumgr, smc_result = smum_send_msg_to_smc(hwmgr,
(uint16_t)(PPSMC_MSG_TDCLimitDisable)); (uint16_t)(PPSMC_MSG_TDCLimitDisable));
PP_ASSERT_WITH_CODE((smc_result == 0), PP_ASSERT_WITH_CODE((smc_result == 0),
"Failed to disable TDCLimit in SMC.", "Failed to disable TDCLimit in SMC.",
...@@ -936,7 +936,7 @@ int smu7_disable_power_containment(struct pp_hwmgr *hwmgr) ...@@ -936,7 +936,7 @@ int smu7_disable_power_containment(struct pp_hwmgr *hwmgr)
if (data->power_containment_features & if (data->power_containment_features &
POWERCONTAINMENT_FEATURE_DTE) { POWERCONTAINMENT_FEATURE_DTE) {
smc_result = smum_send_msg_to_smc(hwmgr->smumgr, smc_result = smum_send_msg_to_smc(hwmgr,
(uint16_t)(PPSMC_MSG_DisableDTE)); (uint16_t)(PPSMC_MSG_DisableDTE));
PP_ASSERT_WITH_CODE((smc_result == 0), PP_ASSERT_WITH_CODE((smc_result == 0),
"Failed to disable DTE in SMC.", "Failed to disable DTE in SMC.",
...@@ -945,7 +945,7 @@ int smu7_disable_power_containment(struct pp_hwmgr *hwmgr) ...@@ -945,7 +945,7 @@ int smu7_disable_power_containment(struct pp_hwmgr *hwmgr)
if (data->power_containment_features & if (data->power_containment_features &
POWERCONTAINMENT_FEATURE_PkgPwrLimit) { POWERCONTAINMENT_FEATURE_PkgPwrLimit) {
smc_result = smum_send_msg_to_smc(hwmgr->smumgr, smc_result = smum_send_msg_to_smc(hwmgr,
(uint16_t)(PPSMC_MSG_PkgPwrLimitDisable)); (uint16_t)(PPSMC_MSG_PkgPwrLimitDisable));
PP_ASSERT_WITH_CODE((smc_result == 0), PP_ASSERT_WITH_CODE((smc_result == 0),
"Failed to disable PkgPwrTracking in SMC.", "Failed to disable PkgPwrTracking in SMC.",
......
...@@ -152,7 +152,7 @@ int smu7_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr) ...@@ -152,7 +152,7 @@ int smu7_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr)
if (PP_CAP(PHM_PlatformCaps_ODFuzzyFanControlSupport)) { if (PP_CAP(PHM_PlatformCaps_ODFuzzyFanControlSupport)) {
cgs_write_register(hwmgr->device, mmSMC_MSG_ARG_0, FAN_CONTROL_FUZZY); cgs_write_register(hwmgr->device, mmSMC_MSG_ARG_0, FAN_CONTROL_FUZZY);
result = smum_send_msg_to_smc(hwmgr->smumgr, PPSMC_StartFanControl); result = smum_send_msg_to_smc(hwmgr, PPSMC_StartFanControl);
if (PP_CAP(PHM_PlatformCaps_FanSpeedInTableIsRPM)) if (PP_CAP(PHM_PlatformCaps_FanSpeedInTableIsRPM))
hwmgr->hwmgr_func->set_max_fan_rpm_output(hwmgr, hwmgr->hwmgr_func->set_max_fan_rpm_output(hwmgr,
...@@ -165,12 +165,12 @@ int smu7_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr) ...@@ -165,12 +165,12 @@ int smu7_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr)
} else { } else {
cgs_write_register(hwmgr->device, mmSMC_MSG_ARG_0, FAN_CONTROL_TABLE); cgs_write_register(hwmgr->device, mmSMC_MSG_ARG_0, FAN_CONTROL_TABLE);
result = smum_send_msg_to_smc(hwmgr->smumgr, PPSMC_StartFanControl); result = smum_send_msg_to_smc(hwmgr, PPSMC_StartFanControl);
} }
if (!result && hwmgr->thermal_controller. if (!result && hwmgr->thermal_controller.
advanceFanControlParameters.ucTargetTemperature) advanceFanControlParameters.ucTargetTemperature)
result = smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, result = smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_SetFanTemperatureTarget, PPSMC_MSG_SetFanTemperatureTarget,
hwmgr->thermal_controller. hwmgr->thermal_controller.
advanceFanControlParameters.ucTargetTemperature); advanceFanControlParameters.ucTargetTemperature);
...@@ -183,7 +183,7 @@ int smu7_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr) ...@@ -183,7 +183,7 @@ int smu7_fan_ctrl_start_smc_fan_control(struct pp_hwmgr *hwmgr)
int smu7_fan_ctrl_stop_smc_fan_control(struct pp_hwmgr *hwmgr) int smu7_fan_ctrl_stop_smc_fan_control(struct pp_hwmgr *hwmgr)
{ {
hwmgr->fan_ctrl_enabled = false; hwmgr->fan_ctrl_enabled = false;
return smum_send_msg_to_smc(hwmgr->smumgr, PPSMC_StopFanControl); return smum_send_msg_to_smc(hwmgr, PPSMC_StopFanControl);
} }
/** /**
...@@ -371,7 +371,7 @@ static void smu7_thermal_enable_alert(struct pp_hwmgr *hwmgr) ...@@ -371,7 +371,7 @@ static void smu7_thermal_enable_alert(struct pp_hwmgr *hwmgr)
CG_THERMAL_INT, THERM_INT_MASK, alert); CG_THERMAL_INT, THERM_INT_MASK, alert);
/* send message to SMU to enable internal thermal interrupts */ /* send message to SMU to enable internal thermal interrupts */
smum_send_msg_to_smc(hwmgr->smumgr, PPSMC_MSG_Thermal_Cntl_Enable); smum_send_msg_to_smc(hwmgr, PPSMC_MSG_Thermal_Cntl_Enable);
} }
/** /**
...@@ -389,7 +389,7 @@ int smu7_thermal_disable_alert(struct pp_hwmgr *hwmgr) ...@@ -389,7 +389,7 @@ int smu7_thermal_disable_alert(struct pp_hwmgr *hwmgr)
CG_THERMAL_INT, THERM_INT_MASK, alert); CG_THERMAL_INT, THERM_INT_MASK, alert);
/* send message to SMU to disable internal thermal interrupts */ /* send message to SMU to disable internal thermal interrupts */
return smum_send_msg_to_smc(hwmgr->smumgr, PPSMC_MSG_Thermal_Cntl_Disable); return smum_send_msg_to_smc(hwmgr, PPSMC_MSG_Thermal_Cntl_Disable);
} }
/** /**
......
...@@ -926,7 +926,7 @@ static void vega10_didt_set_mask(struct pp_hwmgr *hwmgr, const bool enable) ...@@ -926,7 +926,7 @@ static void vega10_didt_set_mask(struct pp_hwmgr *hwmgr, const bool enable)
if (enable) { if (enable) {
/* For Vega10, SMC does not support any mask yet. */ /* For Vega10, SMC does not support any mask yet. */
result = smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, PPSMC_MSG_ConfigureGfxDidt, didt_block_info); result = smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_ConfigureGfxDidt, didt_block_info);
PP_ASSERT((0 == result), "[EnableDiDtConfig] SMC Configure Gfx Didt Failed!"); PP_ASSERT((0 == result), "[EnableDiDtConfig] SMC Configure Gfx Didt Failed!");
} }
} }
...@@ -1243,7 +1243,7 @@ int vega10_enable_didt_config(struct pp_hwmgr *hwmgr) ...@@ -1243,7 +1243,7 @@ int vega10_enable_didt_config(struct pp_hwmgr *hwmgr)
} }
if (0 == result) { if (0 == result) {
PP_ASSERT_WITH_CODE((!vega10_enable_smc_features(hwmgr->smumgr, true, data->smu_features[GNLD_DIDT].smu_feature_bitmap)), PP_ASSERT_WITH_CODE((!vega10_enable_smc_features(hwmgr, true, data->smu_features[GNLD_DIDT].smu_feature_bitmap)),
"[EnableDiDtConfig] Attempt to Enable DiDt feature Failed!", return result); "[EnableDiDtConfig] Attempt to Enable DiDt feature Failed!", return result);
data->smu_features[GNLD_DIDT].enabled = true; data->smu_features[GNLD_DIDT].enabled = true;
} }
...@@ -1290,7 +1290,7 @@ int vega10_disable_didt_config(struct pp_hwmgr *hwmgr) ...@@ -1290,7 +1290,7 @@ int vega10_disable_didt_config(struct pp_hwmgr *hwmgr)
} }
if (0 == result) { if (0 == result) {
PP_ASSERT_WITH_CODE((0 != vega10_enable_smc_features(hwmgr->smumgr, false, data->smu_features[GNLD_DIDT].smu_feature_bitmap)), PP_ASSERT_WITH_CODE((0 != vega10_enable_smc_features(hwmgr, false, data->smu_features[GNLD_DIDT].smu_feature_bitmap)),
"[DisableDiDtConfig] Attempt to Disable DiDt feature Failed!", return result); "[DisableDiDtConfig] Attempt to Disable DiDt feature Failed!", return result);
data->smu_features[GNLD_DIDT].enabled = false; data->smu_features[GNLD_DIDT].enabled = false;
} }
...@@ -1344,7 +1344,7 @@ int vega10_set_power_limit(struct pp_hwmgr *hwmgr, uint32_t n) ...@@ -1344,7 +1344,7 @@ int vega10_set_power_limit(struct pp_hwmgr *hwmgr, uint32_t n)
(struct vega10_hwmgr *)(hwmgr->backend); (struct vega10_hwmgr *)(hwmgr->backend);
if (data->registry_data.enable_pkg_pwr_tracking_feature) if (data->registry_data.enable_pkg_pwr_tracking_feature)
return smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, return smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_SetPptLimit, n); PPSMC_MSG_SetPptLimit, n);
return 0; return 0;
...@@ -1363,13 +1363,13 @@ int vega10_enable_power_containment(struct pp_hwmgr *hwmgr) ...@@ -1363,13 +1363,13 @@ int vega10_enable_power_containment(struct pp_hwmgr *hwmgr)
if (PP_CAP(PHM_PlatformCaps_PowerContainment)) { if (PP_CAP(PHM_PlatformCaps_PowerContainment)) {
if (data->smu_features[GNLD_PPT].supported) if (data->smu_features[GNLD_PPT].supported)
PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr->smumgr, PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr,
true, data->smu_features[GNLD_PPT].smu_feature_bitmap), true, data->smu_features[GNLD_PPT].smu_feature_bitmap),
"Attempt to enable PPT feature Failed!", "Attempt to enable PPT feature Failed!",
data->smu_features[GNLD_PPT].supported = false); data->smu_features[GNLD_PPT].supported = false);
if (data->smu_features[GNLD_TDC].supported) if (data->smu_features[GNLD_TDC].supported)
PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr->smumgr, PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr,
true, data->smu_features[GNLD_TDC].smu_feature_bitmap), true, data->smu_features[GNLD_TDC].smu_feature_bitmap),
"Attempt to enable PPT feature Failed!", "Attempt to enable PPT feature Failed!",
data->smu_features[GNLD_TDC].supported = false); data->smu_features[GNLD_TDC].supported = false);
...@@ -1390,13 +1390,13 @@ int vega10_disable_power_containment(struct pp_hwmgr *hwmgr) ...@@ -1390,13 +1390,13 @@ int vega10_disable_power_containment(struct pp_hwmgr *hwmgr)
if (PP_CAP(PHM_PlatformCaps_PowerContainment)) { if (PP_CAP(PHM_PlatformCaps_PowerContainment)) {
if (data->smu_features[GNLD_PPT].supported) if (data->smu_features[GNLD_PPT].supported)
PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr->smumgr, PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr,
false, data->smu_features[GNLD_PPT].smu_feature_bitmap), false, data->smu_features[GNLD_PPT].smu_feature_bitmap),
"Attempt to disable PPT feature Failed!", "Attempt to disable PPT feature Failed!",
data->smu_features[GNLD_PPT].supported = false); data->smu_features[GNLD_PPT].supported = false);
if (data->smu_features[GNLD_TDC].supported) if (data->smu_features[GNLD_TDC].supported)
PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr->smumgr, PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr,
false, data->smu_features[GNLD_TDC].smu_feature_bitmap), false, data->smu_features[GNLD_TDC].smu_feature_bitmap),
"Attempt to disable PPT feature Failed!", "Attempt to disable PPT feature Failed!",
data->smu_features[GNLD_TDC].supported = false); data->smu_features[GNLD_TDC].supported = false);
...@@ -1408,7 +1408,7 @@ int vega10_disable_power_containment(struct pp_hwmgr *hwmgr) ...@@ -1408,7 +1408,7 @@ int vega10_disable_power_containment(struct pp_hwmgr *hwmgr)
static int vega10_set_overdrive_target_percentage(struct pp_hwmgr *hwmgr, static int vega10_set_overdrive_target_percentage(struct pp_hwmgr *hwmgr,
uint32_t adjust_percent) uint32_t adjust_percent)
{ {
return smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, return smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_OverDriveSetPercentage, adjust_percent); PPSMC_MSG_OverDriveSetPercentage, adjust_percent);
} }
......
...@@ -31,11 +31,11 @@ ...@@ -31,11 +31,11 @@
static int vega10_get_current_rpm(struct pp_hwmgr *hwmgr, uint32_t *current_rpm) static int vega10_get_current_rpm(struct pp_hwmgr *hwmgr, uint32_t *current_rpm)
{ {
PP_ASSERT_WITH_CODE(!smum_send_msg_to_smc(hwmgr->smumgr, PP_ASSERT_WITH_CODE(!smum_send_msg_to_smc(hwmgr,
PPSMC_MSG_GetCurrentRpm), PPSMC_MSG_GetCurrentRpm),
"Attempt to get current RPM from SMC Failed!", "Attempt to get current RPM from SMC Failed!",
return -1); return -1);
PP_ASSERT_WITH_CODE(!vega10_read_arg_from_smc(hwmgr->smumgr, PP_ASSERT_WITH_CODE(!vega10_read_arg_from_smc(hwmgr,
current_rpm), current_rpm),
"Attempt to read current RPM from SMC Failed!", "Attempt to read current RPM from SMC Failed!",
return -1); return -1);
...@@ -199,7 +199,7 @@ static int vega10_enable_fan_control_feature(struct pp_hwmgr *hwmgr) ...@@ -199,7 +199,7 @@ static int vega10_enable_fan_control_feature(struct pp_hwmgr *hwmgr)
if (data->smu_features[GNLD_FAN_CONTROL].supported) { if (data->smu_features[GNLD_FAN_CONTROL].supported) {
PP_ASSERT_WITH_CODE(!vega10_enable_smc_features( PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(
hwmgr->smumgr, true, hwmgr, true,
data->smu_features[GNLD_FAN_CONTROL]. data->smu_features[GNLD_FAN_CONTROL].
smu_feature_bitmap), smu_feature_bitmap),
"Attempt to Enable FAN CONTROL feature Failed!", "Attempt to Enable FAN CONTROL feature Failed!",
...@@ -216,7 +216,7 @@ static int vega10_disable_fan_control_feature(struct pp_hwmgr *hwmgr) ...@@ -216,7 +216,7 @@ static int vega10_disable_fan_control_feature(struct pp_hwmgr *hwmgr)
if (data->smu_features[GNLD_FAN_CONTROL].supported) { if (data->smu_features[GNLD_FAN_CONTROL].supported) {
PP_ASSERT_WITH_CODE(!vega10_enable_smc_features( PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(
hwmgr->smumgr, false, hwmgr, false,
data->smu_features[GNLD_FAN_CONTROL]. data->smu_features[GNLD_FAN_CONTROL].
smu_feature_bitmap), smu_feature_bitmap),
"Attempt to Enable FAN CONTROL feature Failed!", "Attempt to Enable FAN CONTROL feature Failed!",
...@@ -458,7 +458,7 @@ static int vega10_thermal_enable_alert(struct pp_hwmgr *hwmgr) ...@@ -458,7 +458,7 @@ static int vega10_thermal_enable_alert(struct pp_hwmgr *hwmgr)
if (data->smu_features[GNLD_FW_CTF].enabled) if (data->smu_features[GNLD_FW_CTF].enabled)
printk("[Thermal_EnableAlert] FW CTF Already Enabled!\n"); printk("[Thermal_EnableAlert] FW CTF Already Enabled!\n");
PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr->smumgr, PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr,
true, true,
data->smu_features[GNLD_FW_CTF].smu_feature_bitmap), data->smu_features[GNLD_FW_CTF].smu_feature_bitmap),
"Attempt to Enable FW CTF feature Failed!", "Attempt to Enable FW CTF feature Failed!",
...@@ -490,7 +490,7 @@ int vega10_thermal_disable_alert(struct pp_hwmgr *hwmgr) ...@@ -490,7 +490,7 @@ int vega10_thermal_disable_alert(struct pp_hwmgr *hwmgr)
printk("[Thermal_EnableAlert] FW CTF Already disabled!\n"); printk("[Thermal_EnableAlert] FW CTF Already disabled!\n");
PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr->smumgr, PP_ASSERT_WITH_CODE(!vega10_enable_smc_features(hwmgr,
false, false,
data->smu_features[GNLD_FW_CTF].smu_feature_bitmap), data->smu_features[GNLD_FW_CTF].smu_feature_bitmap),
"Attempt to disable FW CTF feature Failed!", "Attempt to disable FW CTF feature Failed!",
...@@ -546,7 +546,7 @@ int vega10_thermal_setup_fan_table(struct pp_hwmgr *hwmgr) ...@@ -546,7 +546,7 @@ int vega10_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
table->FanTargetTemperature = hwmgr->thermal_controller. table->FanTargetTemperature = hwmgr->thermal_controller.
advanceFanControlParameters.usTMax; advanceFanControlParameters.usTMax;
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_SetFanTemperatureTarget, PPSMC_MSG_SetFanTemperatureTarget,
(uint32_t)table->FanTargetTemperature); (uint32_t)table->FanTargetTemperature);
...@@ -575,7 +575,7 @@ int vega10_thermal_setup_fan_table(struct pp_hwmgr *hwmgr) ...@@ -575,7 +575,7 @@ int vega10_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
table->FanStartTemp = hwmgr->thermal_controller. table->FanStartTemp = hwmgr->thermal_controller.
advanceFanControlParameters.usZeroRPMStartTemperature; advanceFanControlParameters.usZeroRPMStartTemperature;
ret = vega10_copy_table_to_smc(hwmgr->smumgr, ret = vega10_copy_table_to_smc(hwmgr,
(uint8_t *)(&(data->smc_state_table.pp_table)), PPTABLE); (uint8_t *)(&(data->smc_state_table.pp_table)), PPTABLE);
if (ret) if (ret)
pr_info("Failed to update Fan Control Table in PPTable!"); pr_info("Failed to update Fan Control Table in PPTable!");
......
This diff is collapsed.
...@@ -30,9 +30,9 @@ struct pp_smumgr; ...@@ -30,9 +30,9 @@ struct pp_smumgr;
struct pp_hwmgr; struct pp_hwmgr;
struct amd_pp_profile; struct amd_pp_profile;
int ci_send_msg_to_smc_with_parameter(struct pp_smumgr *smumgr, int ci_send_msg_to_smc_with_parameter(struct pp_hwmgr *hwmgr,
uint16_t msg, uint32_t parameter); uint16_t msg, uint32_t parameter);
int ci_send_msg_to_smc(struct pp_smumgr *smumgr, uint16_t msg); int ci_send_msg_to_smc(struct pp_hwmgr *hwmgr, uint16_t msg);
int ci_populate_all_graphic_levels(struct pp_hwmgr *hwmgr); int ci_populate_all_graphic_levels(struct pp_hwmgr *hwmgr);
int ci_populate_all_memory_levels(struct pp_hwmgr *hwmgr); int ci_populate_all_memory_levels(struct pp_hwmgr *hwmgr);
int ci_init_smc_table(struct pp_hwmgr *hwmgr); int ci_init_smc_table(struct pp_hwmgr *hwmgr);
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#include "cgs_common.h" #include "cgs_common.h"
#include "ci_smc.h" #include "ci_smc.h"
static int ci_smu_init(struct pp_smumgr *smumgr) static int ci_smu_init(struct pp_hwmgr *hwmgr)
{ {
int i; int i;
struct ci_smumgr *ci_priv = NULL; struct ci_smumgr *ci_priv = NULL;
...@@ -43,20 +43,20 @@ static int ci_smu_init(struct pp_smumgr *smumgr) ...@@ -43,20 +43,20 @@ static int ci_smu_init(struct pp_smumgr *smumgr)
for (i = 0; i < SMU7_MAX_LEVELS_GRAPHICS; i++) for (i = 0; i < SMU7_MAX_LEVELS_GRAPHICS; i++)
ci_priv->activity_target[i] = 30; ci_priv->activity_target[i] = 30;
smumgr->backend = ci_priv; hwmgr->smumgr->backend = ci_priv;
return 0; return 0;
} }
static int ci_smu_fini(struct pp_smumgr *smumgr) static int ci_smu_fini(struct pp_hwmgr *hwmgr)
{ {
kfree(smumgr->backend); kfree(hwmgr->smumgr->backend);
smumgr->backend = NULL; hwmgr->smumgr->backend = NULL;
cgs_rel_firmware(smumgr->device, CGS_UCODE_ID_SMU); cgs_rel_firmware(hwmgr->device, CGS_UCODE_ID_SMU);
return 0; return 0;
} }
static int ci_start_smu(struct pp_smumgr *smumgr) static int ci_start_smu(struct pp_hwmgr *hwmgr)
{ {
return 0; return 0;
} }
......
...@@ -338,7 +338,7 @@ static int fiji_populate_dw8(struct pp_hwmgr *hwmgr, uint32_t fuse_table_offset) ...@@ -338,7 +338,7 @@ static int fiji_populate_dw8(struct pp_hwmgr *hwmgr, uint32_t fuse_table_offset)
const struct fiji_pt_defaults *defaults = smu_data->power_tune_defaults; const struct fiji_pt_defaults *defaults = smu_data->power_tune_defaults;
uint32_t temp; uint32_t temp;
if (smu7_read_smc_sram_dword(hwmgr->smumgr, if (smu7_read_smc_sram_dword(hwmgr,
fuse_table_offset + fuse_table_offset +
offsetof(SMU73_Discrete_PmFuses, TdcWaterfallCtl), offsetof(SMU73_Discrete_PmFuses, TdcWaterfallCtl),
(uint32_t *)&temp, SMC_RAM_END)) (uint32_t *)&temp, SMC_RAM_END))
...@@ -425,7 +425,7 @@ static int fiji_populate_pm_fuses(struct pp_hwmgr *hwmgr) ...@@ -425,7 +425,7 @@ static int fiji_populate_pm_fuses(struct pp_hwmgr *hwmgr)
if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
PHM_PlatformCaps_PowerContainment)) { PHM_PlatformCaps_PowerContainment)) {
if (smu7_read_smc_sram_dword(hwmgr->smumgr, if (smu7_read_smc_sram_dword(hwmgr,
SMU7_FIRMWARE_HEADER_LOCATION + SMU7_FIRMWARE_HEADER_LOCATION +
offsetof(SMU73_Firmware_Header, PmFuseTable), offsetof(SMU73_Firmware_Header, PmFuseTable),
&pm_fuse_table_offset, SMC_RAM_END)) &pm_fuse_table_offset, SMC_RAM_END))
...@@ -473,7 +473,7 @@ static int fiji_populate_pm_fuses(struct pp_hwmgr *hwmgr) ...@@ -473,7 +473,7 @@ static int fiji_populate_pm_fuses(struct pp_hwmgr *hwmgr)
"Attempt to populate BapmVddCBaseLeakage Hi and Lo " "Attempt to populate BapmVddCBaseLeakage Hi and Lo "
"Sidd Failed!", return -EINVAL); "Sidd Failed!", return -EINVAL);
if (smu7_copy_bytes_to_smc(hwmgr->smumgr, pm_fuse_table_offset, if (smu7_copy_bytes_to_smc(hwmgr, pm_fuse_table_offset,
(uint8_t *)&smu_data->power_tune_table, (uint8_t *)&smu_data->power_tune_table,
sizeof(struct SMU73_Discrete_PmFuses), SMC_RAM_END)) sizeof(struct SMU73_Discrete_PmFuses), SMC_RAM_END))
PP_ASSERT_WITH_CODE(false, PP_ASSERT_WITH_CODE(false,
...@@ -848,7 +848,7 @@ int fiji_populate_all_graphic_levels(struct pp_hwmgr *hwmgr) ...@@ -848,7 +848,7 @@ int fiji_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
levels[1].pcieDpmLevel = mid_pcie_level_enabled; levels[1].pcieDpmLevel = mid_pcie_level_enabled;
} }
/* level count will send to smc once at init smc table and never change */ /* level count will send to smc once at init smc table and never change */
result = smu7_copy_bytes_to_smc(hwmgr->smumgr, array, (uint8_t *)levels, result = smu7_copy_bytes_to_smc(hwmgr, array, (uint8_t *)levels,
(uint32_t)array_size, SMC_RAM_END); (uint32_t)array_size, SMC_RAM_END);
return result; return result;
...@@ -1032,7 +1032,7 @@ int fiji_populate_all_memory_levels(struct pp_hwmgr *hwmgr) ...@@ -1032,7 +1032,7 @@ int fiji_populate_all_memory_levels(struct pp_hwmgr *hwmgr)
PPSMC_DISPLAY_WATERMARK_HIGH; PPSMC_DISPLAY_WATERMARK_HIGH;
/* level count will send to smc once at init smc table and never change */ /* level count will send to smc once at init smc table and never change */
result = smu7_copy_bytes_to_smc(hwmgr->smumgr, array, (uint8_t *)levels, result = smu7_copy_bytes_to_smc(hwmgr, array, (uint8_t *)levels,
(uint32_t)array_size, SMC_RAM_END); (uint32_t)array_size, SMC_RAM_END);
return result; return result;
...@@ -1359,7 +1359,7 @@ static int fiji_program_memory_timing_parameters(struct pp_hwmgr *hwmgr) ...@@ -1359,7 +1359,7 @@ static int fiji_program_memory_timing_parameters(struct pp_hwmgr *hwmgr)
if (!result) if (!result)
result = smu7_copy_bytes_to_smc( result = smu7_copy_bytes_to_smc(
hwmgr->smumgr, hwmgr,
smu_data->smu7_data.arb_table_start, smu_data->smu7_data.arb_table_start,
(uint8_t *)&arb_regs, (uint8_t *)&arb_regs,
sizeof(SMU73_Discrete_MCArbDramTimingTable), sizeof(SMU73_Discrete_MCArbDramTimingTable),
...@@ -1683,9 +1683,9 @@ static int fiji_populate_vr_config(struct pp_hwmgr *hwmgr, ...@@ -1683,9 +1683,9 @@ static int fiji_populate_vr_config(struct pp_hwmgr *hwmgr,
return 0; return 0;
} }
static int fiji_init_arb_table_index(struct pp_smumgr *smumgr) static int fiji_init_arb_table_index(struct pp_hwmgr *hwmgr)
{ {
struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(smumgr->backend); struct fiji_smumgr *smu_data = (struct fiji_smumgr *)(hwmgr->smumgr->backend);
uint32_t tmp; uint32_t tmp;
int result; int result;
...@@ -1697,7 +1697,7 @@ static int fiji_init_arb_table_index(struct pp_smumgr *smumgr) ...@@ -1697,7 +1697,7 @@ static int fiji_init_arb_table_index(struct pp_smumgr *smumgr)
* In reality this field should not be in that structure * In reality this field should not be in that structure
* but in a soft register. * but in a soft register.
*/ */
result = smu7_read_smc_sram_dword(smumgr, result = smu7_read_smc_sram_dword(hwmgr,
smu_data->smu7_data.arb_table_start, &tmp, SMC_RAM_END); smu_data->smu7_data.arb_table_start, &tmp, SMC_RAM_END);
if (result) if (result)
...@@ -1706,7 +1706,7 @@ static int fiji_init_arb_table_index(struct pp_smumgr *smumgr) ...@@ -1706,7 +1706,7 @@ static int fiji_init_arb_table_index(struct pp_smumgr *smumgr)
tmp &= 0x00FFFFFF; tmp &= 0x00FFFFFF;
tmp |= ((uint32_t)MC_CG_ARB_FREQ_F1) << 24; tmp |= ((uint32_t)MC_CG_ARB_FREQ_F1) << 24;
return smu7_write_smc_sram_dword(smumgr, return smu7_write_smc_sram_dword(hwmgr,
smu_data->smu7_data.arb_table_start, tmp, SMC_RAM_END); smu_data->smu7_data.arb_table_start, tmp, SMC_RAM_END);
} }
...@@ -1771,7 +1771,7 @@ static int fiji_setup_dpm_led_config(struct pp_hwmgr *hwmgr) ...@@ -1771,7 +1771,7 @@ static int fiji_setup_dpm_led_config(struct pp_hwmgr *hwmgr)
} }
} }
if (mask) if (mask)
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_LedConfig, PPSMC_MSG_LedConfig,
mask); mask);
return 0; return 0;
...@@ -1974,7 +1974,7 @@ int fiji_init_smc_table(struct pp_hwmgr *hwmgr) ...@@ -1974,7 +1974,7 @@ int fiji_init_smc_table(struct pp_hwmgr *hwmgr)
CONVERT_FROM_HOST_TO_SMC_US(table->PhaseResponseTime); CONVERT_FROM_HOST_TO_SMC_US(table->PhaseResponseTime);
/* Upload all dpm data to SMC memory.(dpm level, dpm level count etc) */ /* Upload all dpm data to SMC memory.(dpm level, dpm level count etc) */
result = smu7_copy_bytes_to_smc(hwmgr->smumgr, result = smu7_copy_bytes_to_smc(hwmgr,
smu_data->smu7_data.dpm_table_start + smu_data->smu7_data.dpm_table_start +
offsetof(SMU73_Discrete_DpmTable, SystemFlags), offsetof(SMU73_Discrete_DpmTable, SystemFlags),
(uint8_t *)&(table->SystemFlags), (uint8_t *)&(table->SystemFlags),
...@@ -1983,7 +1983,7 @@ int fiji_init_smc_table(struct pp_hwmgr *hwmgr) ...@@ -1983,7 +1983,7 @@ int fiji_init_smc_table(struct pp_hwmgr *hwmgr)
PP_ASSERT_WITH_CODE(0 == result, PP_ASSERT_WITH_CODE(0 == result,
"Failed to upload dpm data to SMC memory!", return result); "Failed to upload dpm data to SMC memory!", return result);
result = fiji_init_arb_table_index(hwmgr->smumgr); result = fiji_init_arb_table_index(hwmgr);
PP_ASSERT_WITH_CODE(0 == result, PP_ASSERT_WITH_CODE(0 == result,
"Failed to upload arb data to SMC memory!", return result); "Failed to upload arb data to SMC memory!", return result);
...@@ -2093,20 +2093,20 @@ int fiji_thermal_setup_fan_table(struct pp_hwmgr *hwmgr) ...@@ -2093,20 +2093,20 @@ int fiji_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
hwmgr->device, CGS_IND_REG__SMC, hwmgr->device, CGS_IND_REG__SMC,
CG_MULT_THERMAL_CTRL, TEMP_SEL); CG_MULT_THERMAL_CTRL, TEMP_SEL);
res = smu7_copy_bytes_to_smc(hwmgr->smumgr, smu_data->smu7_data.fan_table_start, res = smu7_copy_bytes_to_smc(hwmgr, smu_data->smu7_data.fan_table_start,
(uint8_t *)&fan_table, (uint32_t)sizeof(fan_table), (uint8_t *)&fan_table, (uint32_t)sizeof(fan_table),
SMC_RAM_END); SMC_RAM_END);
if (!res && hwmgr->thermal_controller. if (!res && hwmgr->thermal_controller.
advanceFanControlParameters.ucMinimumPWMLimit) advanceFanControlParameters.ucMinimumPWMLimit)
res = smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, res = smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_SetFanMinPwm, PPSMC_MSG_SetFanMinPwm,
hwmgr->thermal_controller. hwmgr->thermal_controller.
advanceFanControlParameters.ucMinimumPWMLimit); advanceFanControlParameters.ucMinimumPWMLimit);
if (!res && hwmgr->thermal_controller. if (!res && hwmgr->thermal_controller.
advanceFanControlParameters.ulMinFanSCLKAcousticLimit) advanceFanControlParameters.ulMinFanSCLKAcousticLimit)
res = smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, res = smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_SetFanSclkTarget, PPSMC_MSG_SetFanSclkTarget,
hwmgr->thermal_controller. hwmgr->thermal_controller.
advanceFanControlParameters.ulMinFanSCLKAcousticLimit); advanceFanControlParameters.ulMinFanSCLKAcousticLimit);
...@@ -2122,13 +2122,12 @@ int fiji_thermal_setup_fan_table(struct pp_hwmgr *hwmgr) ...@@ -2122,13 +2122,12 @@ int fiji_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
int fiji_thermal_avfs_enable(struct pp_hwmgr *hwmgr) int fiji_thermal_avfs_enable(struct pp_hwmgr *hwmgr)
{ {
int ret; int ret;
struct pp_smumgr *smumgr = (struct pp_smumgr *)(hwmgr->smumgr); struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(hwmgr->smumgr->backend);
struct smu7_smumgr *smu_data = (struct smu7_smumgr *)(smumgr->backend);
if (smu_data->avfs.avfs_btc_status != AVFS_BTC_ENABLEAVFS) if (smu_data->avfs.avfs_btc_status != AVFS_BTC_ENABLEAVFS)
return 0; return 0;
ret = smum_send_msg_to_smc(smumgr, PPSMC_MSG_EnableAvfs); ret = smum_send_msg_to_smc(hwmgr, PPSMC_MSG_EnableAvfs);
if (!ret) if (!ret)
/* If this param is not changed, this function could fire unnecessarily */ /* If this param is not changed, this function could fire unnecessarily */
...@@ -2168,7 +2167,7 @@ int fiji_update_sclk_threshold(struct pp_hwmgr *hwmgr) ...@@ -2168,7 +2167,7 @@ int fiji_update_sclk_threshold(struct pp_hwmgr *hwmgr)
CONVERT_FROM_HOST_TO_SMC_UL(low_sclk_interrupt_threshold); CONVERT_FROM_HOST_TO_SMC_UL(low_sclk_interrupt_threshold);
result = smu7_copy_bytes_to_smc( result = smu7_copy_bytes_to_smc(
hwmgr->smumgr, hwmgr,
smu_data->smu7_data.dpm_table_start + smu_data->smu7_data.dpm_table_start +
offsetof(SMU73_Discrete_DpmTable, offsetof(SMU73_Discrete_DpmTable,
LowSclkInterruptThreshold), LowSclkInterruptThreshold),
...@@ -2269,7 +2268,7 @@ static int fiji_update_uvd_smc_table(struct pp_hwmgr *hwmgr) ...@@ -2269,7 +2268,7 @@ static int fiji_update_uvd_smc_table(struct pp_hwmgr *hwmgr)
PHM_PlatformCaps_UVDDPM) || PHM_PlatformCaps_UVDDPM) ||
phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
PHM_PlatformCaps_StablePState)) PHM_PlatformCaps_StablePState))
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_UVDDPM_SetEnabledMask, PPSMC_MSG_UVDDPM_SetEnabledMask,
(uint32_t)(1 << smu_data->smc_state_table.UvdBootLevel)); (uint32_t)(1 << smu_data->smc_state_table.UvdBootLevel));
return 0; return 0;
...@@ -2301,7 +2300,7 @@ static int fiji_update_vce_smc_table(struct pp_hwmgr *hwmgr) ...@@ -2301,7 +2300,7 @@ static int fiji_update_vce_smc_table(struct pp_hwmgr *hwmgr)
CGS_IND_REG__SMC, mm_boot_level_offset, mm_boot_level_value); CGS_IND_REG__SMC, mm_boot_level_offset, mm_boot_level_value);
if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_StablePState)) if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_StablePState))
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_VCEDPM_SetEnabledMask, PPSMC_MSG_VCEDPM_SetEnabledMask,
(uint32_t)1 << smu_data->smc_state_table.VceBootLevel); (uint32_t)1 << smu_data->smc_state_table.VceBootLevel);
return 0; return 0;
...@@ -2328,7 +2327,7 @@ static int fiji_update_samu_smc_table(struct pp_hwmgr *hwmgr) ...@@ -2328,7 +2327,7 @@ static int fiji_update_samu_smc_table(struct pp_hwmgr *hwmgr)
if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
PHM_PlatformCaps_StablePState)) PHM_PlatformCaps_StablePState))
smum_send_msg_to_smc_with_parameter(hwmgr->smumgr, smum_send_msg_to_smc_with_parameter(hwmgr,
PPSMC_MSG_SAMUDPM_SetEnabledMask, PPSMC_MSG_SAMUDPM_SetEnabledMask,
(uint32_t)(1 << smu_data->smc_state_table.SamuBootLevel)); (uint32_t)(1 << smu_data->smc_state_table.SamuBootLevel));
return 0; return 0;
...@@ -2367,7 +2366,7 @@ int fiji_process_firmware_header(struct pp_hwmgr *hwmgr) ...@@ -2367,7 +2366,7 @@ int fiji_process_firmware_header(struct pp_hwmgr *hwmgr)
int result; int result;
bool error = false; bool error = false;
result = smu7_read_smc_sram_dword(hwmgr->smumgr, result = smu7_read_smc_sram_dword(hwmgr,
SMU7_FIRMWARE_HEADER_LOCATION + SMU7_FIRMWARE_HEADER_LOCATION +
offsetof(SMU73_Firmware_Header, DpmTable), offsetof(SMU73_Firmware_Header, DpmTable),
&tmp, SMC_RAM_END); &tmp, SMC_RAM_END);
...@@ -2377,7 +2376,7 @@ int fiji_process_firmware_header(struct pp_hwmgr *hwmgr) ...@@ -2377,7 +2376,7 @@ int fiji_process_firmware_header(struct pp_hwmgr *hwmgr)
error |= (0 != result); error |= (0 != result);
result = smu7_read_smc_sram_dword(hwmgr->smumgr, result = smu7_read_smc_sram_dword(hwmgr,
SMU7_FIRMWARE_HEADER_LOCATION + SMU7_FIRMWARE_HEADER_LOCATION +
offsetof(SMU73_Firmware_Header, SoftRegisters), offsetof(SMU73_Firmware_Header, SoftRegisters),
&tmp, SMC_RAM_END); &tmp, SMC_RAM_END);
...@@ -2389,7 +2388,7 @@ int fiji_process_firmware_header(struct pp_hwmgr *hwmgr) ...@@ -2389,7 +2388,7 @@ int fiji_process_firmware_header(struct pp_hwmgr *hwmgr)
error |= (0 != result); error |= (0 != result);
result = smu7_read_smc_sram_dword(hwmgr->smumgr, result = smu7_read_smc_sram_dword(hwmgr,
SMU7_FIRMWARE_HEADER_LOCATION + SMU7_FIRMWARE_HEADER_LOCATION +
offsetof(SMU73_Firmware_Header, mcRegisterTable), offsetof(SMU73_Firmware_Header, mcRegisterTable),
&tmp, SMC_RAM_END); &tmp, SMC_RAM_END);
...@@ -2397,7 +2396,7 @@ int fiji_process_firmware_header(struct pp_hwmgr *hwmgr) ...@@ -2397,7 +2396,7 @@ int fiji_process_firmware_header(struct pp_hwmgr *hwmgr)
if (!result) if (!result)
smu_data->smu7_data.mc_reg_table_start = tmp; smu_data->smu7_data.mc_reg_table_start = tmp;
result = smu7_read_smc_sram_dword(hwmgr->smumgr, result = smu7_read_smc_sram_dword(hwmgr,
SMU7_FIRMWARE_HEADER_LOCATION + SMU7_FIRMWARE_HEADER_LOCATION +
offsetof(SMU73_Firmware_Header, FanTable), offsetof(SMU73_Firmware_Header, FanTable),
&tmp, SMC_RAM_END); &tmp, SMC_RAM_END);
...@@ -2407,7 +2406,7 @@ int fiji_process_firmware_header(struct pp_hwmgr *hwmgr) ...@@ -2407,7 +2406,7 @@ int fiji_process_firmware_header(struct pp_hwmgr *hwmgr)
error |= (0 != result); error |= (0 != result);
result = smu7_read_smc_sram_dword(hwmgr->smumgr, result = smu7_read_smc_sram_dword(hwmgr,
SMU7_FIRMWARE_HEADER_LOCATION + SMU7_FIRMWARE_HEADER_LOCATION +
offsetof(SMU73_Firmware_Header, mcArbDramTimingTable), offsetof(SMU73_Firmware_Header, mcArbDramTimingTable),
&tmp, SMC_RAM_END); &tmp, SMC_RAM_END);
...@@ -2417,7 +2416,7 @@ int fiji_process_firmware_header(struct pp_hwmgr *hwmgr) ...@@ -2417,7 +2416,7 @@ int fiji_process_firmware_header(struct pp_hwmgr *hwmgr)
error |= (0 != result); error |= (0 != result);
result = smu7_read_smc_sram_dword(hwmgr->smumgr, result = smu7_read_smc_sram_dword(hwmgr,
SMU7_FIRMWARE_HEADER_LOCATION + SMU7_FIRMWARE_HEADER_LOCATION +
offsetof(SMU73_Firmware_Header, Version), offsetof(SMU73_Firmware_Header, Version),
&tmp, SMC_RAM_END); &tmp, SMC_RAM_END);
...@@ -2482,6 +2481,6 @@ int fiji_populate_requested_graphic_levels(struct pp_hwmgr *hwmgr, ...@@ -2482,6 +2481,6 @@ int fiji_populate_requested_graphic_levels(struct pp_hwmgr *hwmgr,
levels[i].DownHyst = request->down_hyst; levels[i].DownHyst = request->down_hyst;
} }
return smu7_copy_bytes_to_smc(hwmgr->smumgr, array, (uint8_t *)levels, return smu7_copy_bytes_to_smc(hwmgr, array, (uint8_t *)levels,
array_size, SMC_RAM_END); array_size, SMC_RAM_END);
} }
...@@ -163,7 +163,7 @@ static int iceland_populate_dw8(struct pp_hwmgr *hwmgr, uint32_t fuse_table_offs ...@@ -163,7 +163,7 @@ static int iceland_populate_dw8(struct pp_hwmgr *hwmgr, uint32_t fuse_table_offs
const struct iceland_pt_defaults *defaults = smu_data->power_tune_defaults; const struct iceland_pt_defaults *defaults = smu_data->power_tune_defaults;
uint32_t temp; uint32_t temp;
if (smu7_read_smc_sram_dword(hwmgr->smumgr, if (smu7_read_smc_sram_dword(hwmgr,
fuse_table_offset + fuse_table_offset +
offsetof(SMU71_Discrete_PmFuses, TdcWaterfallCtl), offsetof(SMU71_Discrete_PmFuses, TdcWaterfallCtl),
(uint32_t *)&temp, SMC_RAM_END)) (uint32_t *)&temp, SMC_RAM_END))
...@@ -264,7 +264,7 @@ static int iceland_populate_pm_fuses(struct pp_hwmgr *hwmgr) ...@@ -264,7 +264,7 @@ static int iceland_populate_pm_fuses(struct pp_hwmgr *hwmgr)
if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, if (phm_cap_enabled(hwmgr->platform_descriptor.platformCaps,
PHM_PlatformCaps_PowerContainment)) { PHM_PlatformCaps_PowerContainment)) {
if (smu7_read_smc_sram_dword(hwmgr->smumgr, if (smu7_read_smc_sram_dword(hwmgr,
SMU71_FIRMWARE_HEADER_LOCATION + SMU71_FIRMWARE_HEADER_LOCATION +
offsetof(SMU71_Firmware_Header, PmFuseTable), offsetof(SMU71_Firmware_Header, PmFuseTable),
&pm_fuse_table_offset, SMC_RAM_END)) &pm_fuse_table_offset, SMC_RAM_END))
...@@ -318,7 +318,7 @@ static int iceland_populate_pm_fuses(struct pp_hwmgr *hwmgr) ...@@ -318,7 +318,7 @@ static int iceland_populate_pm_fuses(struct pp_hwmgr *hwmgr)
"Attempt to populate BapmVddCBaseLeakage Hi and Lo Sidd Failed!", "Attempt to populate BapmVddCBaseLeakage Hi and Lo Sidd Failed!",
return -EINVAL); return -EINVAL);
if (smu7_copy_bytes_to_smc(hwmgr->smumgr, pm_fuse_table_offset, if (smu7_copy_bytes_to_smc(hwmgr, pm_fuse_table_offset,
(uint8_t *)&smu_data->power_tune_table, (uint8_t *)&smu_data->power_tune_table,
sizeof(struct SMU71_Discrete_PmFuses), SMC_RAM_END)) sizeof(struct SMU71_Discrete_PmFuses), SMC_RAM_END))
PP_ASSERT_WITH_CODE(false, PP_ASSERT_WITH_CODE(false,
...@@ -881,7 +881,7 @@ int iceland_populate_all_graphic_levels(struct pp_hwmgr *hwmgr) ...@@ -881,7 +881,7 @@ int iceland_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
smu_data->smc_state_table.GraphicsLevel[1].pcieDpmLevel = mid_pcie_level_enabled; smu_data->smc_state_table.GraphicsLevel[1].pcieDpmLevel = mid_pcie_level_enabled;
/* level count will send to smc once at init smc table and never change*/ /* level count will send to smc once at init smc table and never change*/
result = smu7_copy_bytes_to_smc(hwmgr->smumgr, level_array_adress, result = smu7_copy_bytes_to_smc(hwmgr, level_array_adress,
(uint8_t *)levels, (uint32_t)level_array_size, (uint8_t *)levels, (uint32_t)level_array_size,
SMC_RAM_END); SMC_RAM_END);
...@@ -1246,7 +1246,7 @@ int iceland_populate_all_memory_levels(struct pp_hwmgr *hwmgr) ...@@ -1246,7 +1246,7 @@ int iceland_populate_all_memory_levels(struct pp_hwmgr *hwmgr)
smu_data->smc_state_table.MemoryLevel[dpm_table->mclk_table.count-1].DisplayWatermark = PPSMC_DISPLAY_WATERMARK_HIGH; smu_data->smc_state_table.MemoryLevel[dpm_table->mclk_table.count-1].DisplayWatermark = PPSMC_DISPLAY_WATERMARK_HIGH;
/* level count will send to smc once at init smc table and never change*/ /* level count will send to smc once at init smc table and never change*/
result = smu7_copy_bytes_to_smc(hwmgr->smumgr, result = smu7_copy_bytes_to_smc(hwmgr,
level_array_adress, (uint8_t *)levels, (uint32_t)level_array_size, level_array_adress, (uint8_t *)levels, (uint32_t)level_array_size,
SMC_RAM_END); SMC_RAM_END);
...@@ -1507,7 +1507,7 @@ static int iceland_program_memory_timing_parameters(struct pp_hwmgr *hwmgr) ...@@ -1507,7 +1507,7 @@ static int iceland_program_memory_timing_parameters(struct pp_hwmgr *hwmgr)
if (0 == result) { if (0 == result) {
result = smu7_copy_bytes_to_smc( result = smu7_copy_bytes_to_smc(
hwmgr->smumgr, hwmgr,
smu_data->smu7_data.arb_table_start, smu_data->smu7_data.arb_table_start,
(uint8_t *)&arb_regs, (uint8_t *)&arb_regs,
sizeof(SMU71_Discrete_MCArbDramTimingTable), sizeof(SMU71_Discrete_MCArbDramTimingTable),
...@@ -1561,10 +1561,10 @@ static int iceland_populate_smc_boot_level(struct pp_hwmgr *hwmgr, ...@@ -1561,10 +1561,10 @@ static int iceland_populate_smc_boot_level(struct pp_hwmgr *hwmgr,
return result; return result;
} }
static int iceland_populate_mc_reg_address(struct pp_smumgr *smumgr, static int iceland_populate_mc_reg_address(struct pp_hwmgr *hwmgr,
SMU71_Discrete_MCRegisters *mc_reg_table) SMU71_Discrete_MCRegisters *mc_reg_table)
{ {
const struct iceland_smumgr *smu_data = (struct iceland_smumgr *)smumgr->backend; const struct iceland_smumgr *smu_data = (struct iceland_smumgr *)hwmgr->smumgr->backend;
uint32_t i, j; uint32_t i, j;
...@@ -1601,13 +1601,12 @@ static void iceland_convert_mc_registers( ...@@ -1601,13 +1601,12 @@ static void iceland_convert_mc_registers(
} }
} }
static int iceland_convert_mc_reg_table_entry_to_smc( static int iceland_convert_mc_reg_table_entry_to_smc(struct pp_hwmgr *hwmgr,
struct pp_smumgr *smumgr,
const uint32_t memory_clock, const uint32_t memory_clock,
SMU71_Discrete_MCRegisterSet *mc_reg_table_data SMU71_Discrete_MCRegisterSet *mc_reg_table_data
) )
{ {
struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(smumgr->backend); struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
uint32_t i = 0; uint32_t i = 0;
for (i = 0; i < smu_data->mc_reg_table.num_entries; i++) { for (i = 0; i < smu_data->mc_reg_table.num_entries; i++) {
...@@ -1637,7 +1636,7 @@ static int iceland_convert_mc_reg_table_to_smc(struct pp_hwmgr *hwmgr, ...@@ -1637,7 +1636,7 @@ static int iceland_convert_mc_reg_table_to_smc(struct pp_hwmgr *hwmgr,
for (i = 0; i < data->dpm_table.mclk_table.count; i++) { for (i = 0; i < data->dpm_table.mclk_table.count; i++) {
res = iceland_convert_mc_reg_table_entry_to_smc( res = iceland_convert_mc_reg_table_entry_to_smc(
hwmgr->smumgr, hwmgr,
data->dpm_table.mclk_table.dpm_levels[i].value, data->dpm_table.mclk_table.dpm_levels[i].value,
&mc_regs->data[i] &mc_regs->data[i]
); );
...@@ -1651,8 +1650,7 @@ static int iceland_convert_mc_reg_table_to_smc(struct pp_hwmgr *hwmgr, ...@@ -1651,8 +1650,7 @@ static int iceland_convert_mc_reg_table_to_smc(struct pp_hwmgr *hwmgr,
static int iceland_update_and_upload_mc_reg_table(struct pp_hwmgr *hwmgr) static int iceland_update_and_upload_mc_reg_table(struct pp_hwmgr *hwmgr)
{ {
struct pp_smumgr *smumgr = hwmgr->smumgr; struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(smumgr->backend);
struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend); struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
uint32_t address; uint32_t address;
int32_t result; int32_t result;
...@@ -1671,7 +1669,7 @@ static int iceland_update_and_upload_mc_reg_table(struct pp_hwmgr *hwmgr) ...@@ -1671,7 +1669,7 @@ static int iceland_update_and_upload_mc_reg_table(struct pp_hwmgr *hwmgr)
address = smu_data->smu7_data.mc_reg_table_start + (uint32_t)offsetof(SMU71_Discrete_MCRegisters, data[0]); address = smu_data->smu7_data.mc_reg_table_start + (uint32_t)offsetof(SMU71_Discrete_MCRegisters, data[0]);
return smu7_copy_bytes_to_smc(hwmgr->smumgr, address, return smu7_copy_bytes_to_smc(hwmgr, address,
(uint8_t *)&smu_data->mc_regs.data[0], (uint8_t *)&smu_data->mc_regs.data[0],
sizeof(SMU71_Discrete_MCRegisterSet) * data->dpm_table.mclk_table.count, sizeof(SMU71_Discrete_MCRegisterSet) * data->dpm_table.mclk_table.count,
SMC_RAM_END); SMC_RAM_END);
...@@ -1680,11 +1678,10 @@ static int iceland_update_and_upload_mc_reg_table(struct pp_hwmgr *hwmgr) ...@@ -1680,11 +1678,10 @@ static int iceland_update_and_upload_mc_reg_table(struct pp_hwmgr *hwmgr)
static int iceland_populate_initial_mc_reg_table(struct pp_hwmgr *hwmgr) static int iceland_populate_initial_mc_reg_table(struct pp_hwmgr *hwmgr)
{ {
int result; int result;
struct pp_smumgr *smumgr = hwmgr->smumgr; struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smumgr->backend);
struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(smumgr->backend);
memset(&smu_data->mc_regs, 0x00, sizeof(SMU71_Discrete_MCRegisters)); memset(&smu_data->mc_regs, 0x00, sizeof(SMU71_Discrete_MCRegisters));
result = iceland_populate_mc_reg_address(smumgr, &(smu_data->mc_regs)); result = iceland_populate_mc_reg_address(hwmgr, &(smu_data->mc_regs));
PP_ASSERT_WITH_CODE(0 == result, PP_ASSERT_WITH_CODE(0 == result,
"Failed to initialize MCRegTable for the MC register addresses!", return result;); "Failed to initialize MCRegTable for the MC register addresses!", return result;);
...@@ -1692,7 +1689,7 @@ static int iceland_populate_initial_mc_reg_table(struct pp_hwmgr *hwmgr) ...@@ -1692,7 +1689,7 @@ static int iceland_populate_initial_mc_reg_table(struct pp_hwmgr *hwmgr)
PP_ASSERT_WITH_CODE(0 == result, PP_ASSERT_WITH_CODE(0 == result,
"Failed to initialize MCRegTable for driver state!", return result;); "Failed to initialize MCRegTable for driver state!", return result;);
return smu7_copy_bytes_to_smc(smumgr, smu_data->smu7_data.mc_reg_table_start, return smu7_copy_bytes_to_smc(hwmgr, smu_data->smu7_data.mc_reg_table_start,
(uint8_t *)&smu_data->mc_regs, sizeof(SMU71_Discrete_MCRegisters), SMC_RAM_END); (uint8_t *)&smu_data->mc_regs, sizeof(SMU71_Discrete_MCRegisters), SMC_RAM_END);
} }
...@@ -1944,7 +1941,7 @@ int iceland_init_smc_table(struct pp_hwmgr *hwmgr) ...@@ -1944,7 +1941,7 @@ int iceland_init_smc_table(struct pp_hwmgr *hwmgr)
table->BootMVdd = PP_HOST_TO_SMC_US(table->BootMVdd * VOLTAGE_SCALE); table->BootMVdd = PP_HOST_TO_SMC_US(table->BootMVdd * VOLTAGE_SCALE);
/* Upload all dpm data to SMC memory.(dpm level, dpm level count etc) */ /* Upload all dpm data to SMC memory.(dpm level, dpm level count etc) */
result = smu7_copy_bytes_to_smc(hwmgr->smumgr, smu_data->smu7_data.dpm_table_start + result = smu7_copy_bytes_to_smc(hwmgr, smu_data->smu7_data.dpm_table_start +
offsetof(SMU71_Discrete_DpmTable, SystemFlags), offsetof(SMU71_Discrete_DpmTable, SystemFlags),
(uint8_t *)&(table->SystemFlags), (uint8_t *)&(table->SystemFlags),
sizeof(SMU71_Discrete_DpmTable)-3 * sizeof(SMU71_PIDController), sizeof(SMU71_Discrete_DpmTable)-3 * sizeof(SMU71_PIDController),
...@@ -1954,7 +1951,7 @@ int iceland_init_smc_table(struct pp_hwmgr *hwmgr) ...@@ -1954,7 +1951,7 @@ int iceland_init_smc_table(struct pp_hwmgr *hwmgr)
"Failed to upload dpm data to SMC memory!", return result;); "Failed to upload dpm data to SMC memory!", return result;);
/* Upload all ulv setting to SMC memory.(dpm level, dpm level count etc) */ /* Upload all ulv setting to SMC memory.(dpm level, dpm level count etc) */
result = smu7_copy_bytes_to_smc(hwmgr->smumgr, result = smu7_copy_bytes_to_smc(hwmgr,
smu_data->smu7_data.ulv_setting_starts, smu_data->smu7_data.ulv_setting_starts,
(uint8_t *)&(smu_data->ulv_setting), (uint8_t *)&(smu_data->ulv_setting),
sizeof(SMU71_Discrete_Ulv), sizeof(SMU71_Discrete_Ulv),
...@@ -2053,7 +2050,7 @@ int iceland_thermal_setup_fan_table(struct pp_hwmgr *hwmgr) ...@@ -2053,7 +2050,7 @@ int iceland_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
/* fan_table.FanControl_GL_Flag = 1; */ /* fan_table.FanControl_GL_Flag = 1; */
res = smu7_copy_bytes_to_smc(hwmgr->smumgr, smu7_data->fan_table_start, (uint8_t *)&fan_table, (uint32_t)sizeof(fan_table), SMC_RAM_END); res = smu7_copy_bytes_to_smc(hwmgr, smu7_data->fan_table_start, (uint8_t *)&fan_table, (uint32_t)sizeof(fan_table), SMC_RAM_END);
return 0; return 0;
} }
...@@ -2090,7 +2087,7 @@ int iceland_update_sclk_threshold(struct pp_hwmgr *hwmgr) ...@@ -2090,7 +2087,7 @@ int iceland_update_sclk_threshold(struct pp_hwmgr *hwmgr)
CONVERT_FROM_HOST_TO_SMC_UL(low_sclk_interrupt_threshold); CONVERT_FROM_HOST_TO_SMC_UL(low_sclk_interrupt_threshold);
result = smu7_copy_bytes_to_smc( result = smu7_copy_bytes_to_smc(
hwmgr->smumgr, hwmgr,
smu_data->smu7_data.dpm_table_start + smu_data->smu7_data.dpm_table_start +
offsetof(SMU71_Discrete_DpmTable, offsetof(SMU71_Discrete_DpmTable,
LowSclkInterruptThreshold), LowSclkInterruptThreshold),
...@@ -2177,7 +2174,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr) ...@@ -2177,7 +2174,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr)
int result; int result;
bool error = false; bool error = false;
result = smu7_read_smc_sram_dword(hwmgr->smumgr, result = smu7_read_smc_sram_dword(hwmgr,
SMU71_FIRMWARE_HEADER_LOCATION + SMU71_FIRMWARE_HEADER_LOCATION +
offsetof(SMU71_Firmware_Header, DpmTable), offsetof(SMU71_Firmware_Header, DpmTable),
&tmp, SMC_RAM_END); &tmp, SMC_RAM_END);
...@@ -2188,7 +2185,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr) ...@@ -2188,7 +2185,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr)
error |= (0 != result); error |= (0 != result);
result = smu7_read_smc_sram_dword(hwmgr->smumgr, result = smu7_read_smc_sram_dword(hwmgr,
SMU71_FIRMWARE_HEADER_LOCATION + SMU71_FIRMWARE_HEADER_LOCATION +
offsetof(SMU71_Firmware_Header, SoftRegisters), offsetof(SMU71_Firmware_Header, SoftRegisters),
&tmp, SMC_RAM_END); &tmp, SMC_RAM_END);
...@@ -2201,7 +2198,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr) ...@@ -2201,7 +2198,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr)
error |= (0 != result); error |= (0 != result);
result = smu7_read_smc_sram_dword(hwmgr->smumgr, result = smu7_read_smc_sram_dword(hwmgr,
SMU71_FIRMWARE_HEADER_LOCATION + SMU71_FIRMWARE_HEADER_LOCATION +
offsetof(SMU71_Firmware_Header, mcRegisterTable), offsetof(SMU71_Firmware_Header, mcRegisterTable),
&tmp, SMC_RAM_END); &tmp, SMC_RAM_END);
...@@ -2210,7 +2207,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr) ...@@ -2210,7 +2207,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr)
smu7_data->mc_reg_table_start = tmp; smu7_data->mc_reg_table_start = tmp;
} }
result = smu7_read_smc_sram_dword(hwmgr->smumgr, result = smu7_read_smc_sram_dword(hwmgr,
SMU71_FIRMWARE_HEADER_LOCATION + SMU71_FIRMWARE_HEADER_LOCATION +
offsetof(SMU71_Firmware_Header, FanTable), offsetof(SMU71_Firmware_Header, FanTable),
&tmp, SMC_RAM_END); &tmp, SMC_RAM_END);
...@@ -2221,7 +2218,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr) ...@@ -2221,7 +2218,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr)
error |= (0 != result); error |= (0 != result);
result = smu7_read_smc_sram_dword(hwmgr->smumgr, result = smu7_read_smc_sram_dword(hwmgr,
SMU71_FIRMWARE_HEADER_LOCATION + SMU71_FIRMWARE_HEADER_LOCATION +
offsetof(SMU71_Firmware_Header, mcArbDramTimingTable), offsetof(SMU71_Firmware_Header, mcArbDramTimingTable),
&tmp, SMC_RAM_END); &tmp, SMC_RAM_END);
...@@ -2233,7 +2230,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr) ...@@ -2233,7 +2230,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr)
error |= (0 != result); error |= (0 != result);
result = smu7_read_smc_sram_dword(hwmgr->smumgr, result = smu7_read_smc_sram_dword(hwmgr,
SMU71_FIRMWARE_HEADER_LOCATION + SMU71_FIRMWARE_HEADER_LOCATION +
offsetof(SMU71_Firmware_Header, Version), offsetof(SMU71_Firmware_Header, Version),
&tmp, SMC_RAM_END); &tmp, SMC_RAM_END);
...@@ -2244,7 +2241,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr) ...@@ -2244,7 +2241,7 @@ int iceland_process_firmware_header(struct pp_hwmgr *hwmgr)
error |= (0 != result); error |= (0 != result);
result = smu7_read_smc_sram_dword(hwmgr->smumgr, result = smu7_read_smc_sram_dword(hwmgr,
SMU71_FIRMWARE_HEADER_LOCATION + SMU71_FIRMWARE_HEADER_LOCATION +
offsetof(SMU71_Firmware_Header, UlvSettings), offsetof(SMU71_Firmware_Header, UlvSettings),
&tmp, SMC_RAM_END); &tmp, SMC_RAM_END);
......
...@@ -39,55 +39,55 @@ ...@@ -39,55 +39,55 @@
#define ICELAND_SMC_SIZE 0x20000 #define ICELAND_SMC_SIZE 0x20000
static int iceland_start_smc(struct pp_smumgr *smumgr) static int iceland_start_smc(struct pp_hwmgr *hwmgr)
{ {
SMUM_WRITE_INDIRECT_FIELD(smumgr->device, CGS_IND_REG__SMC, SMUM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
SMC_SYSCON_RESET_CNTL, rst_reg, 0); SMC_SYSCON_RESET_CNTL, rst_reg, 0);
return 0; return 0;
} }
static void iceland_reset_smc(struct pp_smumgr *smumgr) static void iceland_reset_smc(struct pp_hwmgr *hwmgr)
{ {
SMUM_WRITE_INDIRECT_FIELD(smumgr->device, CGS_IND_REG__SMC, SMUM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
SMC_SYSCON_RESET_CNTL, SMC_SYSCON_RESET_CNTL,
rst_reg, 1); rst_reg, 1);
} }
static void iceland_stop_smc_clock(struct pp_smumgr *smumgr) static void iceland_stop_smc_clock(struct pp_hwmgr *hwmgr)
{ {
SMUM_WRITE_INDIRECT_FIELD(smumgr->device, CGS_IND_REG__SMC, SMUM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
SMC_SYSCON_CLOCK_CNTL_0, SMC_SYSCON_CLOCK_CNTL_0,
ck_disable, 1); ck_disable, 1);
} }
static void iceland_start_smc_clock(struct pp_smumgr *smumgr) static void iceland_start_smc_clock(struct pp_hwmgr *hwmgr)
{ {
SMUM_WRITE_INDIRECT_FIELD(smumgr->device, CGS_IND_REG__SMC, SMUM_WRITE_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
SMC_SYSCON_CLOCK_CNTL_0, SMC_SYSCON_CLOCK_CNTL_0,
ck_disable, 0); ck_disable, 0);
} }
static int iceland_smu_start_smc(struct pp_smumgr *smumgr) static int iceland_smu_start_smc(struct pp_hwmgr *hwmgr)
{ {
/* set smc instruct start point at 0x0 */ /* set smc instruct start point at 0x0 */
smu7_program_jump_on_start(smumgr); smu7_program_jump_on_start(hwmgr);
/* enable smc clock */ /* enable smc clock */
iceland_start_smc_clock(smumgr); iceland_start_smc_clock(hwmgr);
/* de-assert reset */ /* de-assert reset */
iceland_start_smc(smumgr); iceland_start_smc(hwmgr);
SMUM_WAIT_INDIRECT_FIELD(smumgr, SMC_IND, FIRMWARE_FLAGS, SMUM_WAIT_INDIRECT_FIELD(hwmgr, SMC_IND, FIRMWARE_FLAGS,
INTERRUPTS_ENABLED, 1); INTERRUPTS_ENABLED, 1);
return 0; return 0;
} }
static int iceland_upload_smc_firmware_data(struct pp_smumgr *smumgr, static int iceland_upload_smc_firmware_data(struct pp_hwmgr *hwmgr,
uint32_t length, const uint8_t *src, uint32_t length, const uint8_t *src,
uint32_t limit, uint32_t start_addr) uint32_t limit, uint32_t start_addr)
{ {
...@@ -96,17 +96,17 @@ static int iceland_upload_smc_firmware_data(struct pp_smumgr *smumgr, ...@@ -96,17 +96,17 @@ static int iceland_upload_smc_firmware_data(struct pp_smumgr *smumgr,
PP_ASSERT_WITH_CODE((limit >= byte_count), "SMC address is beyond the SMC RAM area.", return -EINVAL); PP_ASSERT_WITH_CODE((limit >= byte_count), "SMC address is beyond the SMC RAM area.", return -EINVAL);
cgs_write_register(smumgr->device, mmSMC_IND_INDEX_0, start_addr); cgs_write_register(hwmgr->device, mmSMC_IND_INDEX_0, start_addr);
SMUM_WRITE_FIELD(smumgr->device, SMC_IND_ACCESS_CNTL, AUTO_INCREMENT_IND_0, 1); SMUM_WRITE_FIELD(hwmgr->device, SMC_IND_ACCESS_CNTL, AUTO_INCREMENT_IND_0, 1);
while (byte_count >= 4) { while (byte_count >= 4) {
data = src[0] * 0x1000000 + src[1] * 0x10000 + src[2] * 0x100 + src[3]; data = src[0] * 0x1000000 + src[1] * 0x10000 + src[2] * 0x100 + src[3];
cgs_write_register(smumgr->device, mmSMC_IND_DATA_0, data); cgs_write_register(hwmgr->device, mmSMC_IND_DATA_0, data);
src += 4; src += 4;
byte_count -= 4; byte_count -= 4;
} }
SMUM_WRITE_FIELD(smumgr->device, SMC_IND_ACCESS_CNTL, AUTO_INCREMENT_IND_0, 0); SMUM_WRITE_FIELD(hwmgr->device, SMC_IND_ACCESS_CNTL, AUTO_INCREMENT_IND_0, 0);
PP_ASSERT_WITH_CODE((0 == byte_count), "SMC size must be dividable by 4.", return -EINVAL); PP_ASSERT_WITH_CODE((0 == byte_count), "SMC size must be dividable by 4.", return -EINVAL);
...@@ -114,16 +114,16 @@ static int iceland_upload_smc_firmware_data(struct pp_smumgr *smumgr, ...@@ -114,16 +114,16 @@ static int iceland_upload_smc_firmware_data(struct pp_smumgr *smumgr,
} }
static int iceland_smu_upload_firmware_image(struct pp_smumgr *smumgr) static int iceland_smu_upload_firmware_image(struct pp_hwmgr *hwmgr)
{ {
uint32_t val; uint32_t val;
struct cgs_firmware_info info = {0}; struct cgs_firmware_info info = {0};
if (smumgr == NULL || smumgr->device == NULL) if (hwmgr == NULL || hwmgr->device == NULL)
return -EINVAL; return -EINVAL;
/* load SMC firmware */ /* load SMC firmware */
cgs_get_firmware_info(smumgr->device, cgs_get_firmware_info(hwmgr->device,
smu7_convert_fw_type_to_cgs(UCODE_ID_SMU), &info); smu7_convert_fw_type_to_cgs(UCODE_ID_SMU), &info);
if (info.image_size & 3) { if (info.image_size & 3) {
...@@ -137,56 +137,56 @@ static int iceland_smu_upload_firmware_image(struct pp_smumgr *smumgr) ...@@ -137,56 +137,56 @@ static int iceland_smu_upload_firmware_image(struct pp_smumgr *smumgr)
} }
/* wait for smc boot up */ /* wait for smc boot up */
SMUM_WAIT_INDIRECT_FIELD_UNEQUAL(smumgr, SMC_IND, SMUM_WAIT_INDIRECT_FIELD_UNEQUAL(hwmgr, SMC_IND,
RCU_UC_EVENTS, boot_seq_done, 0); RCU_UC_EVENTS, boot_seq_done, 0);
/* clear firmware interrupt enable flag */ /* clear firmware interrupt enable flag */
val = cgs_read_ind_register(smumgr->device, CGS_IND_REG__SMC, val = cgs_read_ind_register(hwmgr->device, CGS_IND_REG__SMC,
ixSMC_SYSCON_MISC_CNTL); ixSMC_SYSCON_MISC_CNTL);
cgs_write_ind_register(smumgr->device, CGS_IND_REG__SMC, cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
ixSMC_SYSCON_MISC_CNTL, val | 1); ixSMC_SYSCON_MISC_CNTL, val | 1);
/* stop smc clock */ /* stop smc clock */
iceland_stop_smc_clock(smumgr); iceland_stop_smc_clock(hwmgr);
/* reset smc */ /* reset smc */
iceland_reset_smc(smumgr); iceland_reset_smc(hwmgr);
iceland_upload_smc_firmware_data(smumgr, info.image_size, iceland_upload_smc_firmware_data(hwmgr, info.image_size,
(uint8_t *)info.kptr, ICELAND_SMC_SIZE, (uint8_t *)info.kptr, ICELAND_SMC_SIZE,
info.ucode_start_address); info.ucode_start_address);
return 0; return 0;
} }
static int iceland_request_smu_load_specific_fw(struct pp_smumgr *smumgr, static int iceland_request_smu_load_specific_fw(struct pp_hwmgr *hwmgr,
uint32_t firmwareType) uint32_t firmwareType)
{ {
return 0; return 0;
} }
static int iceland_start_smu(struct pp_smumgr *smumgr) static int iceland_start_smu(struct pp_hwmgr *hwmgr)
{ {
int result; int result;
result = iceland_smu_upload_firmware_image(smumgr); result = iceland_smu_upload_firmware_image(hwmgr);
if (result) if (result)
return result; return result;
result = iceland_smu_start_smc(smumgr); result = iceland_smu_start_smc(hwmgr);
if (result) if (result)
return result; return result;
if (!smu7_is_smc_ram_running(smumgr)) { if (!smu7_is_smc_ram_running(hwmgr)) {
pr_info("smu not running, upload firmware again \n"); pr_info("smu not running, upload firmware again \n");
result = iceland_smu_upload_firmware_image(smumgr); result = iceland_smu_upload_firmware_image(hwmgr);
if (result) if (result)
return result; return result;
result = iceland_smu_start_smc(smumgr); result = iceland_smu_start_smc(hwmgr);
if (result) if (result)
return result; return result;
} }
result = smu7_request_smu_load_fw(smumgr); result = smu7_request_smu_load_fw(hwmgr);
return result; return result;
} }
...@@ -198,7 +198,7 @@ static int iceland_start_smu(struct pp_smumgr *smumgr) ...@@ -198,7 +198,7 @@ static int iceland_start_smu(struct pp_smumgr *smumgr)
* @param smcAddress the address in the SMC RAM to access. * @param smcAddress the address in the SMC RAM to access.
* @param value to write to the SMC SRAM. * @param value to write to the SMC SRAM.
*/ */
static int iceland_smu_init(struct pp_smumgr *smumgr) static int iceland_smu_init(struct pp_hwmgr *hwmgr)
{ {
int i; int i;
struct iceland_smumgr *iceland_priv = NULL; struct iceland_smumgr *iceland_priv = NULL;
...@@ -208,9 +208,9 @@ static int iceland_smu_init(struct pp_smumgr *smumgr) ...@@ -208,9 +208,9 @@ static int iceland_smu_init(struct pp_smumgr *smumgr)
if (iceland_priv == NULL) if (iceland_priv == NULL)
return -ENOMEM; return -ENOMEM;
smumgr->backend = iceland_priv; hwmgr->smumgr->backend = iceland_priv;
if (smu7_init(smumgr)) if (smu7_init(hwmgr))
return -EINVAL; return -EINVAL;
for (i = 0; i < SMU71_MAX_LEVELS_GRAPHICS; i++) for (i = 0; i < SMU71_MAX_LEVELS_GRAPHICS; i++)
......
...@@ -51,11 +51,11 @@ struct rv_smumgr { ...@@ -51,11 +51,11 @@ struct rv_smumgr {
struct smu_table_array smu_tables; struct smu_table_array smu_tables;
}; };
int rv_read_arg_from_smc(struct pp_smumgr *smumgr, uint32_t *arg); int rv_read_arg_from_smc(struct pp_hwmgr *hwmgr, uint32_t *arg);
bool rv_is_smc_ram_running(struct pp_smumgr *smumgr); bool rv_is_smc_ram_running(struct pp_hwmgr *hwmgr);
int rv_copy_table_from_smc(struct pp_smumgr *smumgr, int rv_copy_table_from_smc(struct pp_hwmgr *hwmgr,
uint8_t *table, int16_t table_id); uint8_t *table, int16_t table_id);
int rv_copy_table_to_smc(struct pp_smumgr *smumgr, int rv_copy_table_to_smc(struct pp_hwmgr *hwmgr,
uint8_t *table, int16_t table_id); uint8_t *table, int16_t table_id);
......
...@@ -60,32 +60,32 @@ struct smu7_smumgr { ...@@ -60,32 +60,32 @@ struct smu7_smumgr {
}; };
int smu7_copy_bytes_from_smc(struct pp_smumgr *smumgr, uint32_t smc_start_address, int smu7_copy_bytes_from_smc(struct pp_hwmgr *hwmgr, uint32_t smc_start_address,
uint32_t *dest, uint32_t byte_count, uint32_t limit); uint32_t *dest, uint32_t byte_count, uint32_t limit);
int smu7_copy_bytes_to_smc(struct pp_smumgr *smumgr, uint32_t smc_start_address, int smu7_copy_bytes_to_smc(struct pp_hwmgr *hwmgr, uint32_t smc_start_address,
const uint8_t *src, uint32_t byte_count, uint32_t limit); const uint8_t *src, uint32_t byte_count, uint32_t limit);
int smu7_program_jump_on_start(struct pp_smumgr *smumgr); int smu7_program_jump_on_start(struct pp_hwmgr *hwmgr);
bool smu7_is_smc_ram_running(struct pp_smumgr *smumgr); bool smu7_is_smc_ram_running(struct pp_hwmgr *hwmgr);
int smu7_send_msg_to_smc(struct pp_smumgr *smumgr, uint16_t msg); int smu7_send_msg_to_smc(struct pp_hwmgr *hwmgr, uint16_t msg);
int smu7_send_msg_to_smc_without_waiting(struct pp_smumgr *smumgr, uint16_t msg); int smu7_send_msg_to_smc_without_waiting(struct pp_hwmgr *hwmgr, uint16_t msg);
int smu7_send_msg_to_smc_with_parameter(struct pp_smumgr *smumgr, uint16_t msg, int smu7_send_msg_to_smc_with_parameter(struct pp_hwmgr *hwmgr, uint16_t msg,
uint32_t parameter); uint32_t parameter);
int smu7_send_msg_to_smc_with_parameter_without_waiting(struct pp_smumgr *smumgr, int smu7_send_msg_to_smc_with_parameter_without_waiting(struct pp_hwmgr *hwmgr,
uint16_t msg, uint32_t parameter); uint16_t msg, uint32_t parameter);
int smu7_send_msg_to_smc_offset(struct pp_smumgr *smumgr); int smu7_send_msg_to_smc_offset(struct pp_hwmgr *hwmgr);
int smu7_wait_for_smc_inactive(struct pp_smumgr *smumgr); int smu7_wait_for_smc_inactive(struct pp_hwmgr *hwmgr);
enum cgs_ucode_id smu7_convert_fw_type_to_cgs(uint32_t fw_type); enum cgs_ucode_id smu7_convert_fw_type_to_cgs(uint32_t fw_type);
int smu7_read_smc_sram_dword(struct pp_smumgr *smumgr, uint32_t smc_addr, int smu7_read_smc_sram_dword(struct pp_hwmgr *hwmgr, uint32_t smc_addr,
uint32_t *value, uint32_t limit); uint32_t *value, uint32_t limit);
int smu7_write_smc_sram_dword(struct pp_smumgr *smumgr, uint32_t smc_addr, int smu7_write_smc_sram_dword(struct pp_hwmgr *hwmgr, uint32_t smc_addr,
uint32_t value, uint32_t limit); uint32_t value, uint32_t limit);
int smu7_request_smu_load_fw(struct pp_smumgr *smumgr); int smu7_request_smu_load_fw(struct pp_hwmgr *hwmgr);
int smu7_check_fw_load_finish(struct pp_smumgr *smumgr, uint32_t fw_type); int smu7_check_fw_load_finish(struct pp_hwmgr *hwmgr, uint32_t fw_type);
int smu7_reload_firmware(struct pp_smumgr *smumgr); int smu7_reload_firmware(struct pp_hwmgr *hwmgr);
int smu7_upload_smu_firmware_image(struct pp_smumgr *smumgr); int smu7_upload_smu_firmware_image(struct pp_hwmgr *hwmgr);
int smu7_init(struct pp_smumgr *smumgr); int smu7_init(struct pp_hwmgr *hwmgr);
int smu7_smu_fini(struct pp_smumgr *smumgr); int smu7_smu_fini(struct pp_hwmgr *hwmgr);
#endif #endif
\ No newline at end of file
...@@ -37,125 +37,125 @@ ...@@ -37,125 +37,125 @@
#include "smu7_smumgr.h" #include "smu7_smumgr.h"
static int tonga_start_in_protection_mode(struct pp_smumgr *smumgr) static int tonga_start_in_protection_mode(struct pp_hwmgr *hwmgr)
{ {
int result; int result;
/* Assert reset */ /* Assert reset */
SMUM_WRITE_VFPF_INDIRECT_FIELD(smumgr->device, CGS_IND_REG__SMC, SMUM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
SMC_SYSCON_RESET_CNTL, rst_reg, 1); SMC_SYSCON_RESET_CNTL, rst_reg, 1);
result = smu7_upload_smu_firmware_image(smumgr); result = smu7_upload_smu_firmware_image(hwmgr);
if (result) if (result)
return result; return result;
/* Clear status */ /* Clear status */
cgs_write_ind_register(smumgr->device, CGS_IND_REG__SMC, cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
ixSMU_STATUS, 0); ixSMU_STATUS, 0);
/* Enable clock */ /* Enable clock */
SMUM_WRITE_VFPF_INDIRECT_FIELD(smumgr->device, CGS_IND_REG__SMC, SMUM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
SMC_SYSCON_CLOCK_CNTL_0, ck_disable, 0); SMC_SYSCON_CLOCK_CNTL_0, ck_disable, 0);
/* De-assert reset */ /* De-assert reset */
SMUM_WRITE_VFPF_INDIRECT_FIELD(smumgr->device, CGS_IND_REG__SMC, SMUM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
SMC_SYSCON_RESET_CNTL, rst_reg, 0); SMC_SYSCON_RESET_CNTL, rst_reg, 0);
/* Set SMU Auto Start */ /* Set SMU Auto Start */
SMUM_WRITE_VFPF_INDIRECT_FIELD(smumgr->device, CGS_IND_REG__SMC, SMUM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
SMU_INPUT_DATA, AUTO_START, 1); SMU_INPUT_DATA, AUTO_START, 1);
/* Clear firmware interrupt enable flag */ /* Clear firmware interrupt enable flag */
cgs_write_ind_register(smumgr->device, CGS_IND_REG__SMC, cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
ixFIRMWARE_FLAGS, 0); ixFIRMWARE_FLAGS, 0);
SMUM_WAIT_VFPF_INDIRECT_FIELD(smumgr, SMC_IND, SMUM_WAIT_VFPF_INDIRECT_FIELD(hwmgr, SMC_IND,
RCU_UC_EVENTS, INTERRUPTS_ENABLED, 1); RCU_UC_EVENTS, INTERRUPTS_ENABLED, 1);
/** /**
* Call Test SMU message with 0x20000 offset to trigger SMU start * Call Test SMU message with 0x20000 offset to trigger SMU start
*/ */
smu7_send_msg_to_smc_offset(smumgr); smu7_send_msg_to_smc_offset(hwmgr);
/* Wait for done bit to be set */ /* Wait for done bit to be set */
SMUM_WAIT_VFPF_INDIRECT_FIELD_UNEQUAL(smumgr, SMC_IND, SMUM_WAIT_VFPF_INDIRECT_FIELD_UNEQUAL(hwmgr, SMC_IND,
SMU_STATUS, SMU_DONE, 0); SMU_STATUS, SMU_DONE, 0);
/* Check pass/failed indicator */ /* Check pass/failed indicator */
if (1 != SMUM_READ_VFPF_INDIRECT_FIELD(smumgr->device, if (1 != SMUM_READ_VFPF_INDIRECT_FIELD(hwmgr->device,
CGS_IND_REG__SMC, SMU_STATUS, SMU_PASS)) { CGS_IND_REG__SMC, SMU_STATUS, SMU_PASS)) {
pr_err("SMU Firmware start failed\n"); pr_err("SMU Firmware start failed\n");
return -EINVAL; return -EINVAL;
} }
/* Wait for firmware to initialize */ /* Wait for firmware to initialize */
SMUM_WAIT_VFPF_INDIRECT_FIELD(smumgr, SMC_IND, SMUM_WAIT_VFPF_INDIRECT_FIELD(hwmgr, SMC_IND,
FIRMWARE_FLAGS, INTERRUPTS_ENABLED, 1); FIRMWARE_FLAGS, INTERRUPTS_ENABLED, 1);
return 0; return 0;
} }
static int tonga_start_in_non_protection_mode(struct pp_smumgr *smumgr) static int tonga_start_in_non_protection_mode(struct pp_hwmgr *hwmgr)
{ {
int result = 0; int result = 0;
/* wait for smc boot up */ /* wait for smc boot up */
SMUM_WAIT_VFPF_INDIRECT_FIELD_UNEQUAL(smumgr, SMC_IND, SMUM_WAIT_VFPF_INDIRECT_FIELD_UNEQUAL(hwmgr, SMC_IND,
RCU_UC_EVENTS, boot_seq_done, 0); RCU_UC_EVENTS, boot_seq_done, 0);
/*Clear firmware interrupt enable flag*/ /*Clear firmware interrupt enable flag*/
cgs_write_ind_register(smumgr->device, CGS_IND_REG__SMC, cgs_write_ind_register(hwmgr->device, CGS_IND_REG__SMC,
ixFIRMWARE_FLAGS, 0); ixFIRMWARE_FLAGS, 0);
SMUM_WRITE_VFPF_INDIRECT_FIELD(smumgr->device, CGS_IND_REG__SMC, SMUM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
SMC_SYSCON_RESET_CNTL, rst_reg, 1); SMC_SYSCON_RESET_CNTL, rst_reg, 1);
result = smu7_upload_smu_firmware_image(smumgr); result = smu7_upload_smu_firmware_image(hwmgr);
if (result != 0) if (result != 0)
return result; return result;
/* Set smc instruct start point at 0x0 */ /* Set smc instruct start point at 0x0 */
smu7_program_jump_on_start(smumgr); smu7_program_jump_on_start(hwmgr);
SMUM_WRITE_VFPF_INDIRECT_FIELD(smumgr->device, CGS_IND_REG__SMC, SMUM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
SMC_SYSCON_CLOCK_CNTL_0, ck_disable, 0); SMC_SYSCON_CLOCK_CNTL_0, ck_disable, 0);
/*De-assert reset*/ /*De-assert reset*/
SMUM_WRITE_VFPF_INDIRECT_FIELD(smumgr->device, CGS_IND_REG__SMC, SMUM_WRITE_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
SMC_SYSCON_RESET_CNTL, rst_reg, 0); SMC_SYSCON_RESET_CNTL, rst_reg, 0);
/* Wait for firmware to initialize */ /* Wait for firmware to initialize */
SMUM_WAIT_VFPF_INDIRECT_FIELD(smumgr, SMC_IND, SMUM_WAIT_VFPF_INDIRECT_FIELD(hwmgr, SMC_IND,
FIRMWARE_FLAGS, INTERRUPTS_ENABLED, 1); FIRMWARE_FLAGS, INTERRUPTS_ENABLED, 1);
return result; return result;
} }
static int tonga_start_smu(struct pp_smumgr *smumgr) static int tonga_start_smu(struct pp_hwmgr *hwmgr)
{ {
int result; int result;
/* Only start SMC if SMC RAM is not running */ /* Only start SMC if SMC RAM is not running */
if (!(smu7_is_smc_ram_running(smumgr) || if (!(smu7_is_smc_ram_running(hwmgr) ||
cgs_is_virtualization_enabled(smumgr->device))) { cgs_is_virtualization_enabled(hwmgr->device))) {
/*Check if SMU is running in protected mode*/ /*Check if SMU is running in protected mode*/
if (0 == SMUM_READ_VFPF_INDIRECT_FIELD(smumgr->device, CGS_IND_REG__SMC, if (0 == SMUM_READ_VFPF_INDIRECT_FIELD(hwmgr->device, CGS_IND_REG__SMC,
SMU_FIRMWARE, SMU_MODE)) { SMU_FIRMWARE, SMU_MODE)) {
result = tonga_start_in_non_protection_mode(smumgr); result = tonga_start_in_non_protection_mode(hwmgr);
if (result) if (result)
return result; return result;
} else { } else {
result = tonga_start_in_protection_mode(smumgr); result = tonga_start_in_protection_mode(hwmgr);
if (result) if (result)
return result; return result;
} }
} }
result = smu7_request_smu_load_fw(smumgr); result = smu7_request_smu_load_fw(hwmgr);
return result; return result;
} }
...@@ -167,7 +167,7 @@ static int tonga_start_smu(struct pp_smumgr *smumgr) ...@@ -167,7 +167,7 @@ static int tonga_start_smu(struct pp_smumgr *smumgr)
* @param smcAddress the address in the SMC RAM to access. * @param smcAddress the address in the SMC RAM to access.
* @param value to write to the SMC SRAM. * @param value to write to the SMC SRAM.
*/ */
static int tonga_smu_init(struct pp_smumgr *smumgr) static int tonga_smu_init(struct pp_hwmgr *hwmgr)
{ {
struct tonga_smumgr *tonga_priv = NULL; struct tonga_smumgr *tonga_priv = NULL;
int i; int i;
...@@ -176,9 +176,9 @@ static int tonga_smu_init(struct pp_smumgr *smumgr) ...@@ -176,9 +176,9 @@ static int tonga_smu_init(struct pp_smumgr *smumgr)
if (tonga_priv == NULL) if (tonga_priv == NULL)
return -ENOMEM; return -ENOMEM;
smumgr->backend = tonga_priv; hwmgr->smumgr->backend = tonga_priv;
if (smu7_init(smumgr)) if (smu7_init(hwmgr))
return -EINVAL; return -EINVAL;
for (i = 0; i < SMU72_MAX_LEVELS_GRAPHICS; i++) for (i = 0; i < SMU72_MAX_LEVELS_GRAPHICS; i++)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment