Signed-off-by: Rex Zhu <[email protected]>
---
 drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c | 51 ++++++++++++++++++--------
 1 file changed, 36 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c 
b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c
index 7aa5ca8..2f73c04 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c
@@ -1234,13 +1234,18 @@ static int cz_phm_force_dpm_highest(struct pp_hwmgr 
*hwmgr)
 {
        struct cz_hwmgr *cz_hwmgr = (struct cz_hwmgr *)(hwmgr->backend);
 
-       if (cz_hwmgr->sclk_dpm.soft_min_clk !=
-                               cz_hwmgr->sclk_dpm.soft_max_clk)
-               smum_send_msg_to_smc_with_parameter(hwmgr->smumgr,
-                                               PPSMC_MSG_SetSclkSoftMin,
-                                               cz_get_sclk_level(hwmgr,
-                                               cz_hwmgr->sclk_dpm.soft_max_clk,
-                                               PPSMC_MSG_SetSclkSoftMin));
+       smum_send_msg_to_smc_with_parameter(hwmgr->smumgr,
+                                       PPSMC_MSG_SetSclkSoftMin,
+                                       cz_get_sclk_level(hwmgr,
+                                       cz_hwmgr->sclk_dpm.soft_max_clk,
+                                       PPSMC_MSG_SetSclkSoftMin));
+
+       smum_send_msg_to_smc_with_parameter(hwmgr->smumgr,
+                               PPSMC_MSG_SetSclkSoftMax,
+                               cz_get_sclk_level(hwmgr,
+                               cz_hwmgr->sclk_dpm.soft_max_clk,
+                               PPSMC_MSG_SetSclkSoftMax));
+
        return 0;
 }
 
@@ -1286,18 +1291,34 @@ static int cz_phm_force_dpm_lowest(struct pp_hwmgr 
*hwmgr)
 {
        struct cz_hwmgr *cz_hwmgr = (struct cz_hwmgr *)(hwmgr->backend);
 
-       if (cz_hwmgr->sclk_dpm.soft_min_clk !=
-                               cz_hwmgr->sclk_dpm.soft_max_clk) {
-               cz_hwmgr->sclk_dpm.soft_max_clk =
-                       cz_hwmgr->sclk_dpm.soft_min_clk;
+       smum_send_msg_to_smc_with_parameter(hwmgr->smumgr,
+                       PPSMC_MSG_SetSclkSoftMax,
+                       cz_get_sclk_level(hwmgr,
+                       cz_hwmgr->sclk_dpm.soft_min_clk,
+                       PPSMC_MSG_SetSclkSoftMax));
 
-               smum_send_msg_to_smc_with_parameter(hwmgr->smumgr,
+       smum_send_msg_to_smc_with_parameter(hwmgr->smumgr,
+                               PPSMC_MSG_SetSclkSoftMin,
+                               cz_get_sclk_level(hwmgr,
+                               cz_hwmgr->sclk_dpm.soft_min_clk,
+                               PPSMC_MSG_SetSclkSoftMin));
+
+       return 0;
+}
+
+static int cz_phm_force_dpm_sclk(struct pp_hwmgr *hwmgr, uint32_t sclk)
+{
+       smum_send_msg_to_smc_with_parameter(hwmgr->smumgr,
+                               PPSMC_MSG_SetSclkSoftMin,
+                               cz_get_sclk_level(hwmgr,
+                               sclk,
+                               PPSMC_MSG_SetSclkSoftMin));
+
+       smum_send_msg_to_smc_with_parameter(hwmgr->smumgr,
                                PPSMC_MSG_SetSclkSoftMax,
                                cz_get_sclk_level(hwmgr,
-                               cz_hwmgr->sclk_dpm.soft_max_clk,
+                               sclk,
                                PPSMC_MSG_SetSclkSoftMax));
-       }
-
        return 0;
 }
 
-- 
1.9.1

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

Reply via email to