diff options
author | Dave Airlie <airlied@redhat.com> | 2008-10-16 10:55:24 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2008-10-16 10:55:24 +1000 |
commit | 66740cbd5411a870dc6cc282c19a72809dd992be (patch) | |
tree | f6b81359e5e4b19527da78d0f17dc4d40b5d734b /linux-core | |
parent | 318770a78dc563a9a2780614fa3bf6c813584889 (diff) |
radeon: fixup interrupt suspend/resume
Diffstat (limited to 'linux-core')
-rw-r--r-- | linux-core/radeon_pm.c | 9 |
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) { |