drm/amdgpu: add power up/down UMSCH ppt callback
authorLang Yu <Lang.Yu@amd.com>
Fri, 2 Jun 2023 00:36:28 +0000 (08:36 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 13 Oct 2023 15:00:08 +0000 (11:00 -0400)
Add ppt callback to power up/down UMSCH.

v2: squash in updates (Alex)

Signed-off-by: Lang Yu <Lang.Yu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h
drivers/gpu/drm/amd/pm/swsmu/inc/smu_types.h
drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_0_ppt.c

index c8cd4e3a3d3b11f77d0591148a572462a9a2d71a..190a2ce38ac1df3cdcec07ddabface83179c2aac 100644 (file)
@@ -1350,6 +1350,12 @@ struct pptable_funcs {
         *                       management.
         */
        int (*dpm_set_vpe_enable)(struct smu_context *smu, bool enable);
+
+       /**
+        * @dpm_set_umsch_mm_enable: Enable/disable UMSCH engine dynamic power
+        *                       management.
+        */
+       int (*dpm_set_umsch_mm_enable)(struct smu_context *smu, bool enable);
 };
 
 typedef enum {
index 3958c9cb4e918c4495c8b0e10a9c7f659cb04511..098267ec0a832221cccc0e745159532000dc1c52 100644 (file)
        __SMU_DUMMY_MAP(McaBankCeDumpDW),       \
        __SMU_DUMMY_MAP(SelectPLPDMode),        \
        __SMU_DUMMY_MAP(PowerUpVpe),    \
-       __SMU_DUMMY_MAP(PowerDownVpe),
+       __SMU_DUMMY_MAP(PowerDownVpe), \
+       __SMU_DUMMY_MAP(PowerUpUmsch),  \
+       __SMU_DUMMY_MAP(PowerDownUmsch),        \
+       __SMU_DUMMY_MAP(SetSoftMaxVpe), \
+       __SMU_DUMMY_MAP(SetSoftMinVpe),
 
 #undef __SMU_DUMMY_MAP
 #define __SMU_DUMMY_MAP(type)  SMU_MSG_##type
index 5db29fcf699d053e878e4892b5c12b82ea8eeda2..eb613687513a408160ed16fa3270ff01a97bbd3a 100644 (file)
@@ -104,6 +104,10 @@ static struct cmn2asic_msg_mapping smu_v14_0_0_message_map[SMU_MSG_MAX_COUNT] =
        MSG_MAP(SetHardMinIspxclkByFreq,        PPSMC_MSG_SetHardMinIspxclkByFreq,              1),
        MSG_MAP(PowerUpVpe,                                     PPSMC_MSG_PowerUpVpe,           1),
        MSG_MAP(PowerDownVpe,                           PPSMC_MSG_PowerDownVpe,         1),
+       MSG_MAP(PowerUpUmsch,                           PPSMC_MSG_PowerUpUmsch,         1),
+       MSG_MAP(PowerDownUmsch,                         PPSMC_MSG_PowerDownUmsch,       1),
+       MSG_MAP(SetSoftMaxVpe,                          PPSMC_MSG_SetSoftMaxVpe,                1),
+       MSG_MAP(SetSoftMinVpe,                          PPSMC_MSG_SetSoftMinVpe,        1),
 };
 
 static struct cmn2asic_mapping smu_v14_0_0_feature_mask_map[SMU_FEATURE_COUNT] = {
@@ -1025,6 +1029,14 @@ static int smu_v14_0_0_set_vpe_enable(struct smu_context *smu,
                                               0, NULL);
 }
 
+static int smu_v14_0_0_set_umsch_mm_enable(struct smu_context *smu,
+                             bool enable)
+{
+       return smu_cmn_send_smc_msg_with_param(smu, enable ?
+                                              SMU_MSG_PowerUpUmsch : SMU_MSG_PowerDownUmsch,
+                                              0, NULL);
+}
+
 static const struct pptable_funcs smu_v14_0_0_ppt_funcs = {
        .check_fw_status = smu_v14_0_check_fw_status,
        .check_fw_version = smu_v14_0_check_fw_version,
@@ -1054,6 +1066,7 @@ static const struct pptable_funcs smu_v14_0_0_ppt_funcs = {
        .set_fine_grain_gfx_freq_parameters = smu_v14_0_0_set_fine_grain_gfx_freq_parameters,
        .set_gfx_power_up_by_imu = smu_v14_0_set_gfx_power_up_by_imu,
        .dpm_set_vpe_enable = smu_v14_0_0_set_vpe_enable,
+       .dpm_set_umsch_mm_enable = smu_v14_0_0_set_umsch_mm_enable,
 };
 
 static void smu_v14_0_0_set_smu_mailbox_registers(struct smu_context *smu)