Commit 0845d1db authored by Egbert Eich's avatar Egbert Eich

Explicitely disable DPMS power states during close screen. Fix macro that

    takes a value and a mask of bits to modify to be behave evquvalently if
    the bits that should remain unchanged are set or unset in the value
    (Bugzilla #3369).
parent 74b86b03
......@@ -68,7 +68,7 @@
do { \
CARD32 tmp = INREG(addr); \
tmp &= (mask); \
tmp |= (val); \
tmp |= ((val) & ~(mask)); \
OUTREG(addr, tmp); \
} while (0)
......@@ -84,7 +84,7 @@
do { \
CARD32 tmp = INPLL(pScrn, addr); \
tmp &= (mask); \
tmp |= (val); \
tmp |= ((val) & ~(mask)); \
OUTPLL(addr, tmp); \
} while (0)
......
......@@ -8209,6 +8209,7 @@ static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen)
}
if (pScrn->vtSema) {
RADEONDisplayPowerManagementSet(pScrn, DPMSModeOn, 0);
RADEONRestore(pScrn);
}
RADEONUnmapMem(pScrn);
......@@ -8392,15 +8393,15 @@ static void RADEONDisplayPowerManagementSet(ScrnInfoPtr pScrn,
/* Screen: Off; HSync: Off, VSync: On */
if (info->IsSecondary)
OUTREGP(RADEON_CRTC2_GEN_CNTL,
RADEON_CRTC2_DISP_DIS | RADEON_CRTC2_HSYNC_DIS,
(RADEON_CRTC2_DISP_DIS | RADEON_CRTC2_HSYNC_DIS),
~mask2);
else {
if (info->MergedFB)
OUTREGP(RADEON_CRTC2_GEN_CNTL,
RADEON_CRTC2_DISP_DIS | RADEON_CRTC2_HSYNC_DIS,
(RADEON_CRTC2_DISP_DIS | RADEON_CRTC2_HSYNC_DIS),
~mask2);
OUTREGP(RADEON_CRTC_EXT_CNTL,
RADEON_CRTC_DISPLAY_DIS | RADEON_CRTC_HSYNC_DIS,
(RADEON_CRTC_DISPLAY_DIS | RADEON_CRTC_HSYNC_DIS),
~mask1);
}
break;
......@@ -8409,15 +8410,15 @@ static void RADEONDisplayPowerManagementSet(ScrnInfoPtr pScrn,
/* Screen: Off; HSync: On, VSync: Off */
if (info->IsSecondary)
OUTREGP(RADEON_CRTC2_GEN_CNTL,
RADEON_CRTC2_DISP_DIS | RADEON_CRTC2_VSYNC_DIS,
(RADEON_CRTC2_DISP_DIS | RADEON_CRTC2_VSYNC_DIS),
~mask2);
else {
if (info->MergedFB)
OUTREGP(RADEON_CRTC2_GEN_CNTL,
RADEON_CRTC2_DISP_DIS | RADEON_CRTC2_VSYNC_DIS,
(RADEON_CRTC2_DISP_DIS | RADEON_CRTC2_VSYNC_DIS),
~mask2);
OUTREGP(RADEON_CRTC_EXT_CNTL,
RADEON_CRTC_DISPLAY_DIS | RADEON_CRTC_VSYNC_DIS,
(RADEON_CRTC_DISPLAY_DIS | RADEON_CRTC_VSYNC_DIS),
~mask1);
}
break;
......
......@@ -78,7 +78,7 @@
do { \
CARD32 tmp = INREG(addr); \
tmp &= (mask); \
tmp |= (val); \
tmp |= ((val) & ~(mask)); \
OUTREG(addr, tmp); \
} while (0)
......@@ -90,7 +90,7 @@ do { \
do { \
CARD32 tmp_ = INPLL(pScrn, addr); \
tmp_ &= (mask); \
tmp_ |= (val); \
tmp_ |= ((val) & ~(mask)); \
OUTPLL(pScrn, addr, tmp_); \
} while (0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment