Commit b23dbd60 authored by Evan Quan's avatar Evan Quan Committed by Alex Deucher

drm/amd/pm: correct avfs fuse settings

Correct Polaris10 avfs fuse setting.
Signed-off-by: default avatarEvan Quan <evan.quan@amd.com>
Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent dba19531
...@@ -1760,16 +1760,18 @@ static int polaris10_populate_avfs_parameters(struct pp_hwmgr *hwmgr) ...@@ -1760,16 +1760,18 @@ static int polaris10_populate_avfs_parameters(struct pp_hwmgr *hwmgr)
if (!hwmgr->avfs_supported) if (!hwmgr->avfs_supported)
return 0; 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); result = atomctrl_get_avfs_information(hwmgr, &avfs_params);
if (0 == result) { if (0 == result) {
if (((adev->pdev->device == 0x67ef) && if (ASICID_IS_P20(adev->pdev->device, adev->pdev->revision) ||
((adev->pdev->revision == 0xe0) || ((hwmgr->chip_id == CHIP_POLARIS12) && !ASICID_IS_P23(adev->pdev->device, adev->pdev->revision)) ||
(adev->pdev->revision == 0xe5))) || ASICID_IS_P21(adev->pdev->device, adev->pdev->revision)) {
((adev->pdev->device == 0x67ff) &&
((adev->pdev->revision == 0xcf) ||
(adev->pdev->revision == 0xef) ||
(adev->pdev->revision == 0xff)))) {
avfs_params.ucEnableApplyAVFS_CKS_OFF_Voltage = 1; avfs_params.ucEnableApplyAVFS_CKS_OFF_Voltage = 1;
if ((adev->pdev->device == 0x67ef && adev->pdev->revision == 0xe5) || if ((adev->pdev->device == 0x67ef && adev->pdev->revision == 0xe5) ||
(adev->pdev->device == 0x67ff && adev->pdev->revision == 0xef)) { (adev->pdev->device == 0x67ff && adev->pdev->revision == 0xef)) {
...@@ -1786,26 +1788,14 @@ static int polaris10_populate_avfs_parameters(struct pp_hwmgr *hwmgr) ...@@ -1786,26 +1788,14 @@ static int polaris10_populate_avfs_parameters(struct pp_hwmgr *hwmgr)
avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 = 0; avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 = 0;
avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b = 0x23; avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b = 0x23;
} }
} } else if (hwmgr->chip_id == CHIP_POLARIS12 && !ASICID_IS_P23(adev->pdev->device, adev->pdev->revision)) {
} 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_a0 = 0xF6B024DD;
avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1 = 0x3005E; avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1 = 0x3005E;
avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2 = 0x18A5F; avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2 = 0x18A5F;
avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 = 0x315; avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_m1 = 0x315;
avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 = 0xFED1; avfs_params.usAVFSGB_FUSE_TABLE_CKSOFF_m2 = 0xFED1;
avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b = 0x3B; avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b = 0x3B;
} else if (((adev->pdev->device == 0x67df) && } else if (ASICID_IS_P20(adev->pdev->device, adev->pdev->revision)) {
((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_a0 = 0xF843B66B;
avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1 = 0x59CB5; avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a1 = 0x59CB5;
avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2 = 0xFFFF287F; avfs_params.ulGB_VDROOP_TABLE_CKSOFF_a2 = 0xFFFF287F;
...@@ -1814,6 +1804,7 @@ static int polaris10_populate_avfs_parameters(struct pp_hwmgr *hwmgr) ...@@ -1814,6 +1804,7 @@ static int polaris10_populate_avfs_parameters(struct pp_hwmgr *hwmgr)
avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b = 0x58; avfs_params.ulAVFSGB_FUSE_TABLE_CKSOFF_b = 0x58;
} }
} }
}
if (0 == result) { if (0 == result) {
table->BTCGB_VDROOP_TABLE[0].a0 = PP_HOST_TO_SMC_UL(avfs_params.ulGB_VDROOP_TABLE_CKSON_a0); table->BTCGB_VDROOP_TABLE[0].a0 = PP_HOST_TO_SMC_UL(avfs_params.ulGB_VDROOP_TABLE_CKSON_a0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment