drm/amd/pm: correct the baco state setting for ArmD3 scenario
authorEvan Quan <evan.quan@amd.com>
Tue, 21 Feb 2023 07:17:43 +0000 (15:17 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 23 Feb 2023 22:35:58 +0000 (17:35 -0500)
The check for baco support relies on the correct baco state.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Feifei Xu <feifei.xu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c

index 78945e7..66e9cb2 100644 (file)
@@ -2229,10 +2229,23 @@ int smu_v13_0_gfx_ulv_control(struct smu_context *smu,
 int smu_v13_0_baco_set_armd3_sequence(struct smu_context *smu,
                                      enum smu_baco_seq baco_seq)
 {
-       return smu_cmn_send_smc_msg_with_param(smu,
-                                              SMU_MSG_ArmD3,
-                                              baco_seq,
-                                              NULL);
+       struct smu_baco_context *smu_baco = &smu->smu_baco;
+       int ret;
+
+       ret = smu_cmn_send_smc_msg_with_param(smu,
+                                             SMU_MSG_ArmD3,
+                                             baco_seq,
+                                             NULL);
+       if (ret)
+               return ret;
+
+       if (baco_seq == BACO_SEQ_BAMACO ||
+           baco_seq == BACO_SEQ_BACO)
+               smu_baco->state = SMU_BACO_STATE_ENTER;
+       else
+               smu_baco->state = SMU_BACO_STATE_EXIT;
+
+       return 0;
 }
 
 bool smu_v13_0_baco_is_support(struct smu_context *smu)