From: Aaron Liu <[email protected]>

add and map smu tables for renoir

Signed-off-by: Aaron Liu <[email protected]>
Reviewed-by: Kenneth Feng <[email protected]>
Reviewed-by: Evan Quan <[email protected]>
Reviewed-by: Kevin Wang <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 .../gpu/drm/amd/powerplay/inc/amdgpu_smu.h    |  2 ++
 drivers/gpu/drm/amd/powerplay/renoir_ppt.c    | 27 +++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h 
b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
index 7b352c5a451e..4d156e5ab2e8 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
@@ -231,6 +231,8 @@ enum smu_table_id
 {
        SMU_TABLE_PPTABLE = 0,
        SMU_TABLE_WATERMARKS,
+       SMU_TABLE_CUSTOM_DPM,
+       SMU_TABLE_DPMCLOCKS,
        SMU_TABLE_AVFS,
        SMU_TABLE_AVFS_PSM_DEBUG,
        SMU_TABLE_AVFS_FUSE_OVERRIDE,
diff --git a/drivers/gpu/drm/amd/powerplay/renoir_ppt.c 
b/drivers/gpu/drm/amd/powerplay/renoir_ppt.c
index 2580383ff49b..7c3dc150eaa3 100644
--- a/drivers/gpu/drm/amd/powerplay/renoir_ppt.c
+++ b/drivers/gpu/drm/amd/powerplay/renoir_ppt.c
@@ -33,6 +33,12 @@
 #define MSG_MAP(msg, index) \
        [SMU_MSG_##msg] = {1, (index)}
 
+#define TAB_MAP_VALID(tab) \
+       [SMU_TABLE_##tab] = {1, TABLE_##tab}
+
+#define TAB_MAP_INVALID(tab) \
+       [SMU_TABLE_##tab] = {0, TABLE_##tab}
+
 static struct smu_12_0_cmn2aisc_mapping renoir_message_map[SMU_MSG_MAX_COUNT] 
= {
        MSG_MAP(TestMessage,                    PPSMC_MSG_TestMessage),
        MSG_MAP(GetSmuVersion,                  PPSMC_MSG_GetSmuVersion),
@@ -97,6 +103,13 @@ static struct smu_12_0_cmn2aisc_mapping 
renoir_message_map[SMU_MSG_MAX_COUNT] =
        MSG_MAP(SetHardMinFclkByFreq,           PPSMC_MSG_SetHardMinFclkByFreq),
 };
 
+static struct smu_12_0_cmn2aisc_mapping renoir_table_map[SMU_TABLE_COUNT] = {
+       TAB_MAP_VALID(WATERMARKS),
+       TAB_MAP_INVALID(CUSTOM_DPM),
+       TAB_MAP_VALID(DPMCLOCKS),
+       TAB_MAP_VALID(SMU_METRICS),
+};
+
 static int renoir_get_smu_msg_index(struct smu_context *smc, uint32_t index)
 {
        struct smu_12_0_cmn2aisc_mapping mapping;
@@ -111,9 +124,23 @@ static int renoir_get_smu_msg_index(struct smu_context 
*smc, uint32_t index)
        return mapping.map_to;
 }
 
+static int renoir_get_smu_table_index(struct smu_context *smc, uint32_t index)
+{
+       struct smu_12_0_cmn2aisc_mapping mapping;
+
+       if (index >= SMU_TABLE_COUNT)
+               return -EINVAL;
+
+       mapping = renoir_table_map[index];
+       if (!(mapping.valid_mapping))
+               return -EINVAL;
+
+       return mapping.map_to;
+}
 
 static const struct pptable_funcs renoir_ppt_funcs = {
        .get_smu_msg_index = renoir_get_smu_msg_index,
+       .get_smu_table_index = renoir_get_smu_table_index,
        .set_power_state = NULL,
 };
 
-- 
2.20.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to