diff options
author | Kevin Wang <kevin1.wang@amd.com> | 2019-05-21 15:37:24 +0800 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2019-06-21 18:59:32 -0500 |
commit | 8f30a16d3ac15f61aa7a02b77191aafe44912654 (patch) | |
tree | a261b489d7f734978e6535164b04ae1c72968b75 /drivers/gpu/drm/amd/powerplay/vega20_ppt.c | |
parent | a259714bb26a5d107d5d0d742afd509c350441f4 (diff) |
drm/amd/powerplay: move od_default_setting callback to asic file
the set default od_setting is asic related function,
so move thic code to vega20_ppt file.
Signed-off-by: Kevin Wang <kevin1.wang@amd.com>
Reviewed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/powerplay/vega20_ppt.c')
-rw-r--r-- | drivers/gpu/drm/amd/powerplay/vega20_ppt.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c index b2fe65c33e9e..33634f3b7fae 100644 --- a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c +++ b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c @@ -1689,6 +1689,44 @@ static int vega20_get_metrics_table(struct smu_context *smu, return ret; } + +static int vega20_set_default_od_settings(struct smu_context *smu, + bool initialize) +{ + struct smu_table_context *table_context = &smu->smu_table; + int ret; + + if (initialize) { + if (table_context->overdrive_table) + return -EINVAL; + + table_context->overdrive_table = kzalloc(sizeof(OverDriveTable_t), GFP_KERNEL); + + if (!table_context->overdrive_table) + return -ENOMEM; + + ret = smu_update_table(smu, SMU_TABLE_OVERDRIVE, + table_context->overdrive_table, false); + if (ret) { + pr_err("Failed to export over drive table!\n"); + return ret; + } + + ret = vega20_set_default_od8_setttings(smu); + if (ret) + return ret; + } + + ret = smu_update_table(smu, SMU_TABLE_OVERDRIVE, + table_context->overdrive_table, true); + if (ret) { + pr_err("Failed to import over drive table!\n"); + return ret; + } + + return 0; +} + static int vega20_get_od_percentage(struct smu_context *smu, enum smu_clk_type clk_type) { @@ -3228,11 +3266,11 @@ static const struct pptable_funcs vega20_ppt_funcs = { .print_clk_levels = vega20_print_clk_levels, .force_clk_levels = vega20_force_clk_levels, .get_clock_by_type_with_latency = vega20_get_clock_by_type_with_latency, - .set_default_od8_settings = vega20_set_default_od8_setttings, .get_od_percentage = vega20_get_od_percentage, .get_power_profile_mode = vega20_get_power_profile_mode, .set_power_profile_mode = vega20_set_power_profile_mode, .set_od_percentage = vega20_set_od_percentage, + .set_default_od_settings = vega20_set_default_od_settings, .od_edit_dpm_table = vega20_odn_edit_dpm_table, .dpm_set_uvd_enable = vega20_dpm_set_uvd_enable, .dpm_set_vce_enable = vega20_dpm_set_vce_enable, |