Re: [XFree86] 4.2.99.4 no display, locked keyboard (Radeon7500Mobility)

2003-02-04 Thread Vladimir Dergachev
Michel,

   could you remind me what is that xxx_SAVE bit ?

best

  Vladimir Dergachev

On Sun, 3 Feb 2003, Michel [ISO-8859-1] Dänzer wrote:

 On Son, 2003-02-02 at 12:51, Michel Dänzer wrote:
  On Son, 2003-02-02 at 06:09, hy0 wrote:
  
   Judging from current situation, we probably should take
   RADEONWaitForVerticalSync and RADEONWaitForVerticalSync2 all out of the
   cursor routines.
 
  I'd prefer fixing those functions instead. After some more thought,
  polling for _VBLANK_SAVE in both is probably safest for 4.3.0.

 Here's what I'm talking about, what do you think?


 --
 Earthling Michel Dänzer (MrCooper)/ Debian GNU/Linux (powerpc) developer
 XFree86 and DRI project member   /  CS student, Free Software enthusiast

___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel



Re: [XFree86] 4.2.99.4 no display, locked keyboard(Radeon7500Mobility)

2003-02-02 Thread Michel Dänzer
On Son, 2003-02-02 at 12:51, Michel Dänzer wrote:
 On Son, 2003-02-02 at 06:09, hy0 wrote:
  
  Judging from current situation, we probably should take
  RADEONWaitForVerticalSync and RADEONWaitForVerticalSync2 all out of the
  cursor routines. 
 
 I'd prefer fixing those functions instead. After some more thought,
 polling for _VBLANK_SAVE in both is probably safest for 4.3.0.

Here's what I'm talking about, what do you think?


-- 
Earthling Michel Dänzer (MrCooper)/ Debian GNU/Linux (powerpc) developer
XFree86 and DRI project member   /  CS student, Free Software enthusiast

Index: programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h
===
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h,v
retrieving revision 1.24
diff -p -u -r1.24 radeon_reg.h
--- programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h	2003/01/17 19:54:03	1.24
+++ programs/Xserver/hw/xfree86/drivers/ati/radeon_reg.h	2003/02/03 03:28:42
@@ -307,6 +307,10 @@
 #define RADEON_CRTC2_PITCH  0x032c
 #define RADEON_CRTC_STATUS  0x005c
 #   define RADEON_CRTC_VBLANK_SAVE  (1   1)
+#   define RADEON_CRTC_VBLANK_SAVE_CLEAR  (1   1)
+#define RADEON_CRTC2_STATUS  0x03fc
+#   define RADEON_CRTC2_VBLANK_SAVE  (1   1)
+#   define RADEON_CRTC2_VBLANK_SAVE_CLEAR  (1   1)
 #define RADEON_CRTC_V_SYNC_STRT_WID 0x020c
 #   define RADEON_CRTC_V_SYNC_STRT(0x7ff   0)
 #   define RADEON_CRTC_V_SYNC_STRT_SHIFT  0
Index: programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c
===
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c,v
retrieving revision 1.84
diff -p -u -r1.84 radeon_driver.c
--- programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c	2003/01/30 05:31:31	1.84
+++ programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c	2003/02/03 03:28:46
@@ -671,9 +675,13 @@ void RADEONWaitForVerticalSync(ScrnInfoP
 unsigned char *RADEONMMIO = info-MMIO;
 inti;
 
-OUTREG(RADEON_GEN_INT_STATUS, RADEON_VSYNC_INT_AK);
-for (i = 0; i  RADEON_TIMEOUT; i++) {
-	if (INREG(RADEON_GEN_INT_STATUS)  RADEON_VSYNC_INT) break;
+/* Clear the CRTC_VBLANK_SAVE bit */
+OUTREG(RADEON_CRTC_STATUS, RADEON_CRTC_VBLANK_SAVE_CLEAR);
+
+/* Wait for it to go back up */
+for (i = 0; i  RADEON_TIMEOUT/1000; i++) {
+	if (INREG(RADEON_CRTC_STATUS)  RADEON_CRTC_VBLANK_SAVE) break;
+	usleep(1);
 }
 }
 
@@ -683,10 +691,14 @@ void RADEONWaitForVerticalSync2(ScrnInfo
 RADEONInfoPtr  info   = RADEONPTR(pScrn);
 unsigned char *RADEONMMIO = info-MMIO;
 inti;
+
+/* Clear the CRTC2_VBLANK_SAVE bit */
+OUTREG(RADEON_CRTC2_STATUS, RADEON_CRTC2_VBLANK_SAVE_CLEAR);
 
-OUTREG(RADEON_GEN_INT_STATUS, RADEON_VSYNC2_INT_AK);
-for (i = 0; i  RADEON_TIMEOUT; i++) {
-	if (INREG(RADEON_GEN_INT_STATUS)  RADEON_VSYNC2_INT) break;
+/* Wait for it to go back up */
+for (i = 0; i  RADEON_TIMEOUT/1000; i++) {
+	if (INREG(RADEON_CRTC2_STATUS)  RADEON_CRTC2_VBLANK_SAVE) break;
+	usleep(1);
 }
 }