diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-amd/0025-drm-radeon-dpm-retain-user-selected-performance-leve.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-amd/0025-drm-radeon-dpm-retain-user-selected-performance-leve.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-amd/0025-drm-radeon-dpm-retain-user-selected-performance-leve.patch b/common/recipes-kernel/linux/linux-amd/0025-drm-radeon-dpm-retain-user-selected-performance-leve.patch new file mode 100644 index 00000000..866252cf --- /dev/null +++ b/common/recipes-kernel/linux/linux-amd/0025-drm-radeon-dpm-retain-user-selected-performance-leve.patch @@ -0,0 +1,45 @@ +From 5c2a86555ecf9da30f409b504fb7c823bd5e9551 Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexander.deucher@amd.com> +Date: Wed, 23 Oct 2013 21:31:42 +0000 +Subject: [PATCH 25/60] drm/radeon/dpm: retain user selected performance level + across state changes + +If the user has forced the state high or low, retain that preference +even when we switch power states. + +Fixes: +https://bugs.freedesktop.org/show_bug.cgi?id=70654 + +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/radeon/radeon_pm.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c +index 1b10e2e..58132a5 100644 +--- a/drivers/gpu/drm/radeon/radeon_pm.c ++++ b/drivers/gpu/drm/radeon/radeon_pm.c +@@ -918,12 +918,16 @@ static void radeon_dpm_change_power_state_locked(struct radeon_device *rdev) + radeon_dpm_post_set_power_state(rdev); + + if (rdev->asic->dpm.force_performance_level) { +- if (rdev->pm.dpm.thermal_active) ++ if (rdev->pm.dpm.thermal_active) { ++ enum radeon_dpm_forced_level level = rdev->pm.dpm.forced_level; + /* force low perf level for thermal */ + radeon_dpm_force_performance_level(rdev, RADEON_DPM_FORCED_LEVEL_LOW); +- else +- /* otherwise, enable auto */ +- radeon_dpm_force_performance_level(rdev, RADEON_DPM_FORCED_LEVEL_AUTO); ++ /* save the user's level */ ++ rdev->pm.dpm.forced_level = level; ++ } else { ++ /* otherwise, user selected level */ ++ radeon_dpm_force_performance_level(rdev, rdev->pm.dpm.forced_level); ++ } + } + + done: +-- +1.9.1 + |