Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 345573
b: refs/heads/master
c: f60cbd1
h: refs/heads/master
i:
  345571: dced55a
v: v3
  • Loading branch information
Alex Deucher committed Dec 10, 2012
1 parent 4192bfd commit 3cc9d13
Show file tree
Hide file tree
Showing 8 changed files with 421 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 233d1ad59a2895e348259bb6f9f4528a75ea7752
refs/heads/master: f60cbd117a416830d5a7effc208eab8470a19167
21 changes: 20 additions & 1 deletion trunk/drivers/gpu/drm/radeon/evergreen.c
Original file line number Diff line number Diff line change
Expand Up @@ -2404,6 +2404,8 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
CNTX_BUSY_INT_ENABLE | CNTX_EMPTY_INT_ENABLE);
cayman_cp_int_cntl_setup(rdev, 1, 0);
cayman_cp_int_cntl_setup(rdev, 2, 0);
tmp = RREG32(CAYMAN_DMA1_CNTL) & ~TRAP_ENABLE;
WREG32(CAYMAN_DMA1_CNTL, tmp);
} else
WREG32(CP_INT_CNTL, CNTX_BUSY_INT_ENABLE | CNTX_EMPTY_INT_ENABLE);
tmp = RREG32(DMA_CNTL) & ~TRAP_ENABLE;
Expand Down Expand Up @@ -2460,7 +2462,7 @@ int evergreen_irq_set(struct radeon_device *rdev)
u32 grbm_int_cntl = 0;
u32 grph1 = 0, grph2 = 0, grph3 = 0, grph4 = 0, grph5 = 0, grph6 = 0;
u32 afmt1 = 0, afmt2 = 0, afmt3 = 0, afmt4 = 0, afmt5 = 0, afmt6 = 0;
u32 dma_cntl;
u32 dma_cntl, dma_cntl1 = 0;

if (!rdev->irq.installed) {
WARN(1, "Can't enable IRQ/MSI because no handler is installed\n");
Expand Down Expand Up @@ -2517,6 +2519,14 @@ int evergreen_irq_set(struct radeon_device *rdev)
dma_cntl |= TRAP_ENABLE;
}

if (rdev->family >= CHIP_CAYMAN) {
dma_cntl1 = RREG32(CAYMAN_DMA1_CNTL) & ~TRAP_ENABLE;
if (atomic_read(&rdev->irq.ring_int[CAYMAN_RING_TYPE_DMA1_INDEX])) {
DRM_DEBUG("r600_irq_set: sw int dma1\n");
dma_cntl1 |= TRAP_ENABLE;
}
}

if (rdev->irq.crtc_vblank_int[0] ||
atomic_read(&rdev->irq.pflip[0])) {
DRM_DEBUG("evergreen_irq_set: vblank 0\n");
Expand Down Expand Up @@ -2605,6 +2615,9 @@ int evergreen_irq_set(struct radeon_device *rdev)

WREG32(DMA_CNTL, dma_cntl);

if (rdev->family >= CHIP_CAYMAN)
WREG32(CAYMAN_DMA1_CNTL, dma_cntl1);

WREG32(GRBM_INT_CNTL, grbm_int_cntl);

WREG32(INT_MASK + EVERGREEN_CRTC0_REGISTER_OFFSET, crtc1);
Expand Down Expand Up @@ -3147,6 +3160,12 @@ int evergreen_irq_process(struct radeon_device *rdev)
case 233: /* GUI IDLE */
DRM_DEBUG("IH: GUI idle\n");
break;
case 244: /* DMA trap event */
if (rdev->family >= CHIP_CAYMAN) {
DRM_DEBUG("IH: DMA1 trap\n");
radeon_fence_process(rdev, CAYMAN_RING_TYPE_DMA1_INDEX);
}
break;
default:
DRM_DEBUG("Unhandled interrupt: %d %d\n", src_id, src_data);
break;
Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/gpu/drm/radeon/evergreend.h
Original file line number Diff line number Diff line change
Expand Up @@ -918,6 +918,8 @@
# define CTXEMPTY_INT_ENABLE (1 << 28)
#define DMA_TILING_CONFIG 0xD0B8

#define CAYMAN_DMA1_CNTL 0xd82c

/* async DMA packets */
#define DMA_PACKET(cmd, t, s, n) ((((cmd) & 0xF) << 28) | \
(((t) & 0x1) << 23) | \
Expand Down
Loading

0 comments on commit 3cc9d13

Please sign in to comment.