aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_reg.h
diff options
context:
space:
mode:
authorBen Widawsky <ben@bwidawsk.net>2013-05-28 22:22:20 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-05-31 14:54:10 -0400
commit1950de14fd1b8ea27a411929156c7eccee2ad7c3 (patch)
treefdb2f5db92d5e9916fd87c6a0e0acb814b1e36b0 /drivers/gpu/drm/i915/i915_reg.h
parent4a3dd19d94c65323d71b2ffc7e63940f00acfb47 (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.h40
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)