Correct Polaris10 avfs fuse setting.

Change-Id: Ia6db6bb1d67cbf5355fcbd07ccd5e3fb6bbd2226
Signed-off-by: Evan Quan <[email protected]>
Acked-by: Alex Deucher <[email protected]>
---
 .../pm/powerplay/smumgr/polaris10_smumgr.c    | 55 ++++++++-----------
 1 file changed, 23 insertions(+), 32 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/powerplay/smumgr/polaris10_smumgr.c 
b/drivers/gpu/drm/amd/pm/powerplay/smumgr/polaris10_smumgr.c
index 6afbd138f4ea..46c82bfa793c 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/smumgr/polaris10_smumgr.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/smumgr/polaris10_smumgr.c
@@ -1760,16 +1760,18 @@ static int polaris10_populate_avfs_parameters(struct 
pp_hwmgr *hwmgr)
        if (!hwmgr->avfs_supported)
                return 0;
 
+
+       if (SMU7_VOLTAGE_CONTROL_BY_GPIO == data->voltage_control) {
+               hwmgr->avfs_supported = 0;
+               return 0;
+       }
+
        result = atomctrl_get_avfs_information(hwmgr, &avfs_params);
 
        if (0 == result) {
-               if (((adev->pdev->device == 0x67ef) &&
-                    ((adev->pdev->revision == 0xe0) ||
-                     (adev->pdev->revision == 0xe5))) ||
-                   ((adev->pdev->device == 0x67ff) &&
-                    ((adev->pdev->revision == 0xcf) ||
-                     (adev->pdev->revision == 0xef) ||
-                     (adev->pdev->revision == 0xff)))) {
+               if (ASICID_IS_P20(adev->pdev->device, adev->pdev->revision) ||
+                   ((hwmgr->chip_id == CHIP_POLARIS12) && 
!ASICID_IS_P23(adev->pdev->device, adev->pdev->revision)) ||
+                   ASICID_IS_P21(adev->pdev->device, adev->pdev->revision)) {
                        avfs_params.ucEnableApplyAVFS_CKS_OFF_Voltage = 1;
                        if ((adev->pdev->device == 0x67ef && 
adev->pdev->revision == 0xe5) ||
                            (adev->pdev->device == 0x67ff && 
adev->pdev->revision == 0xef)) {
@@ -1786,32 +1788,21 @@ static int polaris10_populate_avfs_parameters(struct 
pp_hwmgr *hwmgr)
                                        
avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 = 0;
                                        
avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b  = 0x23;
                                }
+                       } else if (hwmgr->chip_id == CHIP_POLARIS12 && 
!ASICID_IS_P23(adev->pdev->device, adev->pdev->revision)) {
+                               avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a0   = 
0xF6B024DD;
+                               avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1   = 
0x3005E;
+                               avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2   = 
0x18A5F;
+                               avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 = 
0x315;
+                               avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 = 
0xFED1;
+                               avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b  = 
0x3B;
+                       } else if (ASICID_IS_P20(adev->pdev->device, 
adev->pdev->revision)) {
+                               avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a0   = 
0xF843B66B;
+                               avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1   = 
0x59CB5;
+                               avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2   = 
0xFFFF287F;
+                               avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 = 0;
+                               avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 = 
0xFF23;
+                               avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b  = 
0x58;
                        }
-               } else if (hwmgr->chip_id == CHIP_POLARIS12 && 
!hwmgr->is_kicker) {
-                       avfs_params.ucEnableApplyAVFS_CKS_OFF_Voltage = 1;
-                       avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a0   = 0xF6B024DD;
-                       avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1   = 0x3005E;
-                       avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2   = 0x18A5F;
-                       avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 = 0x315;
-                       avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 = 0xFED1;
-                       avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b  = 0x3B;
-               } else if (((adev->pdev->device == 0x67df) &&
-                           ((adev->pdev->revision == 0xe0) ||
-                            (adev->pdev->revision == 0xe3) ||
-                            (adev->pdev->revision == 0xe4) ||
-                            (adev->pdev->revision == 0xe5) ||
-                            (adev->pdev->revision == 0xe7) ||
-                            (adev->pdev->revision == 0xef))) ||
-                          ((adev->pdev->device == 0x6fdf) &&
-                           ((adev->pdev->revision == 0xef) ||
-                            (adev->pdev->revision == 0xff)))) {
-                       avfs_params.ucEnableApplyAVFS_CKS_OFF_Voltage = 1;
-                       avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a0   = 0xF843B66B;
-                       avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1   = 0x59CB5;
-                       avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2   = 0xFFFF287F;
-                       avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 = 0;
-                       avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 = 0xFF23;
-                       avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b  = 0x58;
                }
        }
 
-- 
2.28.0

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

Reply via email to