diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3755-drm-amd-powerplay-Add-the-interface-for-geting-dpm-c.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3755-drm-amd-powerplay-Add-the-interface-for-geting-dpm-c.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3755-drm-amd-powerplay-Add-the-interface-for-geting-dpm-c.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3755-drm-amd-powerplay-Add-the-interface-for-geting-dpm-c.patch new file mode 100644 index 00000000..6c3b21b0 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3755-drm-amd-powerplay-Add-the-interface-for-geting-dpm-c.patch @@ -0,0 +1,69 @@ +From e07946a6c24cbffb845fed15ba3f75b4edeae673 Mon Sep 17 00:00:00 2001 +From: Prike Liang <Prike.Liang@amd.com> +Date: Fri, 6 Sep 2019 15:13:03 +0800 +Subject: [PATCH 3755/4256] drm/amd/powerplay: Add the interface for geting dpm + current power state + +implement the sysfs power_dpm_state + +Signed-off-by: Prike Liang <Prike.Liang@amd.com> +Reviewed-by: Evan Quan <evan.quan@amd.com> +--- + drivers/gpu/drm/amd/powerplay/renoir_ppt.c | 34 ++++++++++++++++++++++ + 1 file changed, 34 insertions(+) + +diff --git a/drivers/gpu/drm/amd/powerplay/renoir_ppt.c b/drivers/gpu/drm/amd/powerplay/renoir_ppt.c +index a5cf846b50d4..2c22ba49c453 100644 +--- a/drivers/gpu/drm/amd/powerplay/renoir_ppt.c ++++ b/drivers/gpu/drm/amd/powerplay/renoir_ppt.c +@@ -246,6 +246,38 @@ static int renoir_print_clk_levels(struct smu_context *smu, + return size; + } + ++static enum amd_pm_state_type renoir_get_current_power_state(struct smu_context *smu) ++{ ++ enum amd_pm_state_type pm_type; ++ struct smu_dpm_context *smu_dpm_ctx = &(smu->smu_dpm); ++ ++ if (!smu_dpm_ctx->dpm_context || ++ !smu_dpm_ctx->dpm_current_power_state) ++ return -EINVAL; ++ ++ mutex_lock(&(smu->mutex)); ++ switch (smu_dpm_ctx->dpm_current_power_state->classification.ui_label) { ++ case SMU_STATE_UI_LABEL_BATTERY: ++ pm_type = POWER_STATE_TYPE_BATTERY; ++ break; ++ case SMU_STATE_UI_LABEL_BALLANCED: ++ pm_type = POWER_STATE_TYPE_BALANCED; ++ break; ++ case SMU_STATE_UI_LABEL_PERFORMANCE: ++ pm_type = POWER_STATE_TYPE_PERFORMANCE; ++ break; ++ default: ++ if (smu_dpm_ctx->dpm_current_power_state->classification.flags & SMU_STATE_CLASSIFICATION_FLAG_BOOT) ++ pm_type = POWER_STATE_TYPE_INTERNAL_BOOT; ++ else ++ pm_type = POWER_STATE_TYPE_DEFAULT; ++ break; ++ } ++ mutex_unlock(&(smu->mutex)); ++ ++ return pm_type; ++} ++ + static const struct pptable_funcs renoir_ppt_funcs = { + .get_smu_msg_index = renoir_get_smu_msg_index, + .get_smu_table_index = renoir_get_smu_table_index, +@@ -253,6 +285,8 @@ static const struct pptable_funcs renoir_ppt_funcs = { + .set_power_state = NULL, + .get_dpm_uclk_limited = renoir_get_dpm_uclk_limited, + .print_clk_levels = renoir_print_clk_levels, ++ .get_current_power_state = renoir_get_current_power_state, ++ + }; + + void renoir_set_ppt_funcs(struct smu_context *smu) +-- +2.17.1 + |