From 0fe1f80b19cc18ee89cdcbb1992214e6855405fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Thu, 4 Mar 2010 23:18:44 +0100 Subject: [PATCH] drm/radeon/kms: add PM quirk for Asus Radeon HD 3200 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rafał Miłecki --- drivers/gpu/drm/radeon/radeon_pm.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c index 6b65f15..a2ea0be 100644 --- a/drivers/gpu/drm/radeon/radeon_pm.c +++ b/drivers/gpu/drm/radeon/radeon_pm.c @@ -79,6 +79,23 @@ static void radeon_print_power_mode_info(struct radeon_device *rdev) } } +static void radeon_apply_pm_quirks(struct radeon_device *rdev) +{ + /* Asus Radeon HD 3200 contains power states with reversed types */ + /* We received single report like this so far. See FDO bug #26347. + In case of more reports we may consider some detecting algorithm */ + if ((rdev->pdev->device == 0x9610) && + (rdev->pdev->subsystem_vendor == 0x1043) && + (rdev->pdev->subsystem_device == 0x82f1)) { + rdev->pm.power_state[0].type = POWER_STATE_TYPE_PERFORMANCE; + rdev->pm.power_state[1].type = POWER_STATE_TYPE_DEFAULT; + rdev->pm.default_power_state = &rdev->pm.power_state[1]; + rdev->pm.current_power_state = rdev->pm.default_power_state; + rdev->pm.current_clock_mode = + rdev->pm.default_power_state->default_clock_mode; + } +} + static struct radeon_power_state * radeon_pick_power_state(struct radeon_device *rdev, enum radeon_pm_state_type type) { @@ -235,6 +252,7 @@ int radeon_pm_init(struct radeon_device *rdev) radeon_atombios_get_power_modes(rdev); else radeon_combios_get_power_modes(rdev); + radeon_apply_pm_quirks(rdev); radeon_print_power_mode_info(rdev); } -- 1.6.4.2