diff options
| author | Dave Airlie <airlied@linux.ie> | 2007-07-11 11:23:41 +1000 | 
|---|---|---|
| committer | Dave Airlie <airlied@linux.ie> | 2007-07-11 11:23:41 +1000 | 
| commit | 2c9e05cf4c6eb18c941321f764ed1b282a314ba9 (patch) | |
| tree | d5bcbe9114fac7e03549ae05a9e6dffc793fcbaf /shared-core/nouveau_irq.c | |
| parent | 9b9a127ed0fe9a6a8e2fde84739ccff6fa0bc5ac (diff) | |
| parent | 694e1c5c3f768436651ddf95e11ab5a89ccc8ffa (diff) | |
Merge branch 'master' into cleanup
Conflicts:
	libdrm/xf86drm.c
	linux-core/drm_bo.c
	linux-core/drm_fence.c
Diffstat (limited to 'shared-core/nouveau_irq.c')
| -rw-r--r-- | shared-core/nouveau_irq.c | 42 | 
1 files changed, 13 insertions, 29 deletions
| diff --git a/shared-core/nouveau_irq.c b/shared-core/nouveau_irq.c index b7c1d532..b4102dd8 100644 --- a/shared-core/nouveau_irq.c +++ b/shared-core/nouveau_irq.c @@ -87,34 +87,14 @@ void nouveau_irq_postinstall(drm_device_t *dev)  	DRM_DEBUG("IRQ: postinst\n");  	/* Enable PFIFO error reporting */ -	NV_WRITE(NV03_PFIFO_INTR_EN_0 ,  -			NV_PFIFO_INTR_CACHE_ERROR | -			NV_PFIFO_INTR_RUNOUT | -			NV_PFIFO_INTR_RUNOUT_OVERFLOW | -			NV_PFIFO_INTR_DMA_PUSHER | -			NV_PFIFO_INTR_DMA_PT | -			NV_PFIFO_INTR_SEMAPHORE | -			NV_PFIFO_INTR_ACQUIRE_TIMEOUT -			); +	NV_WRITE(NV03_PFIFO_INTR_EN_0, 0xFFFFFFFF);  	NV_WRITE(NV03_PFIFO_INTR_0, 0xFFFFFFFF);  	/* Enable PGRAPH interrupts */  	if (dev_priv->card_type<NV_40) -		NV_WRITE(NV03_PGRAPH_INTR_EN, -				NV_PGRAPH_INTR_NOTIFY | -				NV_PGRAPH_INTR_MISSING_HW | -				NV_PGRAPH_INTR_CONTEXT_SWITCH | -				NV_PGRAPH_INTR_BUFFER_NOTIFY | -				NV_PGRAPH_INTR_ERROR -				); +		NV_WRITE(NV03_PGRAPH_INTR_EN, 0xFFFFFFFF);  	else -		NV_WRITE(NV40_PGRAPH_INTR_EN, -				NV_PGRAPH_INTR_NOTIFY | -				NV_PGRAPH_INTR_MISSING_HW | -				NV_PGRAPH_INTR_CONTEXT_SWITCH | -				NV_PGRAPH_INTR_BUFFER_NOTIFY | -				NV_PGRAPH_INTR_ERROR -				); +		NV_WRITE(NV40_PGRAPH_INTR_EN, 0xFFFFFFFF);  	NV_WRITE(NV03_PGRAPH_INTR, 0xFFFFFFFF);  #if 0 @@ -271,22 +251,25 @@ nouveau_graph_dump_trap_info(drm_device_t *dev)  {  	drm_nouveau_private_t *dev_priv = dev->dev_private;  	uint32_t address; -	uint32_t channel; +	uint32_t channel, class;  	uint32_t method, subc, data;  	address = NV_READ(0x400704); -	data    = NV_READ(0x400708);  	channel = (address >> 20) & 0x1F;  	subc    = (address >> 16) & 0x7;  	method  = address & 0x1FFC; +	data    = NV_READ(0x400708); +	if (dev_priv->card_type < NV_50) { +		class = NV_READ(0x400160 + subc*4) & 0xFFFF; +	} else { +		class = NV_READ(0x400814); +	}  	DRM_ERROR("NV: nSource: 0x%08x, nStatus: 0x%08x\n",  			NV_READ(0x400108), NV_READ(0x400104));  	DRM_ERROR("NV: Channel %d/%d (class 0x%04x) -"  			"Method 0x%04x, Data 0x%08x\n", -			channel, subc, -			NV_READ(0x400160+subc*4) & 0xFFFF, -			method, data +			channel, subc, class, method, data  		 );  } @@ -314,7 +297,7 @@ static void nouveau_pgraph_irq_handler(drm_device_t *dev)  			instance = NV_READ(0x00400158);  			notify   = NV_READ(0x00400150) >> 16;  			DRM_DEBUG("instance:0x%08x\tnotify:0x%08x\n", -					nsource, nstatus); +				  instance, notify);  		}  		status &= ~NV_PGRAPH_INTR_NOTIFY; @@ -372,6 +355,7 @@ static void nouveau_pgraph_irq_handler(drm_device_t *dev)  				nouveau_nv04_context_switch(dev);  				break;  			case NV_10: +			case NV_17:  				nouveau_nv10_context_switch(dev);  				break;  			case NV_20: | 
