aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/udl
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-09-02 22:05:01 -0400
committerDave Airlie <airlied@redhat.com>2012-09-02 22:05:01 -0400
commit65983bd605a12edd16a4f39f513aad65f1cad062 (patch)
treebf8c84598565c26e251efb9cb591977446e7e76b /drivers/gpu/drm/udl
parent93bb70e0c00f1be4cc857e4d8375c44058cce71e (diff)
parentd7c3b937bdf45f0b844400b7bf6fd3ed50bac604 (diff)
Merge branch 'for-airlied' of git://people.freedesktop.org/~danvet/drm-intel into drm-next
Daniel writes: "New stuff for -next. Highlights: - prep patches for the modeset rework. Note that one of those patches touches the fb helper in the common drm code. - hasw hdmi audio support (Wang Xingchao) - improved instdone dumping for gen7 (Ben) - unbound tracking and a few follow-up patches from Chris - dma_buf->begin/end_cpu_access plus fix for drm/udl (Dave) - improve mmio error reporting for hsw - prep patch for WQ_NON_REENTRANT removal (Tejun Heo) " * 'for-airlied' of git://people.freedesktop.org/~danvet/drm-intel: (41 commits) drm/i915: Remove __GFP_NO_KSWAPD drm/i915: disable rc6 on ilk when vt-d is enabled drm/i915: Avoid unbinding due to an interrupted pin_and_fence during execbuffer drm/i915: Use new INSTDONE registers (Gen7+) drm/i915: Add new INSTDONE registers drm/i915: Extract reading INSTDONE drm/i915: Use a non-blocking wait for set-to-domain ioctl drm/i915: Juggle code order to ease flow of the next patch drm/i915: Use cpu relocations if the object is in the GTT but not mappable drm/i915: Extract general object init routine drm/i915: Protect private gem objects from truncate (such as imported dmabuf) drm/i915: Only pwrite through the GTT if there is space in the aperture i915: use alloc_ordered_workqueue() instead of explicit UNBOUND w/ max_active = 1 drm/i915: Find unclaimed MMIO writes. drm/i915: Add ERR_INT to gen7 error state drm/i915: Cantiga+ cannot handle a hsync front porch of 0 drm/i915: fix reassignment of variable "intel_dp->DP" drm/i915: Try harder to allocate an mmap_offset drm/i915: Show pin count in debugfs drm/i915: Show (count, size) of purgeable objects in i915_gem_objects ...
Diffstat (limited to 'drivers/gpu/drm/udl')
-rw-r--r--drivers/gpu/drm/udl/udl_fb.c22
-rw-r--r--drivers/gpu/drm/udl/udl_gem.c7
2 files changed, 20 insertions, 9 deletions
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
index ce9a6117992..b8c00ed3305 100644
--- a/drivers/gpu/drm/udl/udl_fb.c
+++ b/drivers/gpu/drm/udl/udl_fb.c
@@ -13,6 +13,7 @@
13#include <linux/module.h> 13#include <linux/module.h>
14#include <linux/slab.h> 14#include <linux/slab.h>
15#include <linux/fb.h> 15#include <linux/fb.h>
16#include <linux/dma-buf.h>
16 17
17#include "drmP.h" 18#include "drmP.h"
18#include "drm.h" 19#include "drm.h"
@@ -377,16 +378,33 @@ static int udl_user_framebuffer_dirty(struct drm_framebuffer *fb,
377{ 378{
378 struct udl_framebuffer *ufb = to_udl_fb(fb); 379 struct udl_framebuffer *ufb = to_udl_fb(fb);
379 int i; 380 int i;
381 int ret = 0;
380 382
381 if (!ufb->active_16) 383 if (!ufb->active_16)
382 return 0; 384 return 0;
383 385
386 if (ufb->obj->base.import_attach) {
387 ret = dma_buf_begin_cpu_access(ufb->obj->base.import_attach->dmabuf,
388 0, ufb->obj->base.size,
389 DMA_FROM_DEVICE);
390 if (ret)
391 return ret;
392 }
393
384 for (i = 0; i < num_clips; i++) { 394 for (i = 0; i < num_clips; i++) {
385 udl_handle_damage(ufb, clips[i].x1, clips[i].y1, 395 ret = udl_handle_damage(ufb, clips[i].x1, clips[i].y1,
386 clips[i].x2 - clips[i].x1, 396 clips[i].x2 - clips[i].x1,
387 clips[i].y2 - clips[i].y1); 397 clips[i].y2 - clips[i].y1);
398 if (ret)
399 break;
388 } 400 }
389 return 0; 401
402 if (ufb->obj->base.import_attach) {
403 dma_buf_end_cpu_access(ufb->obj->base.import_attach->dmabuf,
404 0, ufb->obj->base.size,
405 DMA_FROM_DEVICE);
406 }
407 return ret;
390} 408}
391 409
392static void udl_user_framebuffer_destroy(struct drm_framebuffer *fb) 410static void udl_user_framebuffer_destroy(struct drm_framebuffer *fb)
diff --git a/drivers/gpu/drm/udl/udl_gem.c b/drivers/gpu/drm/udl/udl_gem.c
index 291ecc14558..47b25637583 100644
--- a/drivers/gpu/drm/udl/udl_gem.c
+++ b/drivers/gpu/drm/udl/udl_gem.c
@@ -181,11 +181,6 @@ int udl_gem_vmap(struct udl_gem_object *obj)
181 int ret; 181 int ret;
182 182
183 if (obj->base.import_attach) { 183 if (obj->base.import_attach) {
184 ret = dma_buf_begin_cpu_access(obj->base.import_attach->dmabuf,
185 0, obj->base.size, DMA_BIDIRECTIONAL);
186 if (ret)
187 return -EINVAL;
188
189 obj->vmapping = dma_buf_vmap(obj->base.import_attach->dmabuf); 184 obj->vmapping = dma_buf_vmap(obj->base.import_attach->dmabuf);
190 if (!obj->vmapping) 185 if (!obj->vmapping)
191 return -ENOMEM; 186 return -ENOMEM;
@@ -206,8 +201,6 @@ void udl_gem_vunmap(struct udl_gem_object *obj)
206{ 201{
207 if (obj->base.import_attach) { 202 if (obj->base.import_attach) {
208 dma_buf_vunmap(obj->base.import_attach->dmabuf, obj->vmapping); 203 dma_buf_vunmap(obj->base.import_attach->dmabuf, obj->vmapping);
209 dma_buf_end_cpu_access(obj->base.import_attach->dmabuf, 0,
210 obj->base.size, DMA_BIDIRECTIONAL);
211 return; 204 return;
212 } 205 }
213 206