diff options
author | Dave Airlie <airlied@redhat.com> | 2014-07-08 20:38:42 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-07-08 20:38:42 -0400 |
commit | ca5a1b9ba0fb5291b555a23b76dbe5f6c30bfd7a (patch) | |
tree | 9a012a2a610ad4e9500c8e4f0aa68ecdc23c4dba /drivers/gpu/drm/i915/intel_fbdev.c | |
parent | c7dbc6c9ae5c3baa3be755a228a349374d043b5b (diff) | |
parent | 34882298b93e998d5fccde852b860e8fbe6c8f6b (diff) |
Merge tag 'drm-intel-next-2014-06-20' of git://anongit.freedesktop.org/drm-intel into drm-next
- Accurate frontbuffer tracking and frontbuffer rendering invalidate, flush and
flip events. This is prep work for proper PSR support and should also be
useful for DRRS&fbc.
- Runtime suspend hardware on system suspend to support the new SOix sleep
states, from Jesse.
- PSR updates for broadwell (Rodrigo)
- Universal plane support for cursors (Matt Roper), including core drm patches.
- Prefault gtt mappings (Chris)
- baytrail write-enable pte bit support (Akash Goel)
- mmio based flips (Sourab Gupta) instead of blitter ring flips
- interrupt handling race fixes (Oscar Mateo)
And old, not yet merged features from the previous round:
- rps/turbo support for chv (Deepak)
- some other straggling chv patches (Ville)
- proper universal plane conversion for the primary plane (Matt Roper)
- ppgtt on vlv from Jesse
- pile of cleanups, little fixes for insane corner cases and improved debug
support all over
* tag 'drm-intel-next-2014-06-20' of git://anongit.freedesktop.org/drm-intel: (99 commits)
drm/i915: Update DRIVER_DATE to 20140620
drivers/i915: Fix unnoticed failure of init_ring_common()
drm/i915: Track frontbuffer invalidation/flushing
drm/i915: Use new frontbuffer bits to increase pll clock
drm/i915: don't take runtime PM reference around freeze/thaw
drm/i915: use runtime irq suspend/resume in freeze/thaw
drm/i915: Properly track domain of the fbcon fb
drm/i915: Print obj->frontbuffer_bits in debugfs output
drm/i915: Introduce accurate frontbuffer tracking
drm/i915: Drop schedule_back from psr_exit
drm/i915: Ditch intel_edp_psr_update
drm/i915: Drop unecessary complexity from psr_inactivate
drm/i915: Remove ctx->last_ring
drm/i915/chv: Ack interrupts before handling them (CHV)
drm/i915/bdw: Ack interrupts before handling them (GEN8)
drm/i915/vlv: Ack interrupts before handling them (VLV)
drm/i915: Ack interrupts before handling them (GEN5 - GEN7)
drm/i915: Don't BUG_ON in i915_gem_obj_offset
drm/i915: Grab dev->struct_mutex in i915_gem_pageflip_info
drm/i915: Add some L3 registers to the parser whitelist
...
Conflicts:
drivers/gpu/drm/i915/i915_drv.c
Diffstat (limited to 'drivers/gpu/drm/i915/intel_fbdev.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_fbdev.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c index 347d16220cd0..44e17fd781b8 100644 --- a/drivers/gpu/drm/i915/intel_fbdev.c +++ b/drivers/gpu/drm/i915/intel_fbdev.c | |||
@@ -43,10 +43,36 @@ | |||
43 | #include <drm/i915_drm.h> | 43 | #include <drm/i915_drm.h> |
44 | #include "i915_drv.h" | 44 | #include "i915_drv.h" |
45 | 45 | ||
46 | static int intel_fbdev_set_par(struct fb_info *info) | ||
47 | { | ||
48 | struct drm_fb_helper *fb_helper = info->par; | ||
49 | struct intel_fbdev *ifbdev = | ||
50 | container_of(fb_helper, struct intel_fbdev, helper); | ||
51 | int ret; | ||
52 | |||
53 | ret = drm_fb_helper_set_par(info); | ||
54 | |||
55 | if (ret == 0) { | ||
56 | /* | ||
57 | * FIXME: fbdev presumes that all callbacks also work from | ||
58 | * atomic contexts and relies on that for emergency oops | ||
59 | * printing. KMS totally doesn't do that and the locking here is | ||
60 | * by far not the only place this goes wrong. Ignore this for | ||
61 | * now until we solve this for real. | ||
62 | */ | ||
63 | mutex_lock(&fb_helper->dev->struct_mutex); | ||
64 | ret = i915_gem_object_set_to_gtt_domain(ifbdev->fb->obj, | ||
65 | true); | ||
66 | mutex_unlock(&fb_helper->dev->struct_mutex); | ||
67 | } | ||
68 | |||
69 | return ret; | ||
70 | } | ||
71 | |||
46 | static struct fb_ops intelfb_ops = { | 72 | static struct fb_ops intelfb_ops = { |
47 | .owner = THIS_MODULE, | 73 | .owner = THIS_MODULE, |
48 | .fb_check_var = drm_fb_helper_check_var, | 74 | .fb_check_var = drm_fb_helper_check_var, |
49 | .fb_set_par = drm_fb_helper_set_par, | 75 | .fb_set_par = intel_fbdev_set_par, |
50 | .fb_fillrect = cfb_fillrect, | 76 | .fb_fillrect = cfb_fillrect, |
51 | .fb_copyarea = cfb_copyarea, | 77 | .fb_copyarea = cfb_copyarea, |
52 | .fb_imageblit = cfb_imageblit, | 78 | .fb_imageblit = cfb_imageblit, |
@@ -417,7 +443,7 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper, | |||
417 | } | 443 | } |
418 | crtcs[i] = new_crtc; | 444 | crtcs[i] = new_crtc; |
419 | 445 | ||
420 | DRM_DEBUG_KMS("connector %s on pipe %d [CRTC:%d]: %dx%d%s\n", | 446 | DRM_DEBUG_KMS("connector %s on pipe %c [CRTC:%d]: %dx%d%s\n", |
421 | connector->name, | 447 | connector->name, |
422 | pipe_name(to_intel_crtc(encoder->crtc)->pipe), | 448 | pipe_name(to_intel_crtc(encoder->crtc)->pipe), |
423 | encoder->crtc->base.id, | 449 | encoder->crtc->base.id, |