]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/pm: Use emit_clk_levels in vangogh
authorLijo Lazar <lijo.lazar@amd.com>
Wed, 26 Nov 2025 07:03:52 +0000 (12:33 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 8 Dec 2025 19:13:43 +0000 (14:13 -0500)
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>
drivers/gpu/drm/amd/pm/swsmu/smu11/vangogh_ppt.c

index 9626da2dba584ab7745b04db5b5535421830b09d..34b3f8680a2ccde7b94ca097b43e87b7f1a98ecd 100644 (file)
@@ -559,13 +559,14 @@ static int vangogh_get_dpm_clk_limited(struct smu_context *smu, enum smu_clk_typ
        return 0;
 }
 
-static int vangogh_print_legacy_clk_levels(struct smu_context *smu,
-                       enum smu_clk_type clk_type, char *buf)
+static int vangogh_emit_legacy_clk_levels(struct smu_context *smu,
+                                          enum smu_clk_type clk_type, char *buf,
+                                          int *offset)
 {
+       int i, idx, size = *offset, ret = 0, start_offset = *offset;
        DpmClocks_t *clk_table = smu->smu_table.clocks_table;
        SmuMetrics_legacy_t metrics;
        struct smu_dpm_context *smu_dpm_ctx = &(smu->smu_dpm);
-       int i, idx, size = 0, ret = 0, start_offset = 0;
        uint32_t cur_value = 0, value = 0, count = 0;
        bool cur_value_match_level = false;
 
@@ -575,9 +576,6 @@ static int vangogh_print_legacy_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_SCLK:
                if (smu_dpm_ctx->dpm_level == AMD_DPM_FORCED_LEVEL_MANUAL) {
@@ -659,15 +657,18 @@ static int vangogh_print_legacy_clk_levels(struct smu_context *smu,
                break;
        }
 
-       return size - start_offset;
+       *offset += size - start_offset;
+
+       return 0;
 }
 
-static int vangogh_print_clk_levels(struct smu_context *smu,
-                       enum smu_clk_type clk_type, char *buf)
+static int vangogh_emit_clk_levels(struct smu_context *smu,
+                                   enum smu_clk_type clk_type, char *buf,
+                                   int *offset)
 {
+       int i, idx, size = *offset, ret = 0, start_offset = *offset;
        DpmClocks_t *clk_table = smu->smu_table.clocks_table;
        SmuMetrics_t metrics;
-       int i, idx, size = 0, ret = 0, start_offset = 0;
        uint32_t cur_value = 0, value = 0, count = 0;
        bool cur_value_match_level = false;
        uint32_t min, max;
@@ -678,9 +679,6 @@ static int vangogh_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_SCLK:
                size += sysfs_emit_at(buf, size, "%s:\n", "OD_SCLK");
@@ -781,18 +779,21 @@ static int vangogh_print_clk_levels(struct smu_context *smu,
                break;
        }
 
-       return size - start_offset;
+       *offset += size - start_offset;
+
+       return 0;
 }
 
-static int vangogh_common_print_clk_levels(struct smu_context *smu,
-                       enum smu_clk_type clk_type, char *buf)
+static int vangogh_common_emit_clk_levels(struct smu_context *smu,
+                                          enum smu_clk_type clk_type, char *buf,
+                                          int *offset)
 {
        int ret = 0;
 
        if (smu->smc_fw_if_version < 0x3)
-               ret = vangogh_print_legacy_clk_levels(smu, clk_type, buf);
+               ret = vangogh_emit_legacy_clk_levels(smu, clk_type, buf, offset);
        else
-               ret = vangogh_print_clk_levels(smu, clk_type, buf);
+               ret = vangogh_emit_clk_levels(smu, clk_type, buf, offset);
 
        return ret;
 }
@@ -2524,7 +2525,7 @@ static const struct pptable_funcs vangogh_ppt_funcs = {
        .interrupt_work = smu_v11_0_interrupt_work,
        .get_gpu_metrics = vangogh_common_get_gpu_metrics,
        .od_edit_dpm_table = vangogh_od_edit_dpm_table,
-       .print_clk_levels = vangogh_common_print_clk_levels,
+       .emit_clk_levels = vangogh_common_emit_clk_levels,
        .set_default_dpm_table = vangogh_set_default_dpm_tables,
        .set_fine_grain_gfx_freq_parameters = vangogh_set_fine_grain_gfx_freq_parameters,
        .notify_rlc_state = vangogh_notify_rlc_state,