Index: programs/Xserver/hw/xfree86/drivers/ati/r128_reg.h =================================================================== RCS file: /work/eich/freedesktop/cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/ati/r128_reg.h,v retrieving revision 1.3 diff -u -r1.3 r128_reg.h --- programs/Xserver/hw/xfree86/drivers/ati/r128_reg.h 16 Jun 2004 09:43:58 -0000 1.3 +++ programs/Xserver/hw/xfree86/drivers/ati/r128_reg.h 20 May 2005 15:54:00 -0000 @@ -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) Index: programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c =================================================================== RCS file: /work/eich/freedesktop/cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c,v retrieving revision 1.19.2.7 diff -u -r1.19.2.7 radeon_driver.c --- programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 17 Dec 2004 00:13:18 -0000 1.19.2.7 +++ programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c 20 May 2005 15:54:00 -0000 @@ -7280,6 +7280,7 @@ } if (pScrn->vtSema) { + RADEONDisplayPowerManagementSet(pScrn, DPMSModeOn, 0); RADEONRestore(pScrn); } RADEONUnmapMem(pScrn); @@ -7463,15 +7464,15 @@ /* 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; @@ -7480,15 +7481,15 @@ /* 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; Index: programs/Xserver/hw/xfree86/drivers/ati/radeon_macros.h =================================================================== RCS file: /work/eich/freedesktop/cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_macros.h,v retrieving revision 1.3 diff -u -r1.3 radeon_macros.h --- programs/Xserver/hw/xfree86/drivers/ati/radeon_macros.h 30 Jul 2004 22:20:21 -0000 1.3 +++ programs/Xserver/hw/xfree86/drivers/ati/radeon_macros.h 20 May 2005 15:54:00 -0000 @@ -78,7 +78,7 @@ do { \ CARD32 tmp = INREG(addr); \ tmp &= (mask); \ - tmp |= (val); \ + tmp |= (val & ~(mask)); \ OUTREG(addr, tmp); \ } while (0) @@ -95,7 +95,7 @@ do { \ CARD32 tmp_ = INPLL(pScrn, addr); \ tmp_ &= (mask); \ - tmp_ |= (val); \ + tmp_ |= ((val) & ~(mask)); \ OUTPLL(addr, tmp_); \ } while (0)