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); } |