summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Quan <evan.quan@amd.com>2020-09-25 13:17:48 +0800
committerAlex Deucher <alexander.deucher@amd.com>2020-10-27 11:59:22 -0400
commitb23dbd603b68312b6f0c6c06a81f42f64b2941e6 (patch)
tree5c396bc037cd472a9ba9b1913e1fb599a7358f8a
parentdba1953168606b6c701037b623af15c1609ae99b (diff)
drm/amd/pm: correct avfs fuse settings
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>
-rw-r--r--drivers/gpu/drm/amd/pm/powerplay/smumgr/polaris10_smumgr.c55
1 files 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;
}
}