diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2011-04-12 14:49:24 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-04-13 09:09:44 +1000 |
commit | 2feea49ae34a2fcea1035136b85f5eaca56f5cd0 (patch) | |
tree | f07e9ef8c9493c177864fa24493d4efcd45a80df /drivers/gpu/drm/radeon/evergreen.c | |
parent | 8a83ec5ee824a6bd431b49bdb2428c8bf88f03eb (diff) | |
download | kernel_samsung_smdk4412-2feea49ae34a2fcea1035136b85f5eaca56f5cd0.zip kernel_samsung_smdk4412-2feea49ae34a2fcea1035136b85f5eaca56f5cd0.tar.gz kernel_samsung_smdk4412-2feea49ae34a2fcea1035136b85f5eaca56f5cd0.tar.bz2 |
drm/radeon/kms: properly program vddci on evergreen+
Change vddci as well as vddc when changing power modes
on evergreen/ni. Also, properly set vddci on boot up
for ni cards. The vbios only sets the limited clocks
and voltages on boot until the mc ucode is loaded. This
should fix stability problems on some btc cards.
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/evergreen.c')
-rw-r--r-- | drivers/gpu/drm/radeon/evergreen.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index f244817..3453910 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c @@ -120,11 +120,16 @@ void evergreen_pm_misc(struct radeon_device *rdev) struct radeon_power_state *ps = &rdev->pm.power_state[req_ps_idx]; struct radeon_voltage *voltage = &ps->clock_info[req_cm_idx].voltage; - if ((voltage->type == VOLTAGE_SW) && voltage->voltage) { - if (voltage->voltage != rdev->pm.current_vddc) { + if (voltage->type == VOLTAGE_SW) { + if (voltage->voltage && (voltage->voltage != rdev->pm.current_vddc)) { radeon_atom_set_voltage(rdev, voltage->voltage, SET_VOLTAGE_TYPE_ASIC_VDDC); rdev->pm.current_vddc = voltage->voltage; - DRM_DEBUG("Setting: v: %d\n", voltage->voltage); + DRM_DEBUG("Setting: vddc: %d\n", voltage->voltage); + } + if (voltage->vddci && (voltage->vddci != rdev->pm.current_vddci)) { + radeon_atom_set_voltage(rdev, voltage->vddci, SET_VOLTAGE_TYPE_ASIC_VDDCI); + rdev->pm.current_vddci = voltage->vddci; + DRM_DEBUG("Setting: vddci: %d\n", voltage->vddci); } } } |