Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amd/pm: correct VR shared rail info

Add VR shared rail info.

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>

authored by

Evan Quan and committed by
Alex Deucher
a8588b8b 5f92b48c

+34 -2
+3 -1
drivers/gpu/drm/amd/include/atombios.h
··· 5636 5636 { 5637 5637 ATOM_COMMON_TABLE_HEADER asHeader; 5638 5638 UCHAR ucSclkEntryNum; // for potential future extend, indicate the number of ATOM_SCLK_FCW_RANGE_ENTRY_V1 5639 - UCHAR ucReserved[3]; 5639 + UCHAR ucSMUVer; 5640 + UCHAR ucSharePowerSource; 5641 + UCHAR ucReserved; 5640 5642 ATOM_SCLK_FCW_RANGE_ENTRY_V1 asSclkFcwRangeEntry[8]; 5641 5643 }ATOM_SMU_INFO_V2_1; 5642 5644
+2 -1
drivers/gpu/drm/amd/pm/inc/smu74_discrete.h
··· 271 271 272 272 uint8_t VRHotLevel; 273 273 uint8_t LdoRefSel; 274 - uint8_t Reserved1[2]; 274 + uint8_t SharedRails; 275 + uint8_t Reserved1; 275 276 uint16_t FanStartTemperature; 276 277 uint16_t FanStopTemperature; 277 278 uint16_t MaxVoltage;
+14
drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.c
··· 1427 1427 return 0; 1428 1428 } 1429 1429 1430 + int atomctrl_get_vddc_shared_railinfo(struct pp_hwmgr *hwmgr, uint8_t *shared_rail) 1431 + { 1432 + ATOM_SMU_INFO_V2_1 *psmu_info = 1433 + (ATOM_SMU_INFO_V2_1 *)smu_atom_get_data_table(hwmgr->adev, 1434 + GetIndexIntoMasterTable(DATA, SMU_Info), 1435 + NULL, NULL, NULL); 1436 + if (!psmu_info) 1437 + return -1; 1438 + 1439 + *shared_rail = psmu_info->ucSharePowerSource; 1440 + 1441 + return 0; 1442 + } 1443 + 1430 1444 int atomctrl_get_avfs_information(struct pp_hwmgr *hwmgr, 1431 1445 struct pp_atom_ctrl__avfs_parameters *param) 1432 1446 {
+1
drivers/gpu/drm/amd/pm/powerplay/hwmgr/ppatomctrl.h
··· 347 347 AtomCtrl_EDCLeakgeTable *table, 348 348 uint16_t offset); 349 349 350 + extern int atomctrl_get_vddc_shared_railinfo(struct pp_hwmgr *hwmgr, uint8_t *shared_rail); 350 351 #endif 351 352
+14
drivers/gpu/drm/amd/pm/powerplay/smumgr/polaris10_smumgr.c
··· 1016 1016 return 0; 1017 1017 } 1018 1018 1019 + static void polaris10_get_vddc_shared_railinfo(struct pp_hwmgr *hwmgr) 1020 + { 1021 + struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smu_backend); 1022 + SMU74_Discrete_DpmTable *table = &(smu_data->smc_state_table); 1023 + uint8_t shared_rail; 1024 + 1025 + if (!atomctrl_get_vddc_shared_railinfo(hwmgr, &shared_rail)) 1026 + table->SharedRails = shared_rail; 1027 + } 1028 + 1019 1029 static int polaris10_populate_all_graphic_levels(struct pp_hwmgr *hwmgr) 1020 1030 { 1021 1031 struct smu7_hwmgr *hw_data = (struct smu7_hwmgr *)(hwmgr->backend); ··· 1050 1040 struct amdgpu_device *adev = hwmgr->adev; 1051 1041 pp_atomctrl_clock_dividers_vi dividers; 1052 1042 uint32_t dpm0_sclkfrequency = levels[0].SclkSetting.SclkFrequency; 1043 + 1044 + if (ASICID_IS_P20(adev->pdev->device, adev->pdev->revision) || 1045 + ASICID_IS_P30(adev->pdev->device, adev->pdev->revision)) 1046 + polaris10_get_vddc_shared_railinfo(hwmgr); 1053 1047 1054 1048 polaris10_get_sclk_range_table(hwmgr, &(smu_data->smc_state_table)); 1055 1049