diff options
author | Michel Daenzer <michel@daenzer.net> | 2003-02-04 16:06:32 +0000 |
---|---|---|
committer | Michel Daenzer <michel@daenzer.net> | 2003-02-04 16:06:32 +0000 |
commit | 164485d34a97621ecf27fa9ceff8b120b5c8cd9d (patch) | |
tree | 24d07828a37c1a856396b1b0790e0b3ec3f29e2b | |
parent | f93afda186850e7f406c8d7efc12453edf7d9d52 (diff) |
only acknowledge interrupts we handle - others could be used outside the
DRM
-rw-r--r-- | shared-core/radeon_irq.c | 13 | ||||
-rw-r--r-- | shared/radeon_irq.c | 13 |
2 files changed, 16 insertions, 10 deletions
diff --git a/shared-core/radeon_irq.c b/shared-core/radeon_irq.c index c5cd61c5..596706bf 100644 --- a/shared-core/radeon_irq.c +++ b/shared-core/radeon_irq.c @@ -61,7 +61,11 @@ void DRM(dma_service)( DRM_IRQ_ARGS ) (drm_radeon_private_t *)dev->dev_private; u32 stat; - stat = RADEON_READ(RADEON_GEN_INT_STATUS); + /* Only consider the bits we're interested in - others could be used + * outside the DRM + */ + stat = RADEON_READ(RADEON_GEN_INT_STATUS) + & (RADEON_SW_INT_TEST | RADEON_CRTC_VBLANK_STAT); if (!stat) return; @@ -77,15 +81,14 @@ void DRM(dma_service)( DRM_IRQ_ARGS ) DRM(vbl_send_signals)( dev ); } - /* Acknowledge all the bits in GEN_INT_STATUS -- seem to get - * more than we asked for... - */ + /* Acknowledge interrupts we handle */ RADEON_WRITE(RADEON_GEN_INT_STATUS, stat); } static __inline__ void radeon_acknowledge_irqs(drm_radeon_private_t *dev_priv) { - u32 tmp = RADEON_READ( RADEON_GEN_INT_STATUS ); + u32 tmp = RADEON_READ( RADEON_GEN_INT_STATUS ) + & (RADEON_SW_INT_TEST_ACK | RADEON_CRTC_VBLANK_STAT); if (tmp) RADEON_WRITE( RADEON_GEN_INT_STATUS, tmp ); } diff --git a/shared/radeon_irq.c b/shared/radeon_irq.c index c5cd61c5..596706bf 100644 --- a/shared/radeon_irq.c +++ b/shared/radeon_irq.c @@ -61,7 +61,11 @@ void DRM(dma_service)( DRM_IRQ_ARGS ) (drm_radeon_private_t *)dev->dev_private; u32 stat; - stat = RADEON_READ(RADEON_GEN_INT_STATUS); + /* Only consider the bits we're interested in - others could be used + * outside the DRM + */ + stat = RADEON_READ(RADEON_GEN_INT_STATUS) + & (RADEON_SW_INT_TEST | RADEON_CRTC_VBLANK_STAT); if (!stat) return; @@ -77,15 +81,14 @@ void DRM(dma_service)( DRM_IRQ_ARGS ) DRM(vbl_send_signals)( dev ); } - /* Acknowledge all the bits in GEN_INT_STATUS -- seem to get - * more than we asked for... - */ + /* Acknowledge interrupts we handle */ RADEON_WRITE(RADEON_GEN_INT_STATUS, stat); } static __inline__ void radeon_acknowledge_irqs(drm_radeon_private_t *dev_priv) { - u32 tmp = RADEON_READ( RADEON_GEN_INT_STATUS ); + u32 tmp = RADEON_READ( RADEON_GEN_INT_STATUS ) + & (RADEON_SW_INT_TEST_ACK | RADEON_CRTC_VBLANK_STAT); if (tmp) RADEON_WRITE( RADEON_GEN_INT_STATUS, tmp ); } |