diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_panel.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_panel.c | 19 |
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 */ | ||
636 | static 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 | |||
632 | static void intel_panel_init_backlight(struct drm_device *dev) | 647 | static 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 | } |