|
@@ -7951,12 +7951,17 @@ static void i9xx_crtc_clock_get(struct intel_crtc *crtc,
|
|
|
else
|
|
|
i9xx_clock(refclk, &clock);
|
|
|
} else {
|
|
|
- bool is_lvds = (pipe == 1) && (I915_READ(LVDS) & LVDS_PORT_EN);
|
|
|
+ u32 lvds = I915_READ(LVDS);
|
|
|
+ bool is_lvds = (pipe == 1) && (lvds & LVDS_PORT_EN);
|
|
|
|
|
|
if (is_lvds) {
|
|
|
clock.p1 = ffs((dpll & DPLL_FPA01_P1_POST_DIV_MASK_I830_LVDS) >>
|
|
|
DPLL_FPA01_P1_POST_DIV_SHIFT);
|
|
|
- clock.p2 = 14;
|
|
|
+
|
|
|
+ if (lvds & LVDS_CLKB_POWER_UP)
|
|
|
+ clock.p2 = 7;
|
|
|
+ else
|
|
|
+ clock.p2 = 14;
|
|
|
} else {
|
|
|
if (dpll & PLL_P1_DIVIDE_BY_TWO)
|
|
|
clock.p1 = 2;
|