Module Name:    src
Committed By:   riastradh
Date:           Wed Jul 24 02:59:46 UTC 2013

Modified Files:
        src/sys/external/bsd/drm2/dist/drm/i915 [riastradh-drm2]:
            intel_ringbuffer.c intel_ringbuffer.h

Log Message:
Switch intel_ring_buffers from Linux ioremap to drm_ioremap.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1.2.2 -r1.1.1.1.2.3 \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c
cvs rdiff -u -r1.1.1.1.2.3 -r1.1.1.1.2.4 \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c:1.1.1.1.2.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c:1.1.1.1.2.3
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c:1.1.1.1.2.2	Tue Jul 23 21:28:22 2013
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c	Wed Jul 24 02:59:46 2013
@@ -1181,6 +1181,21 @@ static int intel_init_ring_buffer(struct
 	if (ret)
 		goto err_unpin;
 
+#ifdef __NetBSD__
+	ring->virtual_start_map.offset = (dev_priv->mm.gtt->gma_bus_addr +
+	    obj->gtt_offset);
+	ring->virtual_start_map.size = ring->size;
+	ring->virtual_start_map.flags = 0;
+	ring->virtual_start_map.flags |= _DRM_RESTRICTED;
+	ring->virtual_start_map.flags |= _DRM_KERNEL;
+	ring->virtual_start_map.flags |= _DRM_WRITE_COMBINING;
+	ring->virtual_start_map.flags |= _DRM_DRIVER;
+	ret = drm_ioremap(dev, &ring->virtual_start_map);
+	if (ret) {
+		DRM_ERROR("failed to map ring buffer\n");
+		goto err_unpin;
+	}
+#else
 	ring->virtual_start =
 		ioremap_wc(dev_priv->mm.gtt->gma_bus_addr + obj->gtt_offset,
 			   ring->size);
@@ -1189,6 +1204,7 @@ static int intel_init_ring_buffer(struct
 		ret = -EINVAL;
 		goto err_unpin;
 	}
+#endif
 
 	ret = ring->init(ring);
 	if (ret)
@@ -1205,7 +1221,11 @@ static int intel_init_ring_buffer(struct
 	return 0;
 
 err_unmap:
+#ifdef __NetBSD__
+	drm_iounmap(dev, &ring->virtual_start_map);
+#else
 	iounmap(ring->virtual_start);
+#endif
 err_unpin:
 	i915_gem_object_unpin(obj);
 err_unref:
@@ -1233,7 +1253,11 @@ void intel_cleanup_ring_buffer(struct in
 
 	I915_WRITE_CTL(ring, 0);
 
+#ifdef __NetBSD__
+	drm_iounmap(dev, &ring->virtual_start_map);
+#else
 	iounmap(ring->virtual_start);
+#endif
 
 	i915_gem_object_unpin(ring->obj);
 	drm_gem_object_unreference(&ring->obj->base);
@@ -1722,12 +1746,28 @@ int intel_render_ring_init_dri(struct dr
 	if (IS_I830(ring->dev) || IS_845G(ring->dev))
 		ring->effective_size -= 128;
 
+#ifdef __NetBSD__
+	ring->virtual_start_map.offset = start;
+	ring->virtual_start_map.size = size;
+	ring->virtual_start_map.type = _DRM_REGISTERS;
+	ring->virtual_start_map.flags = 0;
+	ring->virtual_start_map.flags |= _DRM_RESTRICTED;
+	ring->virtual_start_map.flags |= _DRM_KERNEL;
+	ring->virtual_start_map.flags |= _DRM_WRITE_COMBINING;
+	ring->virtual_start_map.flags |= _DRM_DRIVER;
+	ret = drm_ioremap(dev, &ring->virtual_start_map);
+	if (ret) {
+		DRM_ERROR("cannot ioremap virtual address for ring buffer\n");
+		return ret;
+	}
+#else
 	ring->virtual_start = ioremap_wc(start, size);
 	if (ring->virtual_start == NULL) {
 		DRM_ERROR("can not ioremap virtual address for"
 			  " ring buffer\n");
 		return -ENOMEM;
 	}
+#endif
 
 	if (!I915_NEED_GFX_HWS(dev)) {
 		ret = init_phys_hws_pga(ring);

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h:1.1.1.1.2.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h:1.1.1.1.2.4
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h:1.1.1.1.2.3	Wed Jul 24 02:59:29 2013
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h	Wed Jul 24 02:59:46 2013
@@ -48,7 +48,11 @@ struct  intel_ring_buffer {
 	} id;
 #define I915_NUM_RINGS 3
 	u32		mmio_base;
+#ifdef __NetBSD__
+	struct drm_local_map	virtual_start_map;
+#else
 	void		__iomem *virtual_start;
+#endif
 	struct		drm_device *dev;
 	struct		drm_i915_gem_object *obj;
 
@@ -205,7 +209,11 @@ int __must_check intel_ring_begin(struct
 static inline void intel_ring_emit(struct intel_ring_buffer *ring,
 				   u32 data)
 {
+#ifdef __NetBSD__
+	DRM_WRITE32(&ring->virtual_start_map, ring->tail, data);
+#else
 	iowrite32(data, ring->virtual_start + ring->tail);
+#endif
 	ring->tail += 4;
 }
 void intel_ring_advance(struct intel_ring_buffer *ring);

Reply via email to