diff options
Diffstat (limited to 'drivers/gpu/drm/mga/mga_drv.h')
| -rw-r--r-- | drivers/gpu/drm/mga/mga_drv.h | 187 | 
1 files changed, 91 insertions, 96 deletions
diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h index be6c6b9b0e8..1084fa4d261 100644 --- a/drivers/gpu/drm/mga/mga_drv.h +++ b/drivers/gpu/drm/mga/mga_drv.h @@ -164,59 +164,59 @@ extern int mga_dma_reset(struct drm_device *dev, void *data,  extern int mga_dma_buffers(struct drm_device *dev, void *data,  			   struct drm_file *file_priv);  extern int mga_driver_load(struct drm_device *dev, unsigned long flags); -extern int mga_driver_unload(struct drm_device * dev); -extern void mga_driver_lastclose(struct drm_device * dev); -extern int mga_driver_dma_quiescent(struct drm_device * dev); +extern int mga_driver_unload(struct drm_device *dev); +extern void mga_driver_lastclose(struct drm_device *dev); +extern int mga_driver_dma_quiescent(struct drm_device *dev); -extern int mga_do_wait_for_idle(drm_mga_private_t * dev_priv); +extern int mga_do_wait_for_idle(drm_mga_private_t *dev_priv); -extern void mga_do_dma_flush(drm_mga_private_t * dev_priv); -extern void mga_do_dma_wrap_start(drm_mga_private_t * dev_priv); -extern void mga_do_dma_wrap_end(drm_mga_private_t * dev_priv); +extern void mga_do_dma_flush(drm_mga_private_t *dev_priv); +extern void mga_do_dma_wrap_start(drm_mga_private_t *dev_priv); +extern void mga_do_dma_wrap_end(drm_mga_private_t *dev_priv); -extern int mga_freelist_put(struct drm_device * dev, struct drm_buf * buf); +extern int mga_freelist_put(struct drm_device *dev, struct drm_buf *buf);  				/* mga_warp.c */ -extern int mga_warp_install_microcode(drm_mga_private_t * dev_priv); -extern int mga_warp_init(drm_mga_private_t * dev_priv); +extern int mga_warp_install_microcode(drm_mga_private_t *dev_priv); +extern int mga_warp_init(drm_mga_private_t *dev_priv);  				/* mga_irq.c */  extern int mga_enable_vblank(struct drm_device *dev, int crtc);  extern void mga_disable_vblank(struct drm_device *dev, int crtc);  extern u32 mga_get_vblank_counter(struct drm_device *dev, int crtc); -extern int mga_driver_fence_wait(struct drm_device * dev, unsigned int *sequence); -extern int mga_driver_vblank_wait(struct drm_device * dev, unsigned int *sequence); +extern int mga_driver_fence_wait(struct drm_device *dev, unsigned int *sequence); +extern int mga_driver_vblank_wait(struct drm_device *dev, unsigned int *sequence);  extern irqreturn_t mga_driver_irq_handler(DRM_IRQ_ARGS); -extern void mga_driver_irq_preinstall(struct drm_device * dev); +extern void mga_driver_irq_preinstall(struct drm_device *dev);  extern int mga_driver_irq_postinstall(struct drm_device *dev); -extern void mga_driver_irq_uninstall(struct drm_device * dev); +extern void mga_driver_irq_uninstall(struct drm_device *dev);  extern long mga_compat_ioctl(struct file *filp, unsigned int cmd,  			     unsigned long arg);  #define mga_flush_write_combine()	DRM_WRITEMEMORYBARRIER()  #if defined(__linux__) && defined(__alpha__) -#define MGA_BASE( reg )		((unsigned long)(dev_priv->mmio->handle)) -#define MGA_ADDR( reg )		(MGA_BASE(reg) + reg) +#define MGA_BASE(reg)		((unsigned long)(dev_priv->mmio->handle)) +#define MGA_ADDR(reg)		(MGA_BASE(reg) + reg) -#define MGA_DEREF( reg )	*(volatile u32 *)MGA_ADDR( reg ) -#define MGA_DEREF8( reg )	*(volatile u8 *)MGA_ADDR( reg ) +#define MGA_DEREF(reg)		(*(volatile u32 *)MGA_ADDR(reg)) +#define MGA_DEREF8(reg)		(*(volatile u8 *)MGA_ADDR(reg)) -#define MGA_READ( reg )		(_MGA_READ((u32 *)MGA_ADDR(reg))) -#define MGA_READ8( reg )	(_MGA_READ((u8 *)MGA_ADDR(reg))) -#define MGA_WRITE( reg, val )	do { DRM_WRITEMEMORYBARRIER(); MGA_DEREF( reg ) = val; } while (0) -#define MGA_WRITE8( reg, val )  do { DRM_WRITEMEMORYBARRIER(); MGA_DEREF8( reg ) = val; } while (0) +#define MGA_READ(reg)		(_MGA_READ((u32 *)MGA_ADDR(reg))) +#define MGA_READ8(reg)		(_MGA_READ((u8 *)MGA_ADDR(reg))) +#define MGA_WRITE(reg, val)	do { DRM_WRITEMEMORYBARRIER(); MGA_DEREF(reg) = val; } while (0) +#define MGA_WRITE8(reg, val)	do { DRM_WRITEMEMORYBARRIER(); MGA_DEREF8(reg) = val; } while (0) -static inline u32 _MGA_READ(u32 * addr) +static inline u32 _MGA_READ(u32 *addr)  {  	DRM_MEMORYBARRIER();  	return *(volatile u32 *)addr;  }  #else -#define MGA_READ8( reg )	DRM_READ8(dev_priv->mmio, (reg)) -#define MGA_READ( reg )		DRM_READ32(dev_priv->mmio, (reg)) -#define MGA_WRITE8( reg, val )  DRM_WRITE8(dev_priv->mmio, (reg), (val)) -#define MGA_WRITE( reg, val )	DRM_WRITE32(dev_priv->mmio, (reg), (val)) +#define MGA_READ8(reg)		DRM_READ8(dev_priv->mmio, (reg)) +#define MGA_READ(reg)		DRM_READ32(dev_priv->mmio, (reg)) +#define MGA_WRITE8(reg, val)	DRM_WRITE8(dev_priv->mmio, (reg), (val)) +#define MGA_WRITE(reg, val)	DRM_WRITE32(dev_priv->mmio, (reg), (val))  #endif  #define DWGREG0		0x1c00 @@ -233,40 +233,39 @@ static inline u32 _MGA_READ(u32 * addr)   * Helper macross...   */ -#define MGA_EMIT_STATE( dev_priv, dirty )				\ +#define MGA_EMIT_STATE(dev_priv, dirty)					\  do {									\ -	if ( (dirty) & ~MGA_UPLOAD_CLIPRECTS ) {			\ -		if ( dev_priv->chipset >= MGA_CARD_TYPE_G400 ) {	\ -			mga_g400_emit_state( dev_priv );		\ -		} else {						\ -			mga_g200_emit_state( dev_priv );		\ -		}							\ +	if ((dirty) & ~MGA_UPLOAD_CLIPRECTS) {				\ +		if (dev_priv->chipset >= MGA_CARD_TYPE_G400)		\ +			mga_g400_emit_state(dev_priv);			\ +		else							\ +			mga_g200_emit_state(dev_priv);			\  	}								\  } while (0) -#define WRAP_TEST_WITH_RETURN( dev_priv )				\ +#define WRAP_TEST_WITH_RETURN(dev_priv)					\  do {									\ -	if ( test_bit( 0, &dev_priv->prim.wrapped ) ) {			\ -		if ( mga_is_idle( dev_priv ) ) {			\ -			mga_do_dma_wrap_end( dev_priv );		\ -		} else if ( dev_priv->prim.space <			\ -			    dev_priv->prim.high_mark ) {		\ -			if ( MGA_DMA_DEBUG )				\ -				DRM_INFO( "wrap...\n");		\ -			return -EBUSY;			\ +	if (test_bit(0, &dev_priv->prim.wrapped)) {			\ +		if (mga_is_idle(dev_priv)) {				\ +			mga_do_dma_wrap_end(dev_priv);			\ +		} else if (dev_priv->prim.space <			\ +			   dev_priv->prim.high_mark) {			\ +			if (MGA_DMA_DEBUG)				\ +				DRM_INFO("wrap...\n");			\ +			return -EBUSY;					\  		}							\  	}								\  } while (0) -#define WRAP_WAIT_WITH_RETURN( dev_priv )				\ +#define WRAP_WAIT_WITH_RETURN(dev_priv)					\  do {									\ -	if ( test_bit( 0, &dev_priv->prim.wrapped ) ) {			\ -		if ( mga_do_wait_for_idle( dev_priv ) < 0 ) {		\ -			if ( MGA_DMA_DEBUG )				\ -				DRM_INFO( "wrap...\n");		\ -			return -EBUSY;			\ +	if (test_bit(0, &dev_priv->prim.wrapped)) {			\ +		if (mga_do_wait_for_idle(dev_priv) < 0) {		\ +			if (MGA_DMA_DEBUG)				\ +				DRM_INFO("wrap...\n");			\ +			return -EBUSY;					\  		}							\ -		mga_do_dma_wrap_end( dev_priv );			\ +		mga_do_dma_wrap_end(dev_priv);				\  	}								\  } while (0) @@ -280,12 +279,12 @@ do {									\  #define DMA_BLOCK_SIZE	(5 * sizeof(u32)) -#define BEGIN_DMA( n )							\ +#define BEGIN_DMA(n)							\  do {									\ -	if ( MGA_VERBOSE ) {						\ -		DRM_INFO( "BEGIN_DMA( %d )\n", (n) );		\ -		DRM_INFO( "   space=0x%x req=0x%Zx\n",			\ -			  dev_priv->prim.space, (n) * DMA_BLOCK_SIZE );	\ +	if (MGA_VERBOSE) {						\ +		DRM_INFO("BEGIN_DMA(%d)\n", (n));			\ +		DRM_INFO("   space=0x%x req=0x%Zx\n",			\ +			 dev_priv->prim.space, (n) * DMA_BLOCK_SIZE);	\  	}								\  	prim = dev_priv->prim.start;					\  	write = dev_priv->prim.tail;					\ @@ -293,9 +292,9 @@ do {									\  #define BEGIN_DMA_WRAP()						\  do {									\ -	if ( MGA_VERBOSE ) {						\ -		DRM_INFO( "BEGIN_DMA()\n" );				\ -		DRM_INFO( "   space=0x%x\n", dev_priv->prim.space );	\ +	if (MGA_VERBOSE) {						\ +		DRM_INFO("BEGIN_DMA()\n");				\ +		DRM_INFO("   space=0x%x\n", dev_priv->prim.space);	\  	}								\  	prim = dev_priv->prim.start;					\  	write = dev_priv->prim.tail;					\ @@ -304,72 +303,68 @@ do {									\  #define ADVANCE_DMA()							\  do {									\  	dev_priv->prim.tail = write;					\ -	if ( MGA_VERBOSE ) {						\ -		DRM_INFO( "ADVANCE_DMA() tail=0x%05x sp=0x%x\n",	\ -			  write, dev_priv->prim.space );		\ -	}								\ +	if (MGA_VERBOSE)						\ +		DRM_INFO("ADVANCE_DMA() tail=0x%05x sp=0x%x\n",		\ +			 write, dev_priv->prim.space);			\  } while (0)  #define FLUSH_DMA()							\  do {									\ -	if ( 0 ) {							\ -		DRM_INFO( "\n" );					\ -		DRM_INFO( "   tail=0x%06x head=0x%06lx\n",		\ -			  dev_priv->prim.tail,				\ -			  (unsigned long)(MGA_READ(MGA_PRIMADDRESS) -	\ -					  dev_priv->primary->offset));	\ +	if (0) {							\ +		DRM_INFO("\n");						\ +		DRM_INFO("   tail=0x%06x head=0x%06lx\n",		\ +			 dev_priv->prim.tail,				\ +			 (unsigned long)(MGA_READ(MGA_PRIMADDRESS) -	\ +					 dev_priv->primary->offset));	\  	}								\ -	if ( !test_bit( 0, &dev_priv->prim.wrapped ) ) {		\ -		if ( dev_priv->prim.space <				\ -		     dev_priv->prim.high_mark ) {			\ -			mga_do_dma_wrap_start( dev_priv );		\ -		} else {						\ -			mga_do_dma_flush( dev_priv );			\ -		}							\ +	if (!test_bit(0, &dev_priv->prim.wrapped)) {			\ +		if (dev_priv->prim.space < dev_priv->prim.high_mark)	\ +			mga_do_dma_wrap_start(dev_priv);		\ +		else							\ +			mga_do_dma_flush(dev_priv);			\  	}								\  } while (0)  /* Never use this, always use DMA_BLOCK(...) for primary DMA output.   */ -#define DMA_WRITE( offset, val )					\ +#define DMA_WRITE(offset, val)						\  do {									\ -	if ( MGA_VERBOSE ) {						\ -		DRM_INFO( "   DMA_WRITE( 0x%08x ) at 0x%04Zx\n",	\ -			  (u32)(val), write + (offset) * sizeof(u32) );	\ -	}								\ +	if (MGA_VERBOSE)						\ +		DRM_INFO("   DMA_WRITE( 0x%08x ) at 0x%04Zx\n",		\ +			 (u32)(val), write + (offset) * sizeof(u32));	\  	*(volatile u32 *)(prim + write + (offset) * sizeof(u32)) = val;	\  } while (0) -#define DMA_BLOCK( reg0, val0, reg1, val1, reg2, val2, reg3, val3 )	\ +#define DMA_BLOCK(reg0, val0, reg1, val1, reg2, val2, reg3, val3)	\  do {									\ -	DMA_WRITE( 0, ((DMAREG( reg0 ) << 0) |				\ -		       (DMAREG( reg1 ) << 8) |				\ -		       (DMAREG( reg2 ) << 16) |				\ -		       (DMAREG( reg3 ) << 24)) );			\ -	DMA_WRITE( 1, val0 );						\ -	DMA_WRITE( 2, val1 );						\ -	DMA_WRITE( 3, val2 );						\ -	DMA_WRITE( 4, val3 );						\ +	DMA_WRITE(0, ((DMAREG(reg0) << 0) |				\ +		      (DMAREG(reg1) << 8) |				\ +		      (DMAREG(reg2) << 16) |				\ +		      (DMAREG(reg3) << 24)));				\ +	DMA_WRITE(1, val0);						\ +	DMA_WRITE(2, val1);						\ +	DMA_WRITE(3, val2);						\ +	DMA_WRITE(4, val3);						\  	write += DMA_BLOCK_SIZE;					\  } while (0)  /* Buffer aging via primary DMA stream head pointer.   */ -#define SET_AGE( age, h, w )						\ +#define SET_AGE(age, h, w)						\  do {									\  	(age)->head = h;						\  	(age)->wrap = w;						\  } while (0) -#define TEST_AGE( age, h, w )		( (age)->wrap < w ||		\ -					  ( (age)->wrap == w &&		\ -					    (age)->head < h ) ) +#define TEST_AGE(age, h, w)		((age)->wrap < w ||		\ +					 ((age)->wrap == w &&		\ +					  (age)->head < h)) -#define AGE_BUFFER( buf_priv )						\ +#define AGE_BUFFER(buf_priv)						\  do {									\  	drm_mga_freelist_t *entry = (buf_priv)->list_entry;		\ -	if ( (buf_priv)->dispatched ) {					\ +	if ((buf_priv)->dispatched) {					\  		entry->age.head = (dev_priv->prim.tail +		\  				   dev_priv->primary->offset);		\  		entry->age.wrap = dev_priv->sarea_priv->last_wrap;	\ @@ -681,7 +676,7 @@ do {									\  /* Simple idle test.   */ -static __inline__ int mga_is_idle(drm_mga_private_t * dev_priv) +static __inline__ int mga_is_idle(drm_mga_private_t *dev_priv)  {  	u32 status = MGA_READ(MGA_STATUS) & MGA_ENGINE_IDLE_MASK;  	return (status == MGA_ENDPRDMASTS);  |