more linux fixes

This commit is contained in:
Alan Hourihane 2001-08-19 14:34:53 +00:00
parent 4d3d182d8a
commit 4d738200dd
4 changed files with 39 additions and 0 deletions

View file

@ -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

View file

@ -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,

View file

@ -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,

View file

@ -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 ) ); \