aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1092-drm-amdgpu-expose-BACO-interfaces-to-upper-level-fro.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1092-drm-amdgpu-expose-BACO-interfaces-to-upper-level-fro.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1092-drm-amdgpu-expose-BACO-interfaces-to-upper-level-fro.patch110
1 files changed, 110 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1092-drm-amdgpu-expose-BACO-interfaces-to-upper-level-fro.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1092-drm-amdgpu-expose-BACO-interfaces-to-upper-level-fro.patch
new file mode 100644
index 00000000..b92be885
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1092-drm-amdgpu-expose-BACO-interfaces-to-upper-level-fro.patch
@@ -0,0 +1,110 @@
+From 8314cbeb8ee0eb69ee224b1b0fa3660a1d0572de Mon Sep 17 00:00:00 2001
+From: Jim Qu <Jim.Qu@amd.com>
+Date: Wed, 9 Jan 2019 16:42:05 +0800
+Subject: [PATCH 1092/2940] drm/amdgpu: expose BACO interfaces to upper level
+ from PP
+
+Signed-off-by: Jim Qu <Jim.Qu@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/powerplay/amd_powerplay.c | 54 +++++++++++++++++++
+ .../drm/amd/powerplay/hwmgr/vega10_hwmgr.c | 4 ++
+ 2 files changed, 58 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
+index 9bc27f468d5b..5d8b5d3c2453 100644
+--- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
++++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
+@@ -1404,6 +1404,57 @@ static int pp_set_active_display_count(void *handle, uint32_t count)
+ return ret;
+ }
+
++static int pp_get_asic_baco_capability(void *handle, bool *cap)
++{
++ struct pp_hwmgr *hwmgr = handle;
++
++ if (!hwmgr)
++ return -EINVAL;
++
++ if (!hwmgr->pm_en || !hwmgr->hwmgr_func->get_asic_baco_capability)
++ return 0;
++
++ mutex_lock(&hwmgr->smu_lock);
++ hwmgr->hwmgr_func->get_asic_baco_capability(hwmgr, cap);
++ mutex_unlock(&hwmgr->smu_lock);
++
++ return 0;
++}
++
++static int pp_get_asic_baco_state(void *handle, int *state)
++{
++ struct pp_hwmgr *hwmgr = handle;
++
++ if (!hwmgr)
++ return -EINVAL;
++
++ if (!hwmgr->pm_en || !hwmgr->hwmgr_func->get_asic_baco_state)
++ return 0;
++
++ mutex_lock(&hwmgr->smu_lock);
++ hwmgr->hwmgr_func->get_asic_baco_state(hwmgr, (enum BACO_STATE *)state);
++ mutex_unlock(&hwmgr->smu_lock);
++
++ return 0;
++}
++
++static int pp_set_asic_baco_state(void *handle, int state)
++{
++ struct pp_hwmgr *hwmgr = handle;
++
++ if (!hwmgr)
++ return -EINVAL;
++
++ if (!hwmgr->pm_en || !hwmgr->hwmgr_func->set_asic_baco_state)
++ return 0;
++
++ mutex_lock(&hwmgr->smu_lock);
++ hwmgr->hwmgr_func->set_asic_baco_state(hwmgr, (enum BACO_STATE)state);
++ mutex_unlock(&hwmgr->smu_lock);
++
++ return 0;
++}
++
+ static const struct amd_pm_funcs pp_dpm_funcs = {
+ .load_firmware = pp_dpm_load_fw,
+ .wait_for_fw_loading_complete = pp_dpm_fw_loading_complete,
+@@ -1454,4 +1505,7 @@ static const struct amd_pm_funcs pp_dpm_funcs = {
+ .set_min_deep_sleep_dcefclk = pp_set_min_deep_sleep_dcefclk,
+ .set_hard_min_dcefclk_by_freq = pp_set_hard_min_dcefclk_by_freq,
+ .set_hard_min_fclk_by_freq = pp_set_hard_min_fclk_by_freq,
++ .get_asic_baco_capability = pp_get_asic_baco_capability,
++ .get_asic_baco_state = pp_get_asic_baco_state,
++ .set_asic_baco_state = pp_set_asic_baco_state,
+ };
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
+index 91e3bbe6d61d..d1e262844619 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
+@@ -48,6 +48,7 @@
+ #include "ppinterrupt.h"
+ #include "pp_overdriver.h"
+ #include "pp_thermal.h"
++#include "vega10_baco.h"
+
+ #include "smuio/smuio_9_0_offset.h"
+ #include "smuio/smuio_9_0_sh_mask.h"
+@@ -4980,6 +4981,9 @@ static const struct pp_hwmgr_func vega10_hwmgr_funcs = {
+ .set_power_limit = vega10_set_power_limit,
+ .odn_edit_dpm_table = vega10_odn_edit_dpm_table,
+ .get_performance_level = vega10_get_performance_level,
++ .get_asic_baco_capability = vega10_baco_get_capability,
++ .get_asic_baco_state = vega10_baco_get_state,
++ .set_asic_baco_state = vega10_baco_set_state,
+ };
+
+ int vega10_hwmgr_init(struct pp_hwmgr *hwmgr)
+--
+2.17.1
+