Move to emit_clock_levels from print_clock_levels

Signed-off-by: Lijo Lazar <[email protected]>
---
 .../drm/amd/pm/powerplay/hwmgr/vega12_hwmgr.c | 52 +++++++++++++------
 1 file changed, 35 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega12_hwmgr.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega12_hwmgr.c
index 10fd4e9f016c..5a987a535e73 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega12_hwmgr.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega12_hwmgr.c
@@ -2271,11 +2271,12 @@ static int vega12_get_current_pcie_link_speed(struct 
pp_hwmgr *hwmgr)
        return link_speed[speed_level];
 }
 
-static int vega12_print_clock_levels(struct pp_hwmgr *hwmgr,
-               enum pp_clock_type type, char *buf)
+static int vega12_emit_clock_levels(struct pp_hwmgr *hwmgr,
+                                   enum pp_clock_type type, char *buf,
+                                   int *offset)
 {
-       int i, now, size = 0;
        struct pp_clock_levels_with_latency clocks;
+       int i, now, size = *offset;
 
        switch (type) {
        case PP_SCLK:
@@ -2289,9 +2290,13 @@ static int vega12_print_clock_levels(struct pp_hwmgr 
*hwmgr,
                                "Attempt to get gfx clk levels Failed!",
                                return -1);
                for (i = 0; i < clocks.num_levels; i++)
-                       size += sprintf(buf + size, "%d: %uMhz %s\n",
-                               i, clocks.data[i].clocks_in_khz / 1000,
-                               (clocks.data[i].clocks_in_khz / 1000 == now / 
100) ? "*" : "");
+                       size += sysfs_emit_at(
+                               buf, size, "%d: %uMhz %s\n", i,
+                               clocks.data[i].clocks_in_khz / 1000,
+                               (clocks.data[i].clocks_in_khz / 1000 ==
+                                now / 100) ?
+                                       "*" :
+                                       "");
                break;
 
        case PP_MCLK:
@@ -2305,9 +2310,13 @@ static int vega12_print_clock_levels(struct pp_hwmgr 
*hwmgr,
                                "Attempt to get memory clk levels Failed!",
                                return -1);
                for (i = 0; i < clocks.num_levels; i++)
-                       size += sprintf(buf + size, "%d: %uMhz %s\n",
-                               i, clocks.data[i].clocks_in_khz / 1000,
-                               (clocks.data[i].clocks_in_khz / 1000 == now / 
100) ? "*" : "");
+                       size += sysfs_emit_at(
+                               buf, size, "%d: %uMhz %s\n", i,
+                               clocks.data[i].clocks_in_khz / 1000,
+                               (clocks.data[i].clocks_in_khz / 1000 ==
+                                now / 100) ?
+                                       "*" :
+                                       "");
                break;
 
        case PP_SOCCLK:
@@ -2323,9 +2332,12 @@ static int vega12_print_clock_levels(struct pp_hwmgr 
*hwmgr,
                                "Attempt to get soc clk levels Failed!",
                                return -1);
                for (i = 0; i < clocks.num_levels; i++)
-                       size += sprintf(buf + size, "%d: %uMhz %s\n",
-                               i, clocks.data[i].clocks_in_khz / 1000,
-                               (clocks.data[i].clocks_in_khz / 1000 == now) ? 
"*" : "");
+                       size += sysfs_emit_at(
+                               buf, size, "%d: %uMhz %s\n", i,
+                               clocks.data[i].clocks_in_khz / 1000,
+                               (clocks.data[i].clocks_in_khz / 1000 == now) ?
+                                       "*" :
+                                       "");
                break;
 
        case PP_DCEFCLK:
@@ -2341,9 +2353,12 @@ static int vega12_print_clock_levels(struct pp_hwmgr 
*hwmgr,
                                "Attempt to get dcef clk levels Failed!",
                                return -1);
                for (i = 0; i < clocks.num_levels; i++)
-                       size += sprintf(buf + size, "%d: %uMhz %s\n",
-                               i, clocks.data[i].clocks_in_khz / 1000,
-                               (clocks.data[i].clocks_in_khz / 1000 == now) ? 
"*" : "");
+                       size += sysfs_emit_at(
+                               buf, size, "%d: %uMhz %s\n", i,
+                               clocks.data[i].clocks_in_khz / 1000,
+                               (clocks.data[i].clocks_in_khz / 1000 == now) ?
+                                       "*" :
+                                       "");
                break;
 
        case PP_PCIE:
@@ -2352,7 +2367,10 @@ static int vega12_print_clock_levels(struct pp_hwmgr 
*hwmgr,
        default:
                break;
        }
-       return size;
+
+       *offset = size;
+
+       return 0;
 }
 
 static int vega12_apply_clocks_adjust_rules(struct pp_hwmgr *hwmgr)
@@ -2951,7 +2969,7 @@ static const struct pp_hwmgr_func vega12_hwmgr_funcs = {
        .set_watermarks_for_clocks_ranges = 
vega12_set_watermarks_for_clocks_ranges,
        .display_clock_voltage_request = vega12_display_clock_voltage_request,
        .force_clock_level = vega12_force_clock_level,
-       .print_clock_levels = vega12_print_clock_levels,
+       .emit_clock_levels = vega12_emit_clock_levels,
        .apply_clocks_adjust_rules =
                vega12_apply_clocks_adjust_rules,
        .pre_display_config_changed =
-- 
2.49.0

Reply via email to