aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2311-drm-amd-powerplay-add-new-interface-for-vcn-powergat.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2311-drm-amd-powerplay-add-new-interface-for-vcn-powergat.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2311-drm-amd-powerplay-add-new-interface-for-vcn-powergat.patch89
1 files changed, 89 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2311-drm-amd-powerplay-add-new-interface-for-vcn-powergat.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2311-drm-amd-powerplay-add-new-interface-for-vcn-powergat.patch
new file mode 100644
index 00000000..560c8b7d
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2311-drm-amd-powerplay-add-new-interface-for-vcn-powergat.patch
@@ -0,0 +1,89 @@
+From 173b1b5b3e235bccb9ebbf8bfd5387720fbf4245 Mon Sep 17 00:00:00 2001
+From: Kenneth Feng <kenneth.feng@amd.com>
+Date: Thu, 18 Apr 2019 10:00:48 +0800
+Subject: [PATCH 2311/2940] drm/amd/powerplay: add new interface for vcn
+ powergating
+
+add new interface for vcn powrergating and vcn dpm as well.
+
+Signed-off-by: Kenneth Feng <kenneth.feng@amd.com>
+Signed-off-by: Jack Xiao <Jack.Xiao@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Reviewed-by: Huang Rui <ray.huang@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ .../gpu/drm/amd/powerplay/inc/amdgpu_smu.h | 4 +++
+ drivers/gpu/drm/amd/powerplay/navi10_ppt.c | 28 +++++++++++++++++++
+ 2 files changed, 32 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+index 5fdf983d6dc6..8ab9d259b453 100644
+--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
++++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+@@ -224,6 +224,10 @@ enum smu_message_type
+ SMU_MSG_PrepareMp1ForShutdown,
+ SMU_MSG_SetMGpuFanBoostLimitRpm,
+ SMU_MSG_GetAVFSVoltageByDpm,
++ SMU_MSG_PowerUpVcn,
++ SMU_MSG_PowerDownVcn,
++ SMU_MSG_PowerUpJpeg,
++ SMU_MSG_PowerDownJpeg,
+ SMU_MSG_MAX_COUNT,
+ };
+
+diff --git a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
+index 7fc7fd7c2fa0..e0d02a2458c5 100644
+--- a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
++++ b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
+@@ -97,6 +97,10 @@ static int navi10_message_map[SMU_MSG_MAX_COUNT] = {
+ MSG_MAP(ExitBaco, PPSMC_MSG_ExitBaco),
+ MSG_MAP(PrepareMp1ForReset, PPSMC_MSG_PrepareMp1ForReset),
+ MSG_MAP(PrepareMp1ForShutdown, PPSMC_MSG_PrepareMp1ForShutdown),
++ MSG_MAP(PowerUpVcn, PPSMC_MSG_PowerUpVcn),
++ MSG_MAP(PowerDownVcn, PPSMC_MSG_PowerDownVcn),
++ MSG_MAP(PowerUpJpeg, PPSMC_MSG_PowerUpJpeg),
++ MSG_MAP(PowerDownJpeg, PPSMC_MSG_PowerDownJpeg),
+ };
+
+ static int navi10_clk_map[SMU_CLK_COUNT] = {
+@@ -470,6 +474,29 @@ static int navi10_set_default_dpm_table(struct smu_context *smu)
+ return 0;
+ }
+
++static int navi10_dpm_set_uvd_enable(struct smu_context *smu, bool enable)
++{
++ int ret = 0;
++ struct smu_power_context *smu_power = &smu->smu_power;
++ struct smu_power_gate *power_gate = &smu_power->power_gate;
++
++ if (enable && power_gate->uvd_gated) {
++ ret = smu_send_smc_msg_with_param(smu, SMU_MSG_PowerUpVcn, 1);
++ if (ret)
++ return ret;
++ power_gate->uvd_gated = false;
++ } else {
++ if (!enable && !power_gate->uvd_gated) {
++ ret = smu_send_smc_msg(smu, SMU_MSG_PowerDownVcn);
++ if (ret)
++ return ret;
++ power_gate->uvd_gated = true;
++ }
++ }
++
++ return 0;
++}
++
+ static const struct pptable_funcs navi10_ppt_funcs = {
+ .tables_init = navi10_tables_init,
+ .alloc_dpm_context = navi10_allocate_dpm_context,
+@@ -483,6 +510,7 @@ static const struct pptable_funcs navi10_ppt_funcs = {
+ .get_smu_power_index= navi10_get_pwr_src_index,
+ .get_allowed_feature_mask = navi10_get_allowed_feature_mask,
+ .set_default_dpm_table = navi10_set_default_dpm_table,
++ .dpm_set_uvd_enable = navi10_dpm_set_uvd_enable,
+ };
+
+ void navi10_set_ppt_funcs(struct smu_context *smu)
+--
+2.17.1
+