]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob
e062ed62d1b9c38a199918c2f4a1bf182ecf4f76
[thirdparty/kernel/stable-queue.git] /
1 From b07a657e3a05b81c8a30d60e3f3746ca5a48ee62 Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali.rohar@gmail.com>
3 Date: Mon, 11 Aug 2014 19:01:58 +0200
4 Subject: drm/radeon: Add ability to get and change dpm state when radeon PX card is turned off
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali.rohar@gmail.com>
10
11 commit b07a657e3a05b81c8a30d60e3f3746ca5a48ee62 upstream.
12
13 This fixing commit 4f2f203976964e267dc477de6648bdb3acd2b74b
14
15 bug:
16 https://bugzilla.kernel.org/show_bug.cgi?id=76321
17
18 Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
19 Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
20 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
21
22 ---
23 drivers/gpu/drm/radeon/radeon_pm.c | 16 ++++++----------
24 1 file changed, 6 insertions(+), 10 deletions(-)
25
26 --- a/drivers/gpu/drm/radeon/radeon_pm.c
27 +++ b/drivers/gpu/drm/radeon/radeon_pm.c
28 @@ -458,10 +458,6 @@ static ssize_t radeon_get_dpm_state(stru
29 struct radeon_device *rdev = ddev->dev_private;
30 enum radeon_pm_state_type pm = rdev->pm.dpm.user_state;
31
32 - if ((rdev->flags & RADEON_IS_PX) &&
33 - (ddev->switch_power_state != DRM_SWITCH_POWER_ON))
34 - return snprintf(buf, PAGE_SIZE, "off\n");
35 -
36 return snprintf(buf, PAGE_SIZE, "%s\n",
37 (pm == POWER_STATE_TYPE_BATTERY) ? "battery" :
38 (pm == POWER_STATE_TYPE_BALANCED) ? "balanced" : "performance");
39 @@ -475,11 +471,6 @@ static ssize_t radeon_set_dpm_state(stru
40 struct drm_device *ddev = dev_get_drvdata(dev);
41 struct radeon_device *rdev = ddev->dev_private;
42
43 - /* Can't set dpm state when the card is off */
44 - if ((rdev->flags & RADEON_IS_PX) &&
45 - (ddev->switch_power_state != DRM_SWITCH_POWER_ON))
46 - return -EINVAL;
47 -
48 mutex_lock(&rdev->pm.mutex);
49 if (strncmp("battery", buf, strlen("battery")) == 0)
50 rdev->pm.dpm.user_state = POWER_STATE_TYPE_BATTERY;
51 @@ -493,7 +484,12 @@ static ssize_t radeon_set_dpm_state(stru
52 goto fail;
53 }
54 mutex_unlock(&rdev->pm.mutex);
55 - radeon_pm_compute_clocks(rdev);
56 +
57 + /* Can't set dpm state when the card is off */
58 + if (!(rdev->flags & RADEON_IS_PX) ||
59 + (ddev->switch_power_state == DRM_SWITCH_POWER_ON))
60 + radeon_pm_compute_clocks(rdev);
61 +
62 fail:
63 return count;
64 }