diff --git a/src/i830_driver.c b/src/i830_driver.c index d3b539a..3cae4be 100644 --- a/src/i830_driver.c +++ b/src/i830_driver.c @@ -1602,7 +1602,6 @@ I830AccelMethodInit(ScrnInfoPtr pScrn) PreInitCleanup(pScrn); return FALSE; } - RestoreHWState(pScrn); /* XXX This should go away, replaced by xf86Crtc.c support for it */ pI830->rotation = RR_Rotate_0; @@ -1745,7 +1744,7 @@ I830PreInit(ScrnInfoPtr pScrn, int flags) return FALSE; pI830 = I830PTR(pScrn); - pI830->SaveGeneration = -1; + pI830->SaveGeneration = serverGeneration; pI830->pEnt = pEnt; pI830->use_drm_mode = drm_mode_setting; diff --git a/src/i830_lvds.c b/src/i830_lvds.c index c6002eb..742ca2e 100644 --- a/src/i830_lvds.c +++ b/src/i830_lvds.c @@ -483,6 +483,28 @@ i830_lvds_swf_lid_close(xf86OutputPtr output) return ret; } +static void +i830_lvds_write_protect_off(xf86OutputPtr output) +{ + ScrnInfoPtr pScrn = output->scrn; + I830Ptr pI830 = I830PTR(pScrn); + int pp_ctrl = INREG(PP_CONTROL) & 0xffff; + + ErrorF("write protect off\n"); + OUTREG(PP_CONTROL, pp_ctrl | 0xABCD0000); +} + +static void +i830_lvds_write_protect_on(xf86OutputPtr output) +{ + ScrnInfoPtr pScrn = output->scrn; + I830Ptr pI830 = I830PTR(pScrn); + int pp_ctrl = INREG(PP_CONTROL) & 0xffff; + + ErrorF("write protect on\n"); + OUTREG(PP_CONTROL, pp_ctrl); +} + /** * Sets the power state for the panel. */ @@ -852,6 +874,7 @@ out: static void i830_lvds_prepare(xf86OutputPtr output) { + i830_lvds_write_protect_off(output); i830_lvds_dpms(output, DPMSModeOff); } @@ -871,6 +894,13 @@ i830_lvds_mode_set(xf86OutputPtr output, DisplayModePtr mode, OUTREG(PFIT_CONTROL, dev_priv->pfit_control); } +static void +i830_lvds_commit(xf86OutputPtr output) +{ + i830_output_commit(output); + i830_lvds_write_protect_on(output); +} + /** * Detect the LVDS connection. */ @@ -1309,7 +1339,7 @@ static const xf86OutputFuncsRec i830_lvds_output_funcs = { .mode_fixup = i830_lvds_mode_fixup, .prepare = i830_lvds_prepare, .mode_set = i830_lvds_mode_set, - .commit = i830_output_commit, + .commit = i830_lvds_commit, .detect = i830_lvds_detect, .get_modes = i830_lvds_get_modes, #ifdef RANDR_12_INTERFACE