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

drm/amd/pp: fix the wrong readout engine clock in deep sleep

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Rex Zhu <Rex.Zhu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Evan Quan and committed by
Alex Deucher
c11d8afe b8a55591

+5 -9
+4 -9
drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
··· 3805 3805 void *value, int *size) 3806 3806 { 3807 3807 struct amdgpu_device *adev = hwmgr->adev; 3808 - uint32_t sclk_idx, mclk_idx, activity_percent = 0; 3808 + uint32_t sclk_mhz, mclk_idx, activity_percent = 0; 3809 3809 struct vega10_hwmgr *data = hwmgr->backend; 3810 3810 struct vega10_dpm_table *dpm_table = &data->dpm_table; 3811 3811 int ret = 0; ··· 3813 3813 3814 3814 switch (idx) { 3815 3815 case AMDGPU_PP_SENSOR_GFX_SCLK: 3816 - smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetCurrentGfxclkIndex); 3817 - sclk_idx = smum_get_argument(hwmgr); 3818 - if (sclk_idx < dpm_table->gfx_table.count) { 3819 - *((uint32_t *)value) = dpm_table->gfx_table.dpm_levels[sclk_idx].value; 3820 - *size = 4; 3821 - } else { 3822 - ret = -EINVAL; 3823 - } 3816 + smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetAverageGfxclkActualFrequency); 3817 + sclk_mhz = smum_get_argument(hwmgr); 3818 + *((uint32_t *)value) = sclk_mhz * 100; 3824 3819 break; 3825 3820 case AMDGPU_PP_SENSOR_GFX_MCLK: 3826 3821 smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetCurrentUclkIndex);
+1
drivers/gpu/drm/amd/powerplay/inc/vega10_ppsmc.h
··· 131 131 #define PPSMC_MSG_RunAcgInOpenLoop 0x5E 132 132 #define PPSMC_MSG_InitializeAcg 0x5F 133 133 #define PPSMC_MSG_GetCurrPkgPwr 0x61 134 + #define PPSMC_MSG_GetAverageGfxclkActualFrequency 0x63 134 135 #define PPSMC_MSG_SetPccThrottleLevel 0x67 135 136 #define PPSMC_MSG_UpdatePkgPwrPidAlpha 0x68 136 137 #define PPSMC_Message_Count 0x69