diff options
| author | Ben Skeggs <darktama@iinet.net.au> | 2006-10-17 23:44:05 +1100 | 
|---|---|---|
| committer | Ben Skeggs <darktama@iinet.net.au> | 2006-10-17 23:44:05 +1100 | 
| commit | 55de3f763f0de66b99f1afde9872f0072a84a9e3 (patch) | |
| tree | 87f062e3086bb21d19e31fe55ff1a5f1dedc3a83 /shared-core/nouveau_irq.c | |
| parent | 07059f427819755e13b051e1422c6e8671c70f92 (diff) | |
Useful output on a FIFO error interrupt.
Diffstat (limited to 'shared-core/nouveau_irq.c')
| -rw-r--r-- | shared-core/nouveau_irq.c | 17 | 
1 files changed, 17 insertions, 0 deletions
| diff --git a/shared-core/nouveau_irq.c b/shared-core/nouveau_irq.c index 086c064c..af6109e9 100644 --- a/shared-core/nouveau_irq.c +++ b/shared-core/nouveau_irq.c @@ -146,8 +146,25 @@ static void nouveau_fifo_irq_handler(drm_device_t *dev)  	DRM_DEBUG("NV: PFIFO interrupt! Channel=%d, INTSTAT=0x%08x/MODE=0x%08x/PEND=0x%08x\n", channel, status, chmode, chstat);  	if (status & NV_PFIFO_INTR_CACHE_ERROR) { +		uint32_t c1get, c1method, c1data; +  		DRM_ERROR("NV: PFIFO error interrupt\n"); +		c1get = NV_READ(NV_PFIFO_CACH1_GET) >> 2; +		if (dev_priv->card_type < NV_40) { +			/* Untested, so it may not work.. */ +			c1method = NV_READ(NV_PFIFO_CACH1_METHOD(c1get)); +			c1data   = NV_READ(NV_PFIFO_CACH1_DATA(c1get)); +		} else { +			c1method = NV_READ(NV40_PFIFO_CACH1_METHOD(c1get)); +			c1data   = NV_READ(NV40_PFIFO_CACH1_DATA(c1get)); +		} + +		DRM_ERROR("NV: Channel %d/%d - Method 0x%04x, Data 0x%08x\n", +				channel, (c1method >> 13) & 3, +				c1method & 0x1ffc, c1data +			 ); +  		status &= ~NV_PFIFO_INTR_CACHE_ERROR;  		NV_WRITE(NV_PFIFO_INTSTAT, NV_PFIFO_INTR_CACHE_ERROR);  	} | 
