summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Hourihane <alanh@fairlite.demon.co.uk>2001-08-19 14:34:53 +0000
committerAlan Hourihane <alanh@fairlite.demon.co.uk>2001-08-19 14:34:53 +0000
commit4d738200dd4df9b0656c2ec49da2694cc4e7f5c7 (patch)
tree5c05e06d4e602075a4f2971527d0199a9ccaf691
parent4d3d182d8ae552a30778cdf0bdfc4ea1543d8a1d (diff)
more linux fixes
-rw-r--r--linux/mga_dma.c5
-rw-r--r--linux/r128_cce.c10
-rw-r--r--linux/radeon_cp.c10
-rw-r--r--linux/radeon_drv.h14
4 files changed, 39 insertions, 0 deletions
diff --git a/linux/mga_dma.c b/linux/mga_dma.c
index f4db5981..3f08ec23 100644
--- a/linux/mga_dma.c
+++ b/linux/mga_dma.c
@@ -732,7 +732,12 @@ int mga_dma_flush( DRM_OS_IOCTL )
if ( lock.flags & _DRM_LOCK_QUIESCENT ) {
#if MGA_DMA_DEBUG
int ret = mga_do_wait_for_idle( dev_priv );
+#ifdef __linux
+ if ( ret < 0 )
+#endif
+#ifdef __FreeBSD__
if ( ret )
+#endif
DRM_INFO( __FUNCTION__": -EBUSY\n" );
return ret;
#else
diff --git a/linux/r128_cce.c b/linux/r128_cce.c
index ed3c221d..05404aa8 100644
--- a/linux/r128_cce.c
+++ b/linux/r128_cce.c
@@ -161,7 +161,12 @@ int r128_do_wait_for_idle( drm_r128_private_t *dev_priv )
int i, ret;
ret = r128_do_wait_for_fifo( dev_priv, 64 );
+#ifdef __linux__
+ if ( ret < 0 ) return ret;
+#endif
+#ifdef __FreeBSD__
if ( ret ) return ret;
+#endif
for ( i = 0 ; i < dev_priv->usec_timeout ; i++ ) {
if ( !(R128_READ( R128_GUI_STAT ) & R128_GUI_ACTIVE) ) {
@@ -746,7 +751,12 @@ int r128_cce_stop( DRM_OS_IOCTL )
*/
if ( stop.idle ) {
ret = r128_do_cce_idle( dev_priv );
+#ifdef __linux__
+ if ( ret < 0 ) return ret;
+#endif
+#ifdef __FreeBSD__
if ( ret ) return ret;
+#endif
}
/* Finally, we can turn off the CCE. If the engine isn't idle,
diff --git a/linux/radeon_cp.c b/linux/radeon_cp.c
index 5907df75..842d65fe 100644
--- a/linux/radeon_cp.c
+++ b/linux/radeon_cp.c
@@ -396,7 +396,12 @@ static int radeon_do_wait_for_idle( drm_radeon_private_t *dev_priv )
int i, ret;
ret = radeon_do_wait_for_fifo( dev_priv, 64 );
+#ifdef __linux__
+ if ( ret < 0 ) return ret;
+#endif
+#ifdef __FreeBSD__
if ( ret ) return ret;
+#endif
for ( i = 0 ; i < dev_priv->usec_timeout ; i++ ) {
if ( !(RADEON_READ( RADEON_RBBM_STATUS )
& RADEON_RBBM_ACTIVE) ) {
@@ -1113,7 +1118,12 @@ int radeon_cp_stop( DRM_OS_IOCTL )
*/
if ( stop.idle ) {
ret = radeon_do_cp_idle( dev_priv );
+#ifdef __linux__
+ if ( ret < 0 ) return ret;
+#endif
+#ifdef __FreeBSD__
if ( ret ) return ret;
+#endif
}
/* Finally, we can turn off the CP. If the engine isn't idle,
diff --git a/linux/radeon_drv.h b/linux/radeon_drv.h
index a4ac4570..482c2561 100644
--- a/linux/radeon_drv.h
+++ b/linux/radeon_drv.h
@@ -649,6 +649,19 @@ do { \
__ring_space_done: \
} while (0)
+#ifdef __linux__
+#define VB_AGE_TEST_WITH_RETURN( dev_priv ) \
+do { \
+ drm_radeon_sarea_t *sarea_priv = dev_priv->sarea_priv; \
+ if ( sarea_priv->last_dispatch >= RADEON_MAX_VB_AGE ) { \
+ int __ret = radeon_do_cp_idle( dev_priv ); \
+ if ( __ret < 0 ) return __ret; \
+ sarea_priv->last_dispatch = 0; \
+ radeon_freelist_reset( dev ); \
+ } \
+} while (0)
+#endif
+#ifdef __FreeBSD__
#define VB_AGE_TEST_WITH_RETURN( dev_priv ) \
do { \
drm_radeon_sarea_t *sarea_priv = dev_priv->sarea_priv; \
@@ -659,6 +672,7 @@ do { \
radeon_freelist_reset( dev ); \
} \
} while (0)
+#endif
#define RADEON_DISPATCH_AGE( age ) do { \
OUT_RING( CP_PACKET0( RADEON_LAST_DISPATCH_REG, 0 ) ); \