diff options
author | Alan Hourihane <alanh@fairlite.demon.co.uk> | 2001-08-19 14:34:53 +0000 |
---|---|---|
committer | Alan Hourihane <alanh@fairlite.demon.co.uk> | 2001-08-19 14:34:53 +0000 |
commit | 4d738200dd4df9b0656c2ec49da2694cc4e7f5c7 (patch) | |
tree | 5c05e06d4e602075a4f2971527d0199a9ccaf691 | |
parent | 4d3d182d8ae552a30778cdf0bdfc4ea1543d8a1d (diff) |
more linux fixes
-rw-r--r-- | linux/mga_dma.c | 5 | ||||
-rw-r--r-- | linux/r128_cce.c | 10 | ||||
-rw-r--r-- | linux/radeon_cp.c | 10 | ||||
-rw-r--r-- | linux/radeon_drv.h | 14 |
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 ) ); \ |