sync modesetting code with X.org
authorDave Airlie <airlied@linux.ie>
Sat, 27 May 2006 08:56:02 +0000 (18:56 +1000)
committerDave Airlie <airlied@linux.ie>
Sat, 27 May 2006 08:56:02 +0000 (18:56 +1000)
Signed-off-by: Dave Airlie <airlied@linux.ie>
drivers/video/intelfb/intelfbhw.c

index 5a621df5bf0224bdfb96da65f53178e6a02e9e33..16c9c192b4be6ada85205b9f82e16e9de1a800a7 100644 (file)
@@ -1359,6 +1359,10 @@ intelfbhw_program_mode(struct intelfb_info *dinfo,
        /* Wait for vblank. For now, just wait for a 50Hz cycle (20ms)) */
        mdelay(20);
 
+       OUTREG(DVOB, INREG(DVOB) & ~PORT_ENABLE);
+       OUTREG(DVOC, INREG(DVOC) & ~PORT_ENABLE);
+       OUTREG(ADPA, INREG(ADPA) & ~ADPA_DAC_ENABLE);
+
        /* Disable Sync */
        tmp = INREG(ADPA);
        tmp &= ~ADPA_DPMS_CONTROL_MASK;
@@ -1374,14 +1378,11 @@ intelfbhw_program_mode(struct intelfb_info *dinfo,
        OUTREG(dpll_reg, tmp);
 
        /* Set PLL parameters */
-       OUTREG(dpll_reg, *dpll & ~DPLL_VCO_ENABLE);
        OUTREG(fp0_reg, *fp0);
        OUTREG(fp1_reg, *fp1);
 
        /* Enable PLL */
-       tmp = INREG(dpll_reg);
-       tmp |= DPLL_VCO_ENABLE;
-       OUTREG(dpll_reg, tmp);
+       OUTREG(dpll_reg, *dpll);
 
        /* Set DVOs B/C */
        OUTREG(DVOB, hw->dvob);