aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_ringbuffer.c
diff options
context:
space:
mode:
authorBen Widawsky <ben@bwidawsk.net>2013-05-28 22:22:23 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-05-31 14:54:12 -0400
commit9a8a2213a778509b724c8fda04be70528a1f7130 (patch)
treee8c395a08016def80211d6b69bfc20050db89fa8 /drivers/gpu/drm/i915/intel_ringbuffer.c
parentf72a1183b31cd1bebf926f904c1f025a90d153a1 (diff)
drm/i915: Vebox ringbuffer init
v2: Add set_seqno which didn't exist before rebase (Haihao) Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.c')
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 3022e1579e58..89dfc63677ad 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -916,7 +916,8 @@ void intel_ring_setup_status_page(struct intel_ring_buffer *ring)
916 mmio = BSD_HWS_PGA_GEN7; 916 mmio = BSD_HWS_PGA_GEN7;
917 break; 917 break;
918 case VECS: 918 case VECS:
919 BUG(); 919 mmio = VEBOX_HWS_PGA_GEN7;
920 break;
920 } 921 }
921 } else if (IS_GEN6(ring->dev)) { 922 } else if (IS_GEN6(ring->dev)) {
922 mmio = RING_HWS_PGA_GEN6(ring->mmio_base); 923 mmio = RING_HWS_PGA_GEN6(ring->mmio_base);
@@ -1909,6 +1910,38 @@ int intel_init_blt_ring_buffer(struct drm_device *dev)
1909 return intel_init_ring_buffer(dev, ring); 1910 return intel_init_ring_buffer(dev, ring);
1910} 1911}
1911 1912
1913int intel_init_vebox_ring_buffer(struct drm_device *dev)
1914{
1915 drm_i915_private_t *dev_priv = dev->dev_private;
1916 struct intel_ring_buffer *ring = &dev_priv->ring[VECS];
1917
1918 ring->name = "video enhancement ring";
1919 ring->id = VECS;
1920
1921 ring->mmio_base = VEBOX_RING_BASE;
1922 ring->write_tail = ring_write_tail;
1923 ring->flush = gen6_ring_flush;
1924 ring->add_request = gen6_add_request;
1925 ring->get_seqno = gen6_ring_get_seqno;
1926 ring->set_seqno = ring_set_seqno;
1927 ring->irq_enable_mask = 0;
1928 ring->irq_get = NULL;
1929 ring->irq_put = NULL;
1930 ring->dispatch_execbuffer = gen6_ring_dispatch_execbuffer;
1931 ring->sync_to = gen6_ring_sync;
1932 ring->semaphore_register[RCS] = MI_SEMAPHORE_SYNC_VER;
1933 ring->semaphore_register[VCS] = MI_SEMAPHORE_SYNC_VEV;
1934 ring->semaphore_register[BCS] = MI_SEMAPHORE_SYNC_VEB;
1935 ring->semaphore_register[VECS] = MI_SEMAPHORE_SYNC_INVALID;
1936 ring->signal_mbox[RCS] = GEN6_RVESYNC;
1937 ring->signal_mbox[VCS] = GEN6_VVESYNC;
1938 ring->signal_mbox[BCS] = GEN6_BVESYNC;
1939 ring->signal_mbox[VECS] = GEN6_NOSYNC;
1940 ring->init = init_ring_common;
1941
1942 return intel_init_ring_buffer(dev, ring);
1943}
1944
1912int 1945int
1913intel_ring_flush_all_caches(struct intel_ring_buffer *ring) 1946intel_ring_flush_all_caches(struct intel_ring_buffer *ring)
1914{ 1947{