diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/rv770.c')
| -rw-r--r-- | drivers/gpu/drm/radeon/rv770.c | 13 | 
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c index 253f24aec03..b7fd8206492 100644 --- a/drivers/gpu/drm/radeon/rv770.c +++ b/drivers/gpu/drm/radeon/rv770.c @@ -44,7 +44,18 @@ void rv770_fini(struct radeon_device *rdev);  void rv770_pm_misc(struct radeon_device *rdev)  { +	int req_ps_idx = rdev->pm.requested_power_state_index; +	int req_cm_idx = rdev->pm.requested_clock_mode_index; +	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) { +			radeon_atom_set_voltage(rdev, voltage->voltage); +			rdev->pm.current_vddc = voltage->voltage; +			DRM_DEBUG("Setting: v: %d\n", voltage->voltage); +		} +	}  }  /* @@ -213,7 +224,7 @@ static void rv770_mc_program(struct radeon_device *rdev)  	WREG32(MC_VM_FB_LOCATION, tmp);  	WREG32(HDP_NONSURFACE_BASE, (rdev->mc.vram_start >> 8));  	WREG32(HDP_NONSURFACE_INFO, (2 << 7)); -	WREG32(HDP_NONSURFACE_SIZE, (rdev->mc.mc_vram_size - 1) | 0x3FF); +	WREG32(HDP_NONSURFACE_SIZE, 0x3FFFFFFF);  	if (rdev->flags & RADEON_IS_AGP) {  		WREG32(MC_VM_AGP_TOP, rdev->mc.gtt_end >> 16);  		WREG32(MC_VM_AGP_BOT, rdev->mc.gtt_start >> 16);  |