radeon: fixup interrupt suspend/resume
authorDave Airlie <airlied@redhat.com>
Thu, 16 Oct 2008 00:55:24 +0000 (10:55 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 16 Oct 2008 00:55:24 +0000 (10:55 +1000)
linux-core/radeon_pm.c

index 0a068cb..6b1e6f8 100644 (file)
@@ -69,6 +69,11 @@ int radeon_suspend(struct drm_device *dev, pm_message_t state)
 
        radeon_modeset_cp_suspend(dev);
 
+        /* Disable *all* interrupts */
+       if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690)
+               RADEON_WRITE(R500_DxMODE_INT_MASK, 0);
+       RADEON_WRITE(RADEON_GEN_INT_CNTL, 0);
+
        if (dev_priv->flags & RADEON_IS_PCIE) {
                memcpy_fromio(dev_priv->mm.pcie_table_backup, dev_priv->mm.pcie_table.kmap.virtual, RADEON_PCIGART_TABLE_SIZE);
        }
@@ -155,7 +160,9 @@ int radeon_resume(struct drm_device *dev)
        /* reset swi reg */
        RADEON_WRITE(RADEON_LAST_SWI_REG, dev_priv->counter);
 
-//     radeon_enable_interrupt(dev);
+       if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_RS690)
+               RADEON_WRITE(R500_DxMODE_INT_MASK, dev_priv->r500_disp_irq_reg);
+       RADEON_WRITE(RADEON_GEN_INT_CNTL, dev_priv->irq_enable_reg);
 
        /* reset the context for userspace */
        if (dev->primary->master) {