summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2008-10-16 10:55:24 +1000
committerDave Airlie <airlied@redhat.com>2008-10-16 10:55:24 +1000
commit66740cbd5411a870dc6cc282c19a72809dd992be (patch)
treef6b81359e5e4b19527da78d0f17dc4d40b5d734b
parent318770a78dc563a9a2780614fa3bf6c813584889 (diff)
radeon: fixup interrupt suspend/resume
-rw-r--r--linux-core/radeon_pm.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/linux-core/radeon_pm.c b/linux-core/radeon_pm.c
index 0a068cb8..6b1e6f84 100644
--- a/linux-core/radeon_pm.c
+++ b/linux-core/radeon_pm.c
@@ -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) {