aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1723-drm-amdgpu-Allow-switching-to-CUSTOM-profile-on-smu7.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1723-drm-amdgpu-Allow-switching-to-CUSTOM-profile-on-smu7.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1723-drm-amdgpu-Allow-switching-to-CUSTOM-profile-on-smu7.patch73
1 files changed, 73 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1723-drm-amdgpu-Allow-switching-to-CUSTOM-profile-on-smu7.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1723-drm-amdgpu-Allow-switching-to-CUSTOM-profile-on-smu7.patch
new file mode 100644
index 00000000..227adf1f
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1723-drm-amdgpu-Allow-switching-to-CUSTOM-profile-on-smu7.patch
@@ -0,0 +1,73 @@
+From edbcbbf4112e6c8e7174580a851e80f8ea3742a6 Mon Sep 17 00:00:00 2001
+From: Kent Russell <kent.russell@amd.com>
+Date: Fri, 22 Mar 2019 09:01:26 -0400
+Subject: [PATCH 1723/2940] drm/amdgpu: Allow switching to CUSTOM profile on
+ smu7 v2
+
+Allow changing to the CUSTOM profile without requiring the
+parameters being passed in each time. Store the values in
+the smu7_profiling table since it's defined here anyways
+
+v2: Add check that CUSTOM was previously set
+
+Change-Id: I6c5e3a1487e12410a6a7670a5cf1a6599253344d
+Signed-off-by: Kent Russell <kent.russell@amd.com>
+Reviewed-by: Evan Quan <evan.quan@amd.com>
+---
+ .../gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c | 32 ++++++++++++-------
+ 1 file changed, 21 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
+index 83d3d935f3ac..048757e8f494 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
+@@ -77,7 +77,7 @@
+ #define PCIE_BUS_CLK 10000
+ #define TCLK (PCIE_BUS_CLK / 10)
+
+-static const struct profile_mode_setting smu7_profiling[7] =
++static struct profile_mode_setting smu7_profiling[7] =
+ {{0, 0, 0, 0, 0, 0, 0, 0},
+ {1, 0, 100, 30, 1, 0, 100, 10},
+ {1, 10, 0, 30, 0, 0, 0, 0},
+@@ -4984,17 +4984,27 @@ static int smu7_set_power_profile_mode(struct pp_hwmgr *hwmgr, long *input, uint
+ mode = input[size];
+ switch (mode) {
+ case PP_SMC_POWER_PROFILE_CUSTOM:
+- if (size < 8)
++ if (size < 8 && size != 0)
+ return -EINVAL;
+-
+- tmp.bupdate_sclk = input[0];
+- tmp.sclk_up_hyst = input[1];
+- tmp.sclk_down_hyst = input[2];
+- tmp.sclk_activity = input[3];
+- tmp.bupdate_mclk = input[4];
+- tmp.mclk_up_hyst = input[5];
+- tmp.mclk_down_hyst = input[6];
+- tmp.mclk_activity = input[7];
++ /* If only CUSTOM is passed in, use the saved values. Check
++ * that we actually have a CUSTOM profile by ensuring that
++ * the "use sclk" or the "use mclk" bits are set
++ */
++ tmp = smu7_profiling[PP_SMC_POWER_PROFILE_CUSTOM];
++ if (size == 0) {
++ if (tmp.bupdate_sclk == 0 && tmp.bupdate_mclk == 0)
++ return -EINVAL;
++ } else {
++ tmp.bupdate_sclk = input[0];
++ tmp.sclk_up_hyst = input[1];
++ tmp.sclk_down_hyst = input[2];
++ tmp.sclk_activity = input[3];
++ tmp.bupdate_mclk = input[4];
++ tmp.mclk_up_hyst = input[5];
++ tmp.mclk_down_hyst = input[6];
++ tmp.mclk_activity = input[7];
++ smu7_profiling[PP_SMC_POWER_PROFILE_CUSTOM] = tmp;
++ }
+ if (!smum_update_dpm_settings(hwmgr, &tmp)) {
+ memcpy(&data->current_profile_setting, &tmp, sizeof(struct profile_mode_setting));
+ hwmgr->power_profile_mode = mode;
+--
+2.17.1
+