diff options
author | Dave Airlie <airlied@redhat.com> | 2012-09-02 22:05:01 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-09-02 22:05:01 -0400 |
commit | 65983bd605a12edd16a4f39f513aad65f1cad062 (patch) | |
tree | bf8c84598565c26e251efb9cb591977446e7e76b /drivers/gpu/drm/udl | |
parent | 93bb70e0c00f1be4cc857e4d8375c44058cce71e (diff) | |
parent | d7c3b937bdf45f0b844400b7bf6fd3ed50bac604 (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.c | 22 | ||||
-rw-r--r-- | drivers/gpu/drm/udl/udl_gem.c | 7 |
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 | ||
392 | static void udl_user_framebuffer_destroy(struct drm_framebuffer *fb) | 410 | static 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 | ||