summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c
index 98e38cc23d52..7cf522609583 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c
@@ -734,6 +734,11 @@ static int smu_v14_0_1_get_dpm_freq_by_index(struct smu_context *smu,
return -EINVAL;
*freq = clk_table->FclkClocks_Freq[dpm_level];
break;
+ case SMU_DCEFCLK:
+ if (dpm_level >= clk_table->NumDcfClkLevelsEnabled)
+ return -EINVAL;
+ *freq = clk_table->DcfClocks[dpm_level];
+ break;
default:
return -EINVAL;
}
@@ -778,6 +783,11 @@ static int smu_v14_0_0_get_dpm_freq_by_index(struct smu_context *smu,
return -EINVAL;
*freq = clk_table->FclkClocks_Freq[dpm_level];
break;
+ case SMU_DCEFCLK:
+ if (dpm_level >= clk_table->NumDcfClkLevelsEnabled)
+ return -EINVAL;
+ *freq = clk_table->DcfClocks[dpm_level];
+ break;
default:
return -EINVAL;
}
@@ -1141,6 +1151,9 @@ static int smu_v14_0_1_get_dpm_level_count(struct smu_context *smu,
case SMU_FCLK:
*count = clk_table->NumFclkLevelsEnabled;
break;
+ case SMU_DCEFCLK:
+ *count = clk_table->NumDcfClkLevelsEnabled;
+ break;
default:
break;
}
@@ -1170,6 +1183,9 @@ static int smu_v14_0_0_get_dpm_level_count(struct smu_context *smu,
case SMU_FCLK:
*count = clk_table->NumFclkLevelsEnabled;
break;
+ case SMU_DCEFCLK:
+ *count = clk_table->NumDcfClkLevelsEnabled;
+ break;
default:
break;
}
@@ -1236,6 +1252,18 @@ static int smu_v14_0_0_emit_clk_levels(struct smu_context *smu,
cur_value == value ? "*" : "");
}
break;
+ case SMU_DCEFCLK:
+ ret = smu_v14_0_common_get_dpm_level_count(smu, clk_type, &count);
+ if (ret)
+ return ret;
+
+ for (i = 0; i < count; i++) {
+ ret = smu_v14_0_common_get_dpm_freq_by_index(smu, clk_type, i, &value);
+ if (ret)
+ return ret;
+ size += sysfs_emit_at(buf, size, "%d: %uMhz\n", i, value);
+ }
+ break;
case SMU_GFXCLK:
case SMU_SCLK:
ret = smu_v14_0_0_get_current_clk_freq(smu, clk_type, &cur_value);