drm/amd/pm: correct avfs fuse settings
authorEvan Quan <evan.quan@amd.com>
Fri, 25 Sep 2020 05:17:48 +0000 (13:17 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 27 Oct 2020 15:59:22 +0000 (11:59 -0400)
Correct Polaris10 avfs fuse setting.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/powerplay/smumgr/polaris10_smumgr.c

index 6afbd138f4eaec4917adf7bf6bc053c019b64518..46c82bfa793c5497275cee55ab503127aeab3a45 100644 (file)
@@ -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;
                }
        }