From: Alex Deucher <alexdeucher@gmail.com>
Date: Fri, 25 Jun 2010 20:21:27 +0000 (-0400)
Subject: drm/radeon/kms/pm: fix power state indexing on igp chips in dynpm mode
X-Git-Tag: v2.6.35-rc4~15^2~1
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=773c3fa3a04bf6c9aa7147813beaab66f38e658f;p=users%2Fjedix%2Flinux-maple.git

drm/radeon/kms/pm: fix power state indexing on igp chips in dynpm mode

Fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=28745

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Tested-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
---

diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index 90f28175a7bc..3d6645ce2151 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -130,9 +130,14 @@ void r600_pm_get_dynpm_state(struct radeon_device *rdev)
 							break;
 						}
 					}
-				} else
-					rdev->pm.requested_power_state_index =
-						rdev->pm.current_power_state_index - 1;
+				} else {
+					if (rdev->pm.current_power_state_index == 0)
+						rdev->pm.requested_power_state_index =
+							rdev->pm.num_power_states - 1;
+					else
+						rdev->pm.requested_power_state_index =
+							rdev->pm.current_power_state_index - 1;
+				}
 			}
 			rdev->pm.requested_clock_mode_index = 0;
 			/* don't use the power state if crtcs are active and no display flag is set */