aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1465-drm-amd-powerplay-implement-dpm-enable-functions-of-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1465-drm-amd-powerplay-implement-dpm-enable-functions-of-.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1465-drm-amd-powerplay-implement-dpm-enable-functions-of-.patch95
1 files changed, 95 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1465-drm-amd-powerplay-implement-dpm-enable-functions-of-.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1465-drm-amd-powerplay-implement-dpm-enable-functions-of-.patch
new file mode 100644
index 00000000..ad69e8cf
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1465-drm-amd-powerplay-implement-dpm-enable-functions-of-.patch
@@ -0,0 +1,95 @@
+From 2a5edb3cea01b30e7443c67b61694d41c6e2c0a0 Mon Sep 17 00:00:00 2001
+From: Kevin Wang <kevin1.wang@amd.com>
+Date: Fri, 25 Jan 2019 15:10:13 +0800
+Subject: [PATCH 1465/2940] drm/amd/powerplay: implement dpm enable functions
+ of uvd & vce for smu
+
+add function of dpm enable uvd & vce for extern module use.
+
+Signed-off-by: Kevin Wang <kevin1.wang@amd.com>
+Reviewed-by: Huang Rui <ray.huang@amd.com>
+Acked-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 16 ++++++++++++++--
+ drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 19 +++++++++++++++++++
+ .../gpu/drm/amd/powerplay/inc/amdgpu_smu.h | 2 +-
+ 3 files changed, 34 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+index a1faf3f8702e..b83981284a7c 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+@@ -2347,7 +2347,13 @@ static void amdgpu_dpm_change_power_state_locked(struct amdgpu_device *adev)
+
+ void amdgpu_dpm_enable_uvd(struct amdgpu_device *adev, bool enable)
+ {
+- if (adev->powerplay.pp_funcs->set_powergating_by_smu) {
++ int ret = 0;
++ if (is_support_sw_smu(adev)) {
++ ret = smu_dpm_set_power_gate(&adev->smu, AMD_IP_BLOCK_TYPE_UVD, enable);
++ if (ret)
++ DRM_ERROR("[SW SMU]: dpm enable uvd failed, state = %s, ret = %d. \n",
++ enable ? "true" : "false", ret);
++ } else if (adev->powerplay.pp_funcs->set_powergating_by_smu) {
+ /* enable/disable UVD */
+ mutex_lock(&adev->pm.mutex);
+ amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_UVD, !enable);
+@@ -2368,7 +2374,13 @@ void amdgpu_dpm_enable_uvd(struct amdgpu_device *adev, bool enable)
+
+ void amdgpu_dpm_enable_vce(struct amdgpu_device *adev, bool enable)
+ {
+- if (adev->powerplay.pp_funcs->set_powergating_by_smu) {
++ int ret = 0;
++ if (is_support_sw_smu(adev)) {
++ ret = smu_dpm_set_power_gate(&adev->smu, AMD_IP_BLOCK_TYPE_VCE, enable);
++ if (ret)
++ DRM_ERROR("[SW SMU]: dpm enable vce failed, state = %s, ret = %d. \n",
++ enable ? "true" : "false", ret);
++ } else if (adev->powerplay.pp_funcs->set_powergating_by_smu) {
+ /* enable/disable VCE */
+ mutex_lock(&adev->pm.mutex);
+ amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_VCE, !enable);
+diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+index f4328cf78d22..d6578be92196 100644
+--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
++++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+@@ -29,6 +29,25 @@
+ #include "smu_v11_0.h"
+ #include "atom.h"
+
++int smu_dpm_set_power_gate(struct smu_context *smu, uint32_t block_type,
++ bool gate)
++{
++ int ret = 0;
++
++ switch (block_type) {
++ case AMD_IP_BLOCK_TYPE_UVD:
++ ret = smu_dpm_set_uvd_enable(smu, gate);
++ break;
++ case AMD_IP_BLOCK_TYPE_VCE:
++ ret = smu_dpm_set_vce_enable(smu, gate);
++ break;
++ default:
++ break;
++ }
++
++ return ret;
++}
++
+ enum amd_pm_state_type smu_get_current_power_state(struct smu_context *smu)
+ {
+ /* not support power state */
+diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+index 955b3508f1ce..53ca9530ed1f 100644
+--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
++++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+@@ -698,5 +698,5 @@ extern int smu_display_configuration_change(struct smu_context *smu, const
+ *display_config);
+ extern int smu_get_current_clocks(struct smu_context *smu,
+ struct amd_pp_clock_info *clocks);
+-
++extern int smu_dpm_set_power_gate(struct smu_context *smu,uint32_t block_type, bool gate);
+ #endif
+--
+2.17.1
+