drm/i915: properly enable the blc controller on the right pipe
[deliverable/linux.git] / drivers / gpu / drm / i915 / intel_lvds.c
index a7269e6b4bf78a58e0e244358d9c89f5268cdd62..492db7740de2402dc83f0771ee32f9dafb789dce 100644 (file)
@@ -71,6 +71,7 @@ static struct intel_lvds *intel_attached_lvds(struct drm_connector *connector)
 static void intel_lvds_enable(struct intel_lvds *intel_lvds)
 {
        struct drm_device *dev = intel_lvds->base.base.dev;
+       struct intel_crtc *intel_crtc = to_intel_crtc(intel_lvds->base.base.crtc);
        struct drm_i915_private *dev_priv = dev->dev_private;
        u32 ctl_reg, lvds_reg, stat_reg;
 
@@ -107,7 +108,7 @@ static void intel_lvds_enable(struct intel_lvds *intel_lvds)
        if (wait_for((I915_READ(stat_reg) & PP_ON) != 0, 1000))
                DRM_ERROR("timed out waiting for panel to power on\n");
 
-       intel_panel_enable_backlight(dev);
+       intel_panel_enable_backlight(dev, intel_crtc->pipe);
 }
 
 static void intel_lvds_disable(struct intel_lvds *intel_lvds)
@@ -1074,35 +1075,14 @@ bool intel_lvds_init(struct drm_device *dev)
                goto failed;
 
 out:
+       /*
+        * Unlock registers and just
+        * leave them unlocked
+        */
        if (HAS_PCH_SPLIT(dev)) {
-               u32 pwm;
-
-               pipe = (I915_READ(PCH_LVDS) & LVDS_PIPEB_SELECT) ? 1 : 0;
-
-               /* make sure PWM is enabled and locked to the LVDS pipe */
-               pwm = I915_READ(BLC_PWM_CPU_CTL2);
-               if (pipe == 0 && (pwm & BLM_PIPE_B))
-                       I915_WRITE(BLC_PWM_CPU_CTL2, pwm & ~BLM_PWM_ENABLE);
-               if (pipe)
-                       pwm |= BLM_PIPE_B;
-               else
-                       pwm &= ~BLM_PIPE_B;
-               I915_WRITE(BLC_PWM_CPU_CTL2, pwm | BLM_PWM_ENABLE);
-
-               pwm = I915_READ(BLC_PWM_PCH_CTL1);
-               pwm |= BLM_PCH_PWM_ENABLE;
-               I915_WRITE(BLC_PWM_PCH_CTL1, pwm);
-               /*
-                * Unlock registers and just
-                * leave them unlocked
-                */
                I915_WRITE(PCH_PP_CONTROL,
                           I915_READ(PCH_PP_CONTROL) | PANEL_UNLOCK_REGS);
        } else {
-               /*
-                * Unlock registers and just
-                * leave them unlocked
-                */
                I915_WRITE(PP_CONTROL,
                           I915_READ(PP_CONTROL) | PANEL_UNLOCK_REGS);
        }
This page took 0.058871 seconds and 5 git commands to generate.