diff options
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.patch | 73 |
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 + |