diff options
author | Ben Widawsky <ben@bwidawsk.net> | 2013-05-28 22:22:20 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-05-31 14:54:10 -0400 |
commit | 1950de14fd1b8ea27a411929156c7eccee2ad7c3 (patch) | |
tree | fdb2f5db92d5e9916fd87c6a0e0acb814b1e36b0 /drivers/gpu/drm/i915/i915_reg.h | |
parent | 4a3dd19d94c65323d71b2ffc7e63940f00acfb47 (diff) |
drm/i915: Add VECS semaphore bits
Like the other rings, the VECS supports semaphores. The semaphore stuff
is a bit wonky so this patch on it's own should be nice for review.
This patch should have no functional impact.
v2: Fix the English parts of clarification (again, register names were
right, text was reversed) (Damien)
Restore the still valid invariant. (Damien)
The bsd semaphore register should be MI_SEMAPHORE_SYNC_VVE (Damien)
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_reg.h')
-rw-r--r-- | drivers/gpu/drm/i915/i915_reg.h | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 19f8e51d2bdc..41c5d45362b2 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h | |||
@@ -265,13 +265,19 @@ | |||
265 | #define MI_SEMAPHORE_UPDATE (1<<21) | 265 | #define MI_SEMAPHORE_UPDATE (1<<21) |
266 | #define MI_SEMAPHORE_COMPARE (1<<20) | 266 | #define MI_SEMAPHORE_COMPARE (1<<20) |
267 | #define MI_SEMAPHORE_REGISTER (1<<18) | 267 | #define MI_SEMAPHORE_REGISTER (1<<18) |
268 | #define MI_SEMAPHORE_SYNC_RB (0<<16) /* BCS wait for RCS (BRSYNC) */ | 268 | #define MI_SEMAPHORE_SYNC_VR (0<<16) /* RCS wait for VCS (RVSYNC) */ |
269 | #define MI_SEMAPHORE_SYNC_RV (2<<16) /* VCS wait for RCS (VRSYNC) */ | 269 | #define MI_SEMAPHORE_SYNC_VER (1<<16) /* RCS wait for VECS (RVESYNC) */ |
270 | #define MI_SEMAPHORE_SYNC_VR (0<<16) /* RCS wait for VCS (RVSYNC) */ | 270 | #define MI_SEMAPHORE_SYNC_BR (2<<16) /* RCS wait for BCS (RBSYNC) */ |
271 | #define MI_SEMAPHORE_SYNC_VB (2<<16) /* BCS wait for VCS (BVSYNC) */ | 271 | #define MI_SEMAPHORE_SYNC_BV (0<<16) /* VCS wait for BCS (VBSYNC) */ |
272 | #define MI_SEMAPHORE_SYNC_BV (0<<16) /* VCS wait for BCS (VBSYNC) */ | 272 | #define MI_SEMAPHORE_SYNC_VEV (1<<16) /* VCS wait for VECS (VVESYNC) */ |
273 | #define MI_SEMAPHORE_SYNC_BR (2<<16) /* RCS wait for BCS (RBSYNC) */ | 273 | #define MI_SEMAPHORE_SYNC_RV (2<<16) /* VCS wait for RCS (VRSYNC) */ |
274 | #define MI_SEMAPHORE_SYNC_INVALID (1<<0) | 274 | #define MI_SEMAPHORE_SYNC_RB (0<<16) /* BCS wait for RCS (BRSYNC) */ |
275 | #define MI_SEMAPHORE_SYNC_VEB (1<<16) /* BCS wait for VECS (BVESYNC) */ | ||
276 | #define MI_SEMAPHORE_SYNC_VB (2<<16) /* BCS wait for VCS (BVSYNC) */ | ||
277 | #define MI_SEMAPHORE_SYNC_BVE (0<<16) /* VECS wait for BCS (VEBSYNC) */ | ||
278 | #define MI_SEMAPHORE_SYNC_VVE (1<<16) /* VECS wait for VCS (VEVSYNC) */ | ||
279 | #define MI_SEMAPHORE_SYNC_RVE (2<<16) /* VECS wait for RCS (VERSYNC) */ | ||
280 | #define MI_SEMAPHORE_SYNC_INVALID (3<<16) | ||
275 | /* | 281 | /* |
276 | * 3D instructions used by the kernel | 282 | * 3D instructions used by the kernel |
277 | */ | 283 | */ |
@@ -581,6 +587,7 @@ | |||
581 | #define RENDER_RING_BASE 0x02000 | 587 | #define RENDER_RING_BASE 0x02000 |
582 | #define BSD_RING_BASE 0x04000 | 588 | #define BSD_RING_BASE 0x04000 |
583 | #define GEN6_BSD_RING_BASE 0x12000 | 589 | #define GEN6_BSD_RING_BASE 0x12000 |
590 | #define VEBOX_RING_BASE 0x1a000 | ||
584 | #define BLT_RING_BASE 0x22000 | 591 | #define BLT_RING_BASE 0x22000 |
585 | #define RING_TAIL(base) ((base)+0x30) | 592 | #define RING_TAIL(base) ((base)+0x30) |
586 | #define RING_HEAD(base) ((base)+0x34) | 593 | #define RING_HEAD(base) ((base)+0x34) |
@@ -588,13 +595,20 @@ | |||
588 | #define RING_CTL(base) ((base)+0x3c) | 595 | #define RING_CTL(base) ((base)+0x3c) |
589 | #define RING_SYNC_0(base) ((base)+0x40) | 596 | #define RING_SYNC_0(base) ((base)+0x40) |
590 | #define RING_SYNC_1(base) ((base)+0x44) | 597 | #define RING_SYNC_1(base) ((base)+0x44) |
591 | #define GEN6_RVSYNC (RING_SYNC_0(RENDER_RING_BASE)) | 598 | #define RING_SYNC_2(base) ((base)+0x48) |
592 | #define GEN6_RBSYNC (RING_SYNC_1(RENDER_RING_BASE)) | 599 | #define GEN6_RVSYNC (RING_SYNC_0(RENDER_RING_BASE)) |
593 | #define GEN6_VRSYNC (RING_SYNC_1(GEN6_BSD_RING_BASE)) | 600 | #define GEN6_RBSYNC (RING_SYNC_1(RENDER_RING_BASE)) |
594 | #define GEN6_VBSYNC (RING_SYNC_0(GEN6_BSD_RING_BASE)) | 601 | #define GEN6_RVESYNC (RING_SYNC_2(RENDER_RING_BASE)) |
595 | #define GEN6_BRSYNC (RING_SYNC_0(BLT_RING_BASE)) | 602 | #define GEN6_VBSYNC (RING_SYNC_0(GEN6_BSD_RING_BASE)) |
603 | #define GEN6_VRSYNC (RING_SYNC_1(GEN6_BSD_RING_BASE)) | ||
604 | #define GEN6_VVESYNC (RING_SYNC_2(GEN6_BSD_RING_BASE)) | ||
605 | #define GEN6_BRSYNC (RING_SYNC_0(BLT_RING_BASE)) | ||
606 | #define GEN6_BVSYNC (RING_SYNC_1(BLT_RING_BASE)) | ||
607 | #define GEN6_BVESYNC (RING_SYNC_2(BLT_RING_BASE)) | ||
608 | #define GEN6_VEBSYNC (RING_SYNC_0(VEBOX_RING_BASE)) | ||
609 | #define GEN6_VERSYNC (RING_SYNC_1(VEBOX_RING_BASE)) | ||
610 | #define GEN6_VEVSYNC (RING_SYNC_2(VEBOX_RING_BASE)) | ||
596 | #define GEN6_NOSYNC 0 | 611 | #define GEN6_NOSYNC 0 |
597 | #define GEN6_BVSYNC (RING_SYNC_1(BLT_RING_BASE)) | ||
598 | #define RING_MAX_IDLE(base) ((base)+0x54) | 612 | #define RING_MAX_IDLE(base) ((base)+0x54) |
599 | #define RING_HWS_PGA(base) ((base)+0x80) | 613 | #define RING_HWS_PGA(base) ((base)+0x80) |
600 | #define RING_HWS_PGA_GEN6(base) ((base)+0x2080) | 614 | #define RING_HWS_PGA_GEN6(base) ((base)+0x2080) |