diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/1041-drm-amd-powerplay-get-raven-current-sclk-and-mclk.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/1041-drm-amd-powerplay-get-raven-current-sclk-and-mclk.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/1041-drm-amd-powerplay-get-raven-current-sclk-and-mclk.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/1041-drm-amd-powerplay-get-raven-current-sclk-and-mclk.patch new file mode 100644 index 00000000..cfc44f83 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/1041-drm-amd-powerplay-get-raven-current-sclk-and-mclk.patch @@ -0,0 +1,60 @@ +From 45421d0f38e5fd27e46170e544749907d5b3c6af Mon Sep 17 00:00:00 2001 +From: Evan Quan <evan.quan@amd.com> +Date: Tue, 26 Sep 2017 11:49:28 +0800 +Subject: [PATCH 1041/4131] drm/amd/powerplay: get raven current sclk and mclk + +Change-Id: I17120a53bc3cebd8cc7eb9f3d83124905632a409 +Signed-off-by: Evan Quan <evan.quan@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com> +--- + drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c | 28 ++++++++++++++++++++++++-- + 1 file changed, 26 insertions(+), 2 deletions(-) + +diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c +index 9059b68..9ece560 100644 +--- a/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c ++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c +@@ -930,13 +930,37 @@ static int rv_thermal_get_temperature(struct pp_hwmgr *hwmgr) + static int rv_read_sensor(struct pp_hwmgr *hwmgr, int idx, + void *value, int *size) + { ++ uint32_t sclk, mclk; ++ int ret = 0; ++ + switch (idx) { ++ case AMDGPU_PP_SENSOR_GFX_SCLK: ++ ret = smum_send_msg_to_smc(hwmgr->smumgr, PPSMC_MSG_GetGfxclkFrequency); ++ if (!ret) { ++ rv_read_arg_from_smc(hwmgr->smumgr, &sclk); ++ /* in units of 10KHZ */ ++ *((uint32_t *)value) = sclk * 100; ++ *size = 4; ++ } ++ break; ++ case AMDGPU_PP_SENSOR_GFX_MCLK: ++ ret = smum_send_msg_to_smc(hwmgr->smumgr, PPSMC_MSG_GetFclkFrequency); ++ if (!ret) { ++ rv_read_arg_from_smc(hwmgr->smumgr, &mclk); ++ /* in units of 10KHZ */ ++ *((uint32_t *)value) = mclk * 100; ++ *size = 4; ++ } ++ break; + case AMDGPU_PP_SENSOR_GPU_TEMP: + *((uint32_t *)value) = rv_thermal_get_temperature(hwmgr); +- return 0; ++ break; + default: +- return -EINVAL; ++ ret = -EINVAL; ++ break; + } ++ ++ return ret; + } + + static const struct pp_hwmgr_func rv_hwmgr_funcs = { +-- +2.7.4 + |