diff options
author | Jerome Glisse <jglisse@redhat.com> | 2009-09-30 16:18:43 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-10-01 19:39:23 -0400 |
commit | ac447df4f2283a116a3fbbc28cbaabf05758b736 (patch) | |
tree | 5fdf4749560edb366e369bcfa43b5196831adfae /drivers/gpu/drm/radeon/rs600.c | |
parent | e7d40b9a0a7c857383ef50db9766354bd3be1bf3 (diff) |
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_ | |||
229 | return irqs & irq_mask; | 229 | return irqs & irq_mask; |
230 | } | 230 | } |
231 | 231 | ||
232 | void rs600_irq_disable(struct radeon_device *rdev) | ||
233 | { | ||
234 | u32 tmp; | ||
235 | |||
236 | WREG32(R_000040_GEN_INT_CNTL, 0); | ||
237 | WREG32(R_006540_DxMODE_INT_MASK, 0); | ||
238 | /* Wait and acknowledge irq */ | ||
239 | mdelay(1); | ||
240 | rs600_irq_ack(rdev, &tmp); | ||
241 | } | ||
242 | |||
232 | int rs600_irq_process(struct radeon_device *rdev) | 243 | int rs600_irq_process(struct radeon_device *rdev) |
233 | { | 244 | { |
234 | uint32_t status; | 245 | uint32_t status; |
@@ -403,7 +414,7 @@ int rs600_suspend(struct radeon_device *rdev) | |||
403 | { | 414 | { |
404 | r100_cp_disable(rdev); | 415 | r100_cp_disable(rdev); |
405 | r100_wb_disable(rdev); | 416 | r100_wb_disable(rdev); |
406 | r100_irq_disable(rdev); | 417 | rs600_irq_disable(rdev); |
407 | rs600_gart_disable(rdev); | 418 | rs600_gart_disable(rdev); |
408 | return 0; | 419 | return 0; |
409 | } | 420 | } |