diff options
author | Jerome Glisse <jglisse@redhat.com> | 2009-09-30 22:18:43 +0200 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-10-02 01:39:23 +0200 |
commit | ac447df4f2283a116a3fbbc28cbaabf05758b736 (patch) | |
tree | 5fdf4749560edb366e369bcfa43b5196831adfae /drivers/gpu/drm/radeon/rs600.c | |
parent | drm/radeon/kms: R600/RV770 remove dead code and print message for wrong BIOS (diff) | |
download | linux-ac447df4f2283a116a3fbbc28cbaabf05758b736.tar.xz linux-ac447df4f2283a116a3fbbc28cbaabf05758b736.zip |
drm/radeon/kms: Fix irq handling on AVIVO hw
Avivo hw have vblank interrupt in different place, fixes
irq handling (especialy irq disabling while suspending or
shuting down the module).
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/rs600.c')
-rw-r--r-- | drivers/gpu/drm/radeon/rs600.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c index fbe0b87c4794..01f6834aa4b1 100644 --- a/drivers/gpu/drm/radeon/rs600.c +++ b/drivers/gpu/drm/radeon/rs600.c @@ -229,6 +229,17 @@ static inline uint32_t rs600_irq_ack(struct radeon_device *rdev, u32 *r500_disp_ return irqs & irq_mask; } +void rs600_irq_disable(struct radeon_device *rdev) +{ + u32 tmp; + + WREG32(R_000040_GEN_INT_CNTL, 0); + WREG32(R_006540_DxMODE_INT_MASK, 0); + /* Wait and acknowledge irq */ + mdelay(1); + rs600_irq_ack(rdev, &tmp); +} + int rs600_irq_process(struct radeon_device *rdev) { uint32_t status; @@ -403,7 +414,7 @@ int rs600_suspend(struct radeon_device *rdev) { r100_cp_disable(rdev); r100_wb_disable(rdev); - r100_irq_disable(rdev); + rs600_irq_disable(rdev); rs600_gart_disable(rdev); return 0; } |