diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_panel.c')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_panel.c | 20 | 
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c index fa6831f8c004..41d00b1603e3 100644 --- a/drivers/gpu/drm/i915/intel_panel.c +++ b/drivers/gpu/drm/i915/intel_panel.c @@ -397,8 +397,11 @@ intel_panel_detect(struct drm_i915_private *dev_priv)  /**   * scale - scale values from one range to another - *   * @source_val: value in range [@source_min..@source_max] + * @source_min: minimum legal value for @source_val + * @source_max: maximum legal value for @source_val + * @target_min: corresponding target value for @source_min + * @target_max: corresponding target value for @source_max   *   * Return @source_val in range [@source_min..@source_max] scaled to range   * [@target_min..@target_max]. @@ -416,8 +419,9 @@ static uint32_t scale(uint32_t source_val,  	source_val = clamp(source_val, source_min, source_max);  	/* avoid overflows */ -	target_val = DIV_ROUND_CLOSEST_ULL((uint64_t)(source_val - source_min) * -			(target_max - target_min), source_max - source_min); +	target_val = mul_u32_u32(source_val - source_min, +				 target_max - target_min); +	target_val = DIV_ROUND_CLOSEST_ULL(target_val, source_max - source_min);  	target_val += target_min;  	return target_val; @@ -497,7 +501,7 @@ static u32 i9xx_get_backlight(struct intel_connector *connector)  	u32 val;  	val = I915_READ(BLC_PWM_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; -	if (INTEL_INFO(dev_priv)->gen < 4) +	if (INTEL_GEN(dev_priv) < 4)  		val >>= 1;  	if (panel->backlight.combination_mode) { @@ -1719,9 +1723,9 @@ cnp_setup_backlight(struct intel_connector *connector, enum pipe unused)  	u32 pwm_ctl, val;  	/* -	 * CNP has the BXT implementation of backlight, but with only -	 * one controller. Future platforms could have multiple controllers -	 * so let's make this extensible and prepared for the future. +	 * CNP has the BXT implementation of backlight, but with only one +	 * controller. TODO: ICP has multiple controllers but we only use +	 * controller 0 for now.  	 */  	panel->backlight.controller = 0; @@ -1865,7 +1869,7 @@ intel_panel_init_backlight_funcs(struct intel_panel *panel)  		panel->backlight.set = bxt_set_backlight;  		panel->backlight.get = bxt_get_backlight;  		panel->backlight.hz_to_pwm = bxt_hz_to_pwm; -	} else if (HAS_PCH_CNP(dev_priv)) { +	} else if (HAS_PCH_CNP(dev_priv) || HAS_PCH_ICP(dev_priv)) {  		panel->backlight.setup = cnp_setup_backlight;  		panel->backlight.enable = cnp_enable_backlight;  		panel->backlight.disable = cnp_disable_backlight;  |