Use multi args for get_enabled_mask to fix is_dpm_running

Signed-off-by: Pratik Vishwakarma <[email protected]>
---
 .../drm/amd/pm/swsmu/smu15/smu_v15_0_0_ppt.c  | 30 +++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu15/smu_v15_0_0_ppt.c 
b/drivers/gpu/drm/amd/pm/swsmu/smu15/smu_v15_0_0_ppt.c
index 2987ff1b13e4..53c96b80f782 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu15/smu_v15_0_0_ppt.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu15/smu_v15_0_0_ppt.c
@@ -479,12 +479,38 @@ static int smu_v15_0_0_read_sensor(struct smu_context 
*smu,
        return ret;
 }
 
+static int smu_v15_0_0_get_enabled_mask(struct smu_context *smu,
+                                       uint64_t *feature_mask)
+{
+       uint32_t *feature_mask_high;
+       uint32_t *feature_mask_low;
+       int ret = 0;
+       uint32_t read_arg[2] = {};
+
+       if (!feature_mask)
+               return -EINVAL;
+
+       feature_mask_low = &((uint32_t *)feature_mask)[0];
+       feature_mask_high = &((uint32_t *)feature_mask)[1];
+
+       ret = smu_cmn_send_smc_msg_with_multi_param(smu,
+                               SMU_MSG_GetEnabledSmuFeatures,
+                               NULL, read_arg, 0, 2);
+       if (ret)
+               return ret;
+
+       *feature_mask_low = read_arg[0];
+       *feature_mask_high = read_arg[1];
+
+       return ret;
+}
+
 static bool smu_v15_0_0_is_dpm_running(struct smu_context *smu)
 {
        int ret = 0;
        struct smu_feature_bits feature_enabled;
 
-       ret = smu_cmn_get_enabled_mask(smu, &feature_enabled);
+       ret = smu_v15_0_0_get_enabled_mask(smu, &feature_enabled);
 
        if (ret)
                return false;
@@ -1356,7 +1382,7 @@ static const struct pptable_funcs smu_v15_0_0_ppt_funcs = 
{
        .is_dpm_running = smu_v15_0_0_is_dpm_running,
        .set_watermarks_table = smu_v15_0_0_set_watermarks_table,
        .get_gpu_metrics = smu_v15_0_0_get_gpu_metrics,
-       .get_enabled_mask = smu_cmn_get_enabled_mask,
+       .get_enabled_mask = smu_v15_0_0_get_enabled_mask,
        .get_pp_feature_mask = smu_cmn_get_pp_feature_mask,
        .set_driver_table_location = smu_v15_0_set_driver_table_location,
        .gfx_off_control = smu_v15_0_gfx_off_control,
-- 
2.43.0

Reply via email to