implement sensor interface of feature mask for debugfs.

Change-Id: Ia085aab4c82b978e1e8c8ddc3ca6278b9dec8005
Signed-off-by: Xiaomeng Hou <xiaomeng....@amd.com>
---
 drivers/gpu/drm/amd/powerplay/inc/smu_v12_0.h |  3 ++
 drivers/gpu/drm/amd/powerplay/renoir_ppt.c    |  1 +
 drivers/gpu/drm/amd/powerplay/smu_v12_0.c     | 29 +++++++++++++++++++
 3 files changed, 33 insertions(+)

diff --git a/drivers/gpu/drm/amd/powerplay/inc/smu_v12_0.h 
b/drivers/gpu/drm/amd/powerplay/inc/smu_v12_0.h
index 8b4069c8e668..1e58eefea77b 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/smu_v12_0.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/smu_v12_0.h
@@ -76,6 +76,9 @@ int smu_v12_0_fini_smc_tables(struct smu_context *smu);
 
 int smu_v12_0_populate_smc_tables(struct smu_context *smu);
 
+int smu_v12_0_get_enabled_mask(struct smu_context *smu,
+                                     uint32_t *feature_mask, uint32_t num);
+
 int smu_v12_0_get_current_clk_freq(struct smu_context *smu,
                                          enum smu_clk_type clk_id,
                                          uint32_t *value);
diff --git a/drivers/gpu/drm/amd/powerplay/renoir_ppt.c 
b/drivers/gpu/drm/amd/powerplay/renoir_ppt.c
index 1c26d7798146..1e6b79cff23c 100644
--- a/drivers/gpu/drm/amd/powerplay/renoir_ppt.c
+++ b/drivers/gpu/drm/amd/powerplay/renoir_ppt.c
@@ -899,6 +899,7 @@ static const struct pptable_funcs renoir_ppt_funcs = {
        .init_smc_tables = smu_v12_0_init_smc_tables,
        .fini_smc_tables = smu_v12_0_fini_smc_tables,
        .populate_smc_tables = smu_v12_0_populate_smc_tables,
+       .get_enabled_mask = smu_v12_0_get_enabled_mask,
        .get_current_clk_freq = smu_v12_0_get_current_clk_freq,
        .get_dpm_ultimate_freq = smu_v12_0_get_dpm_ultimate_freq,
        .mode2_reset = smu_v12_0_mode2_reset,
diff --git a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c 
b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
index 9022e60ac9dc..f6993c470fd2 100644
--- a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
+++ b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c
@@ -354,6 +354,35 @@ int smu_v12_0_populate_smc_tables(struct smu_context *smu)
        return smu_update_table(smu, SMU_TABLE_DPMCLOCKS, 0, 
smu_table->clocks_table, false);
 }
 
+int smu_v12_0_get_enabled_mask(struct smu_context *smu,
+                                     uint32_t *feature_mask, uint32_t num)
+{
+       uint32_t feature_mask_high = 0, feature_mask_low = 0;
+       int ret = 0;
+
+       if (!feature_mask || num < 2)
+               return -EINVAL;
+
+       ret = smu_send_smc_msg(smu, SMU_MSG_GetEnabledSmuFeaturesHigh);
+       if (ret)
+               return ret;
+       ret = smu_read_smc_arg(smu, &feature_mask_high);
+       if (ret)
+               return ret;
+
+       ret = smu_send_smc_msg(smu, SMU_MSG_GetEnabledSmuFeaturesLow);
+       if (ret)
+               return ret;
+       ret = smu_read_smc_arg(smu, &feature_mask_low);
+       if (ret)
+               return ret;
+
+       feature_mask[0] = feature_mask_low;
+       feature_mask[1] = feature_mask_high;
+
+       return ret;
+}
+
 int smu_v12_0_get_current_clk_freq(struct smu_context *smu,
                                          enum smu_clk_type clk_id,
                                          uint32_t *value)
-- 
2.24.0

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to