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