aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_fbdev.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2014-07-08 20:38:42 -0400
committerDave Airlie <airlied@redhat.com>2014-07-08 20:38:42 -0400
commitca5a1b9ba0fb5291b555a23b76dbe5f6c30bfd7a (patch)
tree9a012a2a610ad4e9500c8e4f0aa68ecdc23c4dba /drivers/gpu/drm/i915/intel_fbdev.c
parentc7dbc6c9ae5c3baa3be755a228a349374d043b5b (diff)
parent34882298b93e998d5fccde852b860e8fbe6c8f6b (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.c30
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
46static 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
46static struct fb_ops intelfb_ops = { 72static 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,