aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_panel.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_panel.c')
-rw-r--r--drivers/gpu/drm/i915/intel_panel.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 3bc89a6bc3ee..54684168de1e 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -329,7 +329,7 @@ static int is_backlight_combination_mode(struct drm_device *dev)
329{ 329{
330 struct drm_i915_private *dev_priv = dev->dev_private; 330 struct drm_i915_private *dev_priv = dev->dev_private;
331 331
332 if (INTEL_INFO(dev)->gen >= 4) 332 if (IS_GEN4(dev))
333 return I915_READ(BLC_PWM_CTL2) & BLM_COMBINATION_MODE; 333 return I915_READ(BLC_PWM_CTL2) & BLM_COMBINATION_MODE;
334 334
335 if (IS_GEN2(dev)) 335 if (IS_GEN2(dev))
@@ -372,6 +372,9 @@ static u32 i915_read_blc_pwm_ctl(struct drm_device *dev)
372 I915_WRITE(BLC_PWM_CTL2, 372 I915_WRITE(BLC_PWM_CTL2,
373 dev_priv->regfile.saveBLC_PWM_CTL2); 373 dev_priv->regfile.saveBLC_PWM_CTL2);
374 } 374 }
375
376 if (IS_VALLEYVIEW(dev) && !val)
377 val = 0x0f42ffff;
375 } 378 }
376 379
377 return val; 380 return val;
@@ -629,10 +632,24 @@ set_level:
629 spin_unlock_irqrestore(&dev_priv->backlight.lock, flags); 632 spin_unlock_irqrestore(&dev_priv->backlight.lock, flags);
630} 633}
631 634
635/* FIXME: use VBT vals to init PWM_CTL and PWM_CTL2 correctly */
636static void intel_panel_init_backlight_regs(struct drm_device *dev)
637{
638 struct drm_i915_private *dev_priv = dev->dev_private;
639
640 if (IS_VALLEYVIEW(dev)) {
641 u32 cur_val = I915_READ(BLC_PWM_CTL) &
642 BACKLIGHT_DUTY_CYCLE_MASK;
643 I915_WRITE(BLC_PWM_CTL, (0xf42 << 16) | cur_val);
644 }
645}
646
632static void intel_panel_init_backlight(struct drm_device *dev) 647static void intel_panel_init_backlight(struct drm_device *dev)
633{ 648{
634 struct drm_i915_private *dev_priv = dev->dev_private; 649 struct drm_i915_private *dev_priv = dev->dev_private;
635 650
651 intel_panel_init_backlight_regs(dev);
652
636 dev_priv->backlight.level = intel_panel_get_backlight(dev); 653 dev_priv->backlight.level = intel_panel_get_backlight(dev);
637 dev_priv->backlight.enabled = dev_priv->backlight.level != 0; 654 dev_priv->backlight.enabled = dev_priv->backlight.level != 0;
638} 655}