summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/powerplay/vega20_ppt.c
diff options
context:
space:
mode:
authorKevin Wang <kevin1.wang@amd.com>2019-05-21 15:19:22 +0800
committerAlex Deucher <alexander.deucher@amd.com>2019-06-21 18:59:32 -0500
commita259714bb26a5d107d5d0d742afd509c350441f4 (patch)
treeb45f8b7d21f105ba30434c6f15d13a25ef974c48 /drivers/gpu/drm/amd/powerplay/vega20_ppt.c
parentc7a063a2f21b2ec83f4a3ea2494dc10b52dc3589 (diff)
downloadlinux-stable-a259714bb26a5d107d5d0d742afd509c350441f4.tar.gz
linux-stable-a259714bb26a5d107d5d0d742afd509c350441f4.tar.bz2
linux-stable-a259714bb26a5d107d5d0d742afd509c350441f4.zip
drm/amd/powerplay: move od8_setting helper function to vega20_ppt
these callback functions is only used for vega20 asic, to be compatible other asics,need to move this 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.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c
index a6d73162e3ed..b2fe65c33e9e 100644
--- a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c
+++ b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c
@@ -2446,6 +2446,34 @@ static int vega20_update_specified_od8_value(struct smu_context *smu,
return 0;
}
+static int vega20_update_od8_settings(struct smu_context *smu,
+ uint32_t index,
+ uint32_t value)
+{
+ struct smu_table_context *table_context = &smu->smu_table;
+ int ret;
+
+ 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_update_specified_od8_value(smu, index, value);
+ 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_set_od_percentage(struct smu_context *smu,
enum smu_clk_type clk_type,
uint32_t value)
@@ -2492,7 +2520,7 @@ static int vega20_set_od_percentage(struct smu_context *smu,
od_clk /= 100;
od_clk += golden_dpm_table->dpm_levels[golden_dpm_table->count - 1].value;
- ret = smu_update_od8_settings(smu, index, od_clk);
+ ret = vega20_update_od8_settings(smu, index, od_clk);
if (ret) {
pr_err("[Setoverdrive] failed to set od clk!\n");
goto set_od_failed;
@@ -3204,7 +3232,6 @@ static const struct pptable_funcs vega20_ppt_funcs = {
.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,
- .update_specified_od8_value = vega20_update_specified_od8_value,
.set_od_percentage = vega20_set_od_percentage,
.od_edit_dpm_table = vega20_odn_edit_dpm_table,
.dpm_set_uvd_enable = vega20_dpm_set_uvd_enable,