ASUS ROG Zephyrus G14 (2022) GA402RJ and GA402RK laptops use custom AC
power limits of 100W (RX 6700S) and 105W (RX 6800S). On resume from
suspend, the SMU firmware resets to the reference vBIOS default of 80W,
hard-capping GPU performance.

Override SocketPowerLimitAc in sienna_cichlid_patch_pptable_quirk for
these subsystem IDs so the driver restores the platform's intended AC
power limit when reloading PPTable during boot and resume.

Signed-off-by: Teodor Bostan <[email protected]>
---
 .../gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c 
b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
index cef628752..10d330edb 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
@@ -479,6 +479,7 @@ static int sienna_cichlid_patch_pptable_quirk(struct 
smu_context *smu)
        struct amdgpu_device *adev = smu->adev;
        uint32_t *board_reserved;
        uint16_t *freq_table_gfx;
+       uint16_t *power_limit;
        uint32_t i;
 
        /* Fix some OEM SKU specific stability issues */
@@ -501,6 +502,18 @@ static int sienna_cichlid_patch_pptable_quirk(struct 
smu_context *smu)
                }
        }
 
+       /* Fix some OEM SKU specific power limit issues */
+       if ((adev->pdev->device == 0x73EF) &&
+           (adev->pdev->subsystem_vendor == 0x1043)) {
+               if (adev->pdev->subsystem_device == 0x1DEC) {
+                       GET_PPTABLE_MEMBER(SocketPowerLimitAc, &power_limit);
+                       power_limit[PPT_THROTTLER_PPT0] = 100;
+               } else if (adev->pdev->subsystem_device == 0x1DCC) {
+                       GET_PPTABLE_MEMBER(SocketPowerLimitAc, &power_limit);
+                       power_limit[PPT_THROTTLER_PPT0] = 105;
+               }
+       }
+
        return 0;
 }
 
-- 
2.55.0

Reply via email to