diff --git a/src/i830_display.c b/src/i830_display.c index ed49fb0..1668898 100644 --- a/src/i830_display.c +++ b/src/i830_display.c @@ -795,6 +795,7 @@ i830_crtc_dpms(xf86CrtcPtr crtc, int mode) int plane = intel_crtc->plane; int dpll_reg = (pipe == 0) ? DPLL_A : DPLL_B; int pipeconf_reg = (pipe == 0) ? PIPEACONF : PIPEBCONF; + int pipestat_reg = (pipe == 0) ? PIPEASTAT : PIPEBSTAT; int dspcntr_reg = (plane == 0) ? DSPACNTR : DSPBCNTR; int dspbase_reg = (plane == 0) ? DSPABASE : DSPBBASE; uint32_t temp; @@ -896,6 +897,9 @@ i830_crtc_dpms(xf86CrtcPtr crtc, int mode) } /* Wait for the clocks to turn off. */ usleep(150); + + /* Clear any FIFO underrun status that may have occurred normally */ + OUTREG(pipestat_reg, INREG(pipestat_reg) | FIFO_UNDERRUN); break; }