For some products, baco parameter 1 is dummy and this doesn't trigger the baco 
entry/exit.
Parameter 0 is valid and these products don't depend on ras for baco sequence.

Signed-off-by: Kenneth Feng <kenneth.f...@amd.com>
---
 .../gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c    | 24 +++++++++++++------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c 
b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
index b6453ee6f8e6..3e1a3cf44a69 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
@@ -1495,15 +1495,25 @@ int smu_v11_0_baco_set_state(struct smu_context *smu, 
enum smu_baco_state state)
        mutex_lock(&smu_baco->mutex);
 
        if (state == SMU_BACO_STATE_ENTER) {
-               if (!ras || !ras->supported) {
-                       data = RREG32_SOC15(THM, 0, mmTHM_BACO_CNTL);
-                       data |= 0x80000000;
-                       WREG32_SOC15(THM, 0, mmTHM_BACO_CNTL, data);
-
+               switch (adev->asic_type) {
+               case CHIP_SIENNA_CICHLID:
+               case CHIP_NAVY_FLOUNDER:
+               case CHIP_DIMGREY_CAVEFISH:
                        ret = smu_cmn_send_smc_msg_with_param(smu, 
SMU_MSG_EnterBaco, 0, NULL);
-               } else {
-                       ret = smu_cmn_send_smc_msg_with_param(smu, 
SMU_MSG_EnterBaco, 1, NULL);
+                       break;
+               default:
+                       if (!ras || !ras->supported) {
+                               data = RREG32_SOC15(THM, 0, mmTHM_BACO_CNTL);
+                               data |= 0x80000000;
+                               WREG32_SOC15(THM, 0, mmTHM_BACO_CNTL, data);
+
+                               ret = smu_cmn_send_smc_msg_with_param(smu, 
SMU_MSG_EnterBaco, 0, NULL);
+                       } else {
+                         ret = smu_cmn_send_smc_msg_with_param(smu, 
SMU_MSG_EnterBaco, 1, NULL);
+                       }
+                       break;
                }
+
        } else {
                ret = smu_cmn_send_smc_msg(smu, SMU_MSG_ExitBaco, NULL);
                if (ret)
-- 
2.17.1

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

Reply via email to