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 | 35 +++++++++++++++++--
1 file changed, 33 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..f90d274c0f67 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,43 @@ 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,
+ struct smu_feature_bits *feature_mask)
+{
+ uint32_t *feature_mask_high;
+ uint32_t *feature_mask_low;
+ int ret = 0;
+ struct smu_msg_ctl *ctl = &smu->msg_ctl;
+
+ if (!feature_mask)
+ return -EINVAL;
+
+ feature_mask_low = &((uint32_t *)feature_mask)[0];
+ feature_mask_high = &((uint32_t *)feature_mask)[1];
+
+ struct smu_msg_args args = {
+ .msg = SMU_MSG_GetEnabledSmuFeatures,
+ .num_args = 0,
+ .num_out_args = 2,
+ };
+
+ ret = ctl->ops->send_msg(ctl, &args);
+
+ if (ret)
+ return ret;
+
+ *feature_mask_low = args.out_args[0];
+ *feature_mask_high = args.out_args[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 +1387,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