diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_drv.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_irq.c | 8 |
2 files changed, 4 insertions, 5 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h index 7a183789be97..3bbb871b25d5 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.h +++ b/drivers/gpu/drm/radeon/radeon_drv.h | |||
| @@ -299,7 +299,6 @@ typedef struct drm_radeon_private { | |||
| 299 | atomic_t swi_emitted; | 299 | atomic_t swi_emitted; |
| 300 | int vblank_crtc; | 300 | int vblank_crtc; |
| 301 | uint32_t irq_enable_reg; | 301 | uint32_t irq_enable_reg; |
| 302 | int irq_enabled; | ||
| 303 | uint32_t r500_disp_irq_reg; | 302 | uint32_t r500_disp_irq_reg; |
| 304 | 303 | ||
| 305 | struct radeon_surface surfaces[RADEON_MAX_SURFACES]; | 304 | struct radeon_surface surfaces[RADEON_MAX_SURFACES]; |
diff --git a/drivers/gpu/drm/radeon/radeon_irq.c b/drivers/gpu/drm/radeon/radeon_irq.c index 97c0599fdb1e..99be11418ac2 100644 --- a/drivers/gpu/drm/radeon/radeon_irq.c +++ b/drivers/gpu/drm/radeon/radeon_irq.c | |||
| @@ -44,7 +44,8 @@ void radeon_irq_set_state(struct drm_device *dev, u32 mask, int state) | |||
| 44 | else | 44 | else |
| 45 | dev_priv->irq_enable_reg &= ~mask; | 45 | dev_priv->irq_enable_reg &= ~mask; |
| 46 | 46 | ||
| 47 | RADEON_WRITE(RADEON_GEN_INT_CNTL, dev_priv->irq_enable_reg); | 47 | if (!dev->irq_enabled) |
| 48 | RADEON_WRITE(RADEON_GEN_INT_CNTL, dev_priv->irq_enable_reg); | ||
| 48 | } | 49 | } |
| 49 | 50 | ||
| 50 | static void r500_vbl_irq_set_state(struct drm_device *dev, u32 mask, int state) | 51 | static void r500_vbl_irq_set_state(struct drm_device *dev, u32 mask, int state) |
| @@ -56,7 +57,8 @@ static void r500_vbl_irq_set_state(struct drm_device *dev, u32 mask, int state) | |||
| 56 | else | 57 | else |
| 57 | dev_priv->r500_disp_irq_reg &= ~mask; | 58 | dev_priv->r500_disp_irq_reg &= ~mask; |
| 58 | 59 | ||
| 59 | RADEON_WRITE(R500_DxMODE_INT_MASK, dev_priv->r500_disp_irq_reg); | 60 | if (!dev->irq_enabled) |
| 61 | RADEON_WRITE(R500_DxMODE_INT_MASK, dev_priv->r500_disp_irq_reg); | ||
| 60 | } | 62 | } |
| 61 | 63 | ||
| 62 | int radeon_enable_vblank(struct drm_device *dev, int crtc) | 64 | int radeon_enable_vblank(struct drm_device *dev, int crtc) |
| @@ -355,8 +357,6 @@ void radeon_driver_irq_uninstall(struct drm_device * dev) | |||
| 355 | if (!dev_priv) | 357 | if (!dev_priv) |
| 356 | return; | 358 | return; |
| 357 | 359 | ||
| 358 | dev_priv->irq_enabled = 0; | ||
| 359 | |||
| 360 | if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690) | 360 | if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690) |
| 361 | RADEON_WRITE(R500_DxMODE_INT_MASK, 0); | 361 | RADEON_WRITE(R500_DxMODE_INT_MASK, 0); |
| 362 | /* Disable *all* interrupts */ | 362 | /* Disable *all* interrupts */ |
