diff --git a/src/i830.h b/src/i830.h index 05b0358..59560fc 100644 --- a/src/i830.h +++ b/src/i830.h @@ -606,6 +606,7 @@ typedef struct _I830Rec { CARD32 savePP_OFF; CARD32 savePP_CONTROL; CARD32 savePP_CYCLE; + CARD8 saveLBB; CARD32 savePFIT_CONTROL; CARD32 savePaletteA[256]; CARD32 savePaletteB[256]; diff --git a/src/i830_lvds.c b/src/i830_lvds.c index ef8fa4a..77718ba 100644 --- a/src/i830_lvds.c +++ b/src/i830_lvds.c @@ -431,6 +431,14 @@ i830_lvds_save (xf86OutputPtr output) pI830->savePP_CONTROL = INREG(PP_CONTROL); pI830->savePP_CYCLE = INREG(PP_CYCLE); pI830->saveBLC_PWM_CTL = INREG(BLC_PWM_CTL); + +#if XSERVER_LIBPCIACCESS + pci_device_cfg_read_u8(pI830->PciInfo, &pI830->saveLBB, + LEGACY_BACKLIGHT_BRIGHTNESS); +#else + pI830->saveLBB = pciReadByte(pI830->PciTag, LEGACY_BACKLIGHT_BRIGHTNESS); +#endif + dev_priv->backlight_duty_cycle = dev_priv->get_backlight(output); } @@ -447,6 +455,14 @@ i830_lvds_restore(xf86OutputPtr output) OUTREG(LVDSPP_OFF, pI830->savePP_OFF); OUTREG(PP_CYCLE, pI830->savePP_CYCLE); OUTREG(PP_CONTROL, pI830->savePP_CONTROL); + +#if XSERVER_LIBPCIACCESS + pci_device_cfg_write_u8(pI830->PciInfo, &pI830->saveLBB, + LEGACY_BACKLIGHT_BRIGHTNESS); +#else + pciWriteByte(pI830->PciTag, LEGACY_BACKLIGHT_BRIGHTNESS, pI830->saveLBB); +#endif + if (pI830->savePP_CONTROL & POWER_TARGET_ON) i830SetLVDSPanelPower(output, TRUE); else