diff options
author | Ben Widawsky <ben@bwidawsk.net> | 2013-05-28 22:22:23 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-05-31 14:54:12 -0400 |
commit | 9a8a2213a778509b724c8fda04be70528a1f7130 (patch) | |
tree | e8c395a08016def80211d6b69bfc20050db89fa8 /drivers/gpu/drm/i915/intel_ringbuffer.c | |
parent | f72a1183b31cd1bebf926f904c1f025a90d153a1 (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.c | 35 |
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 | ||
1913 | int 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 | |||
1912 | int | 1945 | int |
1913 | intel_ring_flush_all_caches(struct intel_ring_buffer *ring) | 1946 | intel_ring_flush_all_caches(struct intel_ring_buffer *ring) |
1914 | { | 1947 | { |