diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/rv6xx_dpm.c')
| -rw-r--r-- | drivers/gpu/drm/radeon/rv6xx_dpm.c | 25 | 
1 files changed, 7 insertions, 18 deletions
diff --git a/drivers/gpu/drm/radeon/rv6xx_dpm.c b/drivers/gpu/drm/radeon/rv6xx_dpm.c index ab1f2016f21..e7045b08571 100644 --- a/drivers/gpu/drm/radeon/rv6xx_dpm.c +++ b/drivers/gpu/drm/radeon/rv6xx_dpm.c @@ -407,9 +407,9 @@ static void rv6xx_enable_engine_feedback_and_reference_sync(struct radeon_device  	WREG32_P(SPLL_CNTL_MODE, SPLL_DIV_SYNC, ~SPLL_DIV_SYNC);  } -static u64 rv6xx_clocks_per_unit(u32 unit) +static u32 rv6xx_clocks_per_unit(u32 unit)  { -	u64 tmp = 1 << (2 * unit); +	u32 tmp = 1 << (2 * unit);  	return tmp;  } @@ -417,7 +417,7 @@ static u64 rv6xx_clocks_per_unit(u32 unit)  static u32 rv6xx_scale_count_given_unit(struct radeon_device *rdev,  					u32 unscaled_count, u32 unit)  { -	u32 count_per_unit = (u32)rv6xx_clocks_per_unit(unit); +	u32 count_per_unit = rv6xx_clocks_per_unit(unit);  	return (unscaled_count + count_per_unit - 1) / count_per_unit;  } @@ -1546,7 +1546,6 @@ int rv6xx_dpm_enable(struct radeon_device *rdev)  {  	struct rv6xx_power_info *pi = rv6xx_get_pi(rdev);  	struct radeon_ps *boot_ps = rdev->pm.dpm.boot_ps; -	int ret;  	if (r600_dynamicpm_enabled(rdev))  		return -EINVAL; @@ -1594,15 +1593,6 @@ int rv6xx_dpm_enable(struct radeon_device *rdev)  	r600_power_level_enable(rdev, R600_POWER_LEVEL_MEDIUM, true);  	r600_power_level_enable(rdev, R600_POWER_LEVEL_HIGH, true); -	if (rdev->irq.installed && -	    r600_is_internal_thermal_sensor(rdev->pm.int_thermal_type)) { -		ret = r600_set_thermal_temperature_range(rdev, R600_TEMP_RANGE_MIN, R600_TEMP_RANGE_MAX); -		if (ret) -			return ret; -		rdev->irq.dpm_thermal = true; -		radeon_irq_set(rdev); -	} -  	rv6xx_enable_auto_throttle_source(rdev, RADEON_DPM_AUTO_THROTTLE_SRC_THERMAL, true);  	r600_start_dpm(rdev); @@ -1758,8 +1748,6 @@ int rv6xx_dpm_set_power_state(struct radeon_device *rdev)  	rv6xx_set_uvd_clock_after_set_eng_clock(rdev, new_ps, old_ps); -	rdev->pm.dpm.forced_level = RADEON_DPM_FORCED_LEVEL_AUTO; -  	return 0;  } @@ -1903,9 +1891,6 @@ static int rv6xx_parse_power_table(struct radeon_device *rdev)  				  power_info->pplib.ucNumStates, GFP_KERNEL);  	if (!rdev->pm.dpm.ps)  		return -ENOMEM; -	rdev->pm.dpm.platform_caps = le32_to_cpu(power_info->pplib.ulPlatformCaps); -	rdev->pm.dpm.backbias_response_time = le16_to_cpu(power_info->pplib.usBackbiasTime); -	rdev->pm.dpm.voltage_response_time = le16_to_cpu(power_info->pplib.usVoltageTime);  	for (i = 0; i < power_info->pplib.ucNumStates; i++) {  		power_state = (union pplib_power_state *) @@ -1955,6 +1940,10 @@ int rv6xx_dpm_init(struct radeon_device *rdev)  		return -ENOMEM;  	rdev->pm.dpm.priv = pi; +	ret = r600_get_platform_caps(rdev); +	if (ret) +		return ret; +  	ret = rv6xx_parse_power_table(rdev);  	if (ret)  		return ret;  | 
