summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLijo Lazar <lijo.lazar@amd.com>2025-11-26 10:17:06 +0300
committerAlex Deucher <alexander.deucher@amd.com>2025-12-08 22:13:46 +0300
commitb824bf63894f42adbc8b29fd78e4ca1cee8c3779 (patch)
tree3db3236fda7019eabc57843357bd3a3104f6b1f2
parent46905fb85ec7c6c4013a0a94dabbf454a9780b5e (diff)
downloadlinux-b824bf63894f42adbc8b29fd78e4ca1cee8c3779.tar.xz
drm/amd/pm: Use emit_clk_levels in renoir
Move to emit_clk_levels from print_clk_levels Signed-off-by: Lijo Lazar <lijo.lazar@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c52
1 files changed, 26 insertions, 26 deletions
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c
index eaa9ea162f16..45c0afb47c51 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c
@@ -491,11 +491,12 @@ static int renoir_set_fine_grain_gfx_freq_parameters(struct smu_context *smu)
return 0;
}
-static int renoir_print_clk_levels(struct smu_context *smu,
- enum smu_clk_type clk_type, char *buf)
+static int renoir_emit_clk_levels(struct smu_context *smu,
+ enum smu_clk_type clk_type, char *buf,
+ int *offset)
{
- int i, idx, size = 0, ret = 0, start_offset = 0;
uint32_t cur_value = 0, value = 0, count = 0, min = 0, max = 0;
+ int i, idx, size = *offset, ret = 0, start_offset = *offset;
SmuMetrics_t metrics;
bool cur_value_match_level = false;
@@ -505,9 +506,6 @@ static int renoir_print_clk_levels(struct smu_context *smu,
if (ret)
return ret;
- smu_cmn_get_sysfs_buf(&buf, &size);
- start_offset = size;
-
switch (clk_type) {
case SMU_OD_RANGE:
ret = smu_cmn_send_smc_msg_with_param(smu,
@@ -534,24 +532,24 @@ static int renoir_print_clk_levels(struct smu_context *smu,
/* retirve table returned paramters unit is MHz */
cur_value = metrics.ClockFrequency[CLOCK_GFXCLK];
ret = renoir_get_dpm_ultimate_freq(smu, SMU_GFXCLK, &min, &max);
- if (!ret) {
- /* driver only know min/max gfx_clk, Add level 1 for all other gfx clks */
- if (cur_value == max)
- i = 2;
- else if (cur_value == min)
- i = 0;
- else
- i = 1;
-
- size += sysfs_emit_at(buf, size, "0: %uMhz %s\n", min,
- i == 0 ? "*" : "");
- size += sysfs_emit_at(buf, size, "1: %uMhz %s\n",
- i == 1 ? cur_value : RENOIR_UMD_PSTATE_GFXCLK,
- i == 1 ? "*" : "");
- size += sysfs_emit_at(buf, size, "2: %uMhz %s\n", max,
- i == 2 ? "*" : "");
- }
- return size - start_offset;
+ if (ret)
+ return ret;
+ /* driver only know min/max gfx_clk, Add level 1 for all other gfx clks */
+ if (cur_value == max)
+ i = 2;
+ else if (cur_value == min)
+ i = 0;
+ else
+ i = 1;
+ size += sysfs_emit_at(buf, size, "0: %uMhz %s\n", min,
+ i == 0 ? "*" : "");
+ size += sysfs_emit_at(buf, size, "1: %uMhz %s\n",
+ i == 1 ? cur_value :
+ RENOIR_UMD_PSTATE_GFXCLK,
+ i == 1 ? "*" : "");
+ size += sysfs_emit_at(buf, size, "2: %uMhz %s\n", max,
+ i == 2 ? "*" : "");
+ break;
case SMU_SOCCLK:
count = NUM_SOCCLK_DPM_LEVELS;
cur_value = metrics.ClockFrequency[CLOCK_SOCCLK];
@@ -608,7 +606,9 @@ static int renoir_print_clk_levels(struct smu_context *smu,
break;
}
- return size - start_offset;
+ *offset += size - start_offset;
+
+ return 0;
}
static enum amd_pm_state_type renoir_get_current_power_state(struct smu_context *smu)
@@ -1450,7 +1450,7 @@ static int renoir_get_enabled_mask(struct smu_context *smu,
static const struct pptable_funcs renoir_ppt_funcs = {
.set_power_state = NULL,
- .print_clk_levels = renoir_print_clk_levels,
+ .emit_clk_levels = renoir_emit_clk_levels,
.get_current_power_state = renoir_get_current_power_state,
.dpm_set_vcn_enable = renoir_dpm_set_vcn_enable,
.dpm_set_jpeg_enable = renoir_dpm_set_jpeg_enable,