*************** *** 644,659 **** intel_clock_t clock; int err = target; - if (IS_I9XX(dev) && intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) && - (I915_READ(LVDS)) != 0) { - /* - * For LVDS, if the panel is on, just rely on its current - * settings for dual-channel. We haven't figured out how to - * reliably set up different single/dual channel state, if we - * even can. - */ - if ((I915_READ(LVDS) & LVDS_CLKB_POWER_MASK) == - LVDS_CLKB_POWER_UP) clock.p2 = limit->p2.p2_fast; else clock.p2 = limit->p2.p2_slow; --- 643,651 ---- intel_clock_t clock; int err = target; + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { + + if (dev_priv->lvds_is_dual_channel) clock.p2 = limit->p2.p2_fast; else clock.p2 = limit->p2.p2_slow;