]> git.pld-linux.org Git - packages/XFree86.git/blob - XFree86-r128-drm-do-wait-for-fifo.patch
- merg from rawhide.
[packages/XFree86.git] / XFree86-r128-drm-do-wait-for-fifo.patch
1 --- XFree86-4.0.3/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/r128_cce.c Wed Dec 13 11:02:12 2000
2 +++ XFree86-4.0.3/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/r128_cce.c Tue Feb 20 18:10:16 2001
3 @@ -36,9 +36,8 @@
4  #include <linux/interrupt.h>   /* For task queue support */
5  #include <linux/delay.h>
6  
7 +#define R128_FIFO_DEBUG                0
8  
9 -/* FIXME: Temporary CCE packet buffer */
10 -u32 r128_cce_buffer[(1 << 14)] __attribute__ ((aligned (32)));
11  
12  /* CCE microcode (from ATI) */
13  static u32 r128_cce_microcode[] = {
14 @@ -114,7 +113,7 @@
15         return R128_READ(R128_CLOCK_CNTL_DATA);
16  }
17  
18 -#if 0
19 +#if R128_FIFO_DEBUG
20  static void r128_status( drm_r128_private_t *dev_priv )
21  {
22         printk( "GUI_STAT           = 0x%08x\n",
23 @@ -152,7 +151,9 @@
24                 udelay( 1 );
25         }
26  
27 +#if R128_FIFO_DEBUG
28         DRM_ERROR( "%s failed!\n", __FUNCTION__ );
29 +#endif
30         return -EBUSY;
31  }
32  
33 @@ -166,7 +167,9 @@
34                 udelay( 1 );
35         }
36  
37 +#if R128_FIFO_DEBUG
38         DRM_ERROR( "%s failed!\n", __FUNCTION__ );
39 +#endif
40         return -EBUSY;
41  }
42  
43 @@ -175,7 +178,7 @@
44         int i, ret;
45  
46         ret = r128_do_wait_for_fifo( dev_priv, 64 );
47 -       if ( !ret ) return ret;
48 +       if ( ret < 0 ) return ret;
49  
50         for ( i = 0 ; i < dev_priv->usec_timeout ; i++ ) {
51                 if ( !(R128_READ( R128_GUI_STAT ) & R128_GUI_ACTIVE) ) {
52 @@ -185,7 +188,9 @@
53                 udelay( 1 );
54         }
55  
56 +#if R128_FIFO_DEBUG
57         DRM_ERROR( "%s failed!\n", __FUNCTION__ );
58 +#endif
59         return -EBUSY;
60  }
61  
62 @@ -241,7 +246,7 @@
63                 udelay( 1 );
64         }
65  
66 -#if 0
67 +#if R128_FIFO_DEBUG
68         DRM_ERROR( "failed!\n" );
69         r128_status( dev_priv );
70  #endif
71 --- XFree86-4.0.3/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/r128_drv.h Tue Dec  5 11:57:26 2000
72 +++ XFree86-4.0.3/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/r128_drv.h Tue Feb 20 18:04:17 2001
73 @@ -388,11 +388,11 @@
74  #define R128_BASE(reg)         ((u32)(dev_priv->mmio->handle))
75  #define R128_ADDR(reg)         (R128_BASE(reg) + reg)
76  
77 -#define R128_DEREF(reg)                *(__volatile__ int *)R128_ADDR(reg)
78 +#define R128_DEREF(reg)                *(volatile u32 *)R128_ADDR(reg)
79  #define R128_READ(reg)         R128_DEREF(reg)
80  #define R128_WRITE(reg,val)    do { R128_DEREF(reg) = val; } while (0)
81  
82 -#define R128_DEREF8(reg)       *(__volatile__ char *)R128_ADDR(reg)
83 +#define R128_DEREF8(reg)       *(volatile u8 *)R128_ADDR(reg)
84  #define R128_READ8(reg)                R128_DEREF8(reg)
85  #define R128_WRITE8(reg,val)   do { R128_DEREF8(reg) = val; } while (0)
86  
87 --- XFree86-4.0.3/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmR128.c     Wed Dec 13 11:02:11 2000
88 +++ XFree86-4.0.3/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drmR128.c     Tue Feb 20 23:44:14 2001
89 @@ -78,7 +78,7 @@
90  #include "drm.h"
91  
92  #define R128_BUFFER_RETRY      32
93 -#define R128_IDLE_RETRY                16
94 +#define R128_IDLE_RETRY                32
95  
96  
97  int drmR128InitCCE( int fd, drmR128Init *info )
98 @@ -154,8 +154,11 @@
99  
100     ret = ioctl( fd, DRM_IOCTL_R128_CCE_STOP, &stop );
101  
102 -   if ( ret && errno != EBUSY )
103 +   if ( ret == 0 ) {
104 +      return 0;
105 +   } else if ( errno != EBUSY ) {
106        return -errno;
107 +   }
108  
109     stop.flush = 0;
110  
111 @@ -163,8 +166,11 @@
112        ret = ioctl( fd, DRM_IOCTL_R128_CCE_STOP, &stop );
113     } while ( ret && errno == EBUSY && i++ < R128_IDLE_RETRY );
114  
115 -   if ( ret && errno != EBUSY )
116 +   if ( ret == 0 ) {
117 +      return 0;
118 +   } else if ( errno != EBUSY ) {
119        return -errno;
120 +   }
121  
122     stop.idle = 0;
123  
This page took 0.079021 seconds and 3 git commands to generate.