diff options
Diffstat (limited to 'drivers/gpu/drm/amd')
-rw-r--r-- | drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c index 1d442a498bf6..4c53dabb102f 100644 --- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c | |||
@@ -3912,28 +3912,30 @@ static int vega10_read_sensor(struct pp_hwmgr *hwmgr, int idx, | |||
3912 | 3912 | ||
3913 | switch (idx) { | 3913 | switch (idx) { |
3914 | case AMDGPU_PP_SENSOR_GFX_SCLK: | 3914 | case AMDGPU_PP_SENSOR_GFX_SCLK: |
3915 | ret = smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetCurrentGfxclkIndex); | 3915 | smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetCurrentGfxclkIndex); |
3916 | if (!ret) { | 3916 | vega10_read_arg_from_smc(hwmgr, &sclk_idx); |
3917 | vega10_read_arg_from_smc(hwmgr, &sclk_idx); | 3917 | if (sclk_idx < dpm_table->gfx_table.count) { |
3918 | *((uint32_t *)value) = dpm_table->gfx_table.dpm_levels[sclk_idx].value; | 3918 | *((uint32_t *)value) = dpm_table->gfx_table.dpm_levels[sclk_idx].value; |
3919 | *size = 4; | 3919 | *size = 4; |
3920 | } else { | ||
3921 | ret = -EINVAL; | ||
3920 | } | 3922 | } |
3921 | break; | 3923 | break; |
3922 | case AMDGPU_PP_SENSOR_GFX_MCLK: | 3924 | case AMDGPU_PP_SENSOR_GFX_MCLK: |
3923 | ret = smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetCurrentUclkIndex); | 3925 | smum_send_msg_to_smc(hwmgr, PPSMC_MSG_GetCurrentUclkIndex); |
3924 | if (!ret) { | 3926 | vega10_read_arg_from_smc(hwmgr, &mclk_idx); |
3925 | vega10_read_arg_from_smc(hwmgr, &mclk_idx); | 3927 | if (mclk_idx < dpm_table->mem_table.count) { |
3926 | *((uint32_t *)value) = dpm_table->mem_table.dpm_levels[mclk_idx].value; | 3928 | *((uint32_t *)value) = dpm_table->mem_table.dpm_levels[mclk_idx].value; |
3927 | *size = 4; | 3929 | *size = 4; |
3930 | } else { | ||
3931 | ret = -EINVAL; | ||
3928 | } | 3932 | } |
3929 | break; | 3933 | break; |
3930 | case AMDGPU_PP_SENSOR_GPU_LOAD: | 3934 | case AMDGPU_PP_SENSOR_GPU_LOAD: |
3931 | ret = smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_GetAverageGfxActivity, 0); | 3935 | smum_send_msg_to_smc_with_parameter(hwmgr, PPSMC_MSG_GetAverageGfxActivity, 0); |
3932 | if (!ret) { | 3936 | vega10_read_arg_from_smc(hwmgr, &activity_percent); |
3933 | vega10_read_arg_from_smc(hwmgr, &activity_percent); | 3937 | *((uint32_t *)value) = activity_percent > 100 ? 100 : activity_percent; |
3934 | *((uint32_t *)value) = activity_percent > 100 ? 100 : activity_percent; | 3938 | *size = 4; |
3935 | *size = 4; | ||
3936 | } | ||
3937 | break; | 3939 | break; |
3938 | case AMDGPU_PP_SENSOR_GPU_TEMP: | 3940 | case AMDGPU_PP_SENSOR_GPU_TEMP: |
3939 | *((uint32_t *)value) = vega10_thermal_get_temperature(hwmgr); | 3941 | *((uint32_t *)value) = vega10_thermal_get_temperature(hwmgr); |