aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2389-drm-amd-powerplay-allow-dc-request-uclk-change.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2389-drm-amd-powerplay-allow-dc-request-uclk-change.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2389-drm-amd-powerplay-allow-dc-request-uclk-change.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2389-drm-amd-powerplay-allow-dc-request-uclk-change.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2389-drm-amd-powerplay-allow-dc-request-uclk-change.patch
new file mode 100644
index 00000000..6527cce1
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2389-drm-amd-powerplay-allow-dc-request-uclk-change.patch
@@ -0,0 +1,55 @@
+From 2f485e43c2c8337810e53a7808d080d8351e9969 Mon Sep 17 00:00:00 2001
+From: hersen wu <hersenxs.wu@amd.com>
+Date: Wed, 29 May 2019 23:28:55 -0500
+Subject: [PATCH 2389/2940] drm/amd/powerplay: allow dc request uclk change
+
+when dc set mode or color format in frame buffer
+change, it may request clock changes, like dispclk,
+dcfclk, uclk. after smu get clock requests, smu
+will make decision.
+
+Signed-off-by: hersen wu <hersenxs.wu@amd.com>
+Reviewed-by: Huang Rui <ray.huang@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
+index 6ffff5ab74b4..1b5d4084eedc 100644
+--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
++++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
+@@ -1275,7 +1275,8 @@ smu_v11_0_display_clock_voltage_request(struct smu_context *smu,
+
+ if (!smu->pm_enabled)
+ return -EINVAL;
+- if (smu_feature_is_enabled(smu, SMU_FEATURE_DPM_DCEFCLK_BIT)) {
++ if (smu_feature_is_enabled(smu, SMU_FEATURE_DPM_DCEFCLK_BIT) ||
++ smu_feature_is_enabled(smu, SMU_FEATURE_DPM_UCLK_BIT)) {
+ switch (clk_type) {
+ case amd_pp_dcef_clock:
+ clk_select = SMU_DCEFCLK;
+@@ -1289,6 +1290,9 @@ smu_v11_0_display_clock_voltage_request(struct smu_context *smu,
+ case amd_pp_phy_clock:
+ clk_select = SMU_PHYCLK;
+ break;
++ case amd_pp_mem_clock:
++ clk_select = SMU_UCLK;
++ break;
+ default:
+ pr_info("[%s] Invalid Clock Type!", __func__);
+ ret = -EINVAL;
+@@ -1298,8 +1302,10 @@ smu_v11_0_display_clock_voltage_request(struct smu_context *smu,
+ if (ret)
+ goto failed;
+
++ mutex_lock(&smu->mutex);
+ ret = smu_send_smc_msg_with_param(smu, SMU_MSG_SetHardMinByFreq,
+ (smu_clk_get_index(smu, clk_select) << 16) | clk_freq);
++ mutex_unlock(&smu->mutex);
+ }
+
+ failed:
+--
+2.17.1
+