diff options
author | Dave Airlie <airlied@redhat.com> | 2014-05-02 00:02:48 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-07-21 21:20:26 -0400 |
commit | 0e32b39ceed665bfa4a77a4bc307b6652b991632 (patch) | |
tree | 7d94f2fdb7d3c1e8c920193b0a067a0487f27a34 /drivers/gpu/drm/i915/intel_fbdev.c | |
parent | d05410f9a450df8848196ce87f1c9ef14ff89cb5 (diff) |
drm/i915: add DP 1.2 MST support (v0.7)
This adds DP 1.2 MST support on Haswell systems.
Notes:
a) this reworks irq handling for DP MST ports, so that we can
avoid the mode config locking in the current hpd handlers, as
we need to process up/down msgs at a better time.
Changes since v0.1:
use PORT_PCH_HOTPLUG to detect short vs long pulses
add a workqueue to deal with digital events as they can get blocked on the
main workqueue beyong mode_config mutex
fix a bunch of modeset checker warnings
acks irqs in the driver
cleanup the MST encoders
Changes since v0.2:
check irq status again in work handler
move around bring up and tear down to fix DPMS on/off
use path properties.
Changes since v0.3:
updates for mst apis
more state checker fixes
irq handling improvements
fbcon handling support
improved reference counting of link - fixes redocking.
Changes since v0.4:
handle gpu reset hpd reinit without oopsing
check link status on HPD irqs
fix suspend/resume
Changes since v0.5:
use proper functions to get max link/lane counts
fix another checker backtrace - due to connectors disappearing.
set output type in more places fro, unknown->displayport
don't talk to devices if no HPD asserted
check mst on short irqs only
check link status properly
rebase onto prepping irq changes.
drop unsued force_act
Changes since v0.6:
cleanup unused struct entry.
[airlied: fix some sparse warnings].
Reviewed-by: Todd Previte <tprevite@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_fbdev.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_fbdev.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c index f475414671d8..7cdb8861bb7c 100644 --- a/drivers/gpu/drm/i915/intel_fbdev.c +++ b/drivers/gpu/drm/i915/intel_fbdev.c | |||
@@ -375,6 +375,11 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper, | |||
375 | } | 375 | } |
376 | 376 | ||
377 | encoder = connector->encoder; | 377 | encoder = connector->encoder; |
378 | if (!encoder) { | ||
379 | struct drm_connector_helper_funcs *connector_funcs; | ||
380 | connector_funcs = connector->helper_private; | ||
381 | encoder = connector_funcs->best_encoder(connector); | ||
382 | } | ||
378 | if (!encoder || WARN_ON(!encoder->crtc)) { | 383 | if (!encoder || WARN_ON(!encoder->crtc)) { |
379 | DRM_DEBUG_KMS("connector %s has no encoder or crtc, skipping\n", | 384 | DRM_DEBUG_KMS("connector %s has no encoder or crtc, skipping\n", |
380 | connector->name); | 385 | connector->name); |