drm/i915: Initialize LVDS and eDP outputs before anything else
This makes them sort to the front in X, which makes them likely to be the primary outputs if you haven't specified a preference in your DE, which is likely to be what you want. Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
b329530ca7
commit
cb0953d734
|
@ -5111,19 +5111,26 @@ static void intel_setup_outputs(struct drm_device *dev)
|
|||
{
|
||||
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
struct drm_encoder *encoder;
|
||||
bool dpd_is_edp = false;
|
||||
|
||||
intel_crt_init(dev);
|
||||
|
||||
/* Set up integrated LVDS */
|
||||
if (IS_MOBILE(dev) && !IS_I830(dev))
|
||||
intel_lvds_init(dev);
|
||||
|
||||
if (HAS_PCH_SPLIT(dev)) {
|
||||
int found;
|
||||
dpd_is_edp = intel_dpd_is_edp(dev);
|
||||
|
||||
if (IS_MOBILE(dev) && (I915_READ(DP_A) & DP_DETECTED))
|
||||
intel_dp_init(dev, DP_A);
|
||||
|
||||
if (dpd_is_edp && (I915_READ(PCH_DP_D) & DP_DETECTED))
|
||||
intel_dp_init(dev, PCH_DP_D);
|
||||
}
|
||||
|
||||
intel_crt_init(dev);
|
||||
|
||||
if (HAS_PCH_SPLIT(dev)) {
|
||||
int found;
|
||||
|
||||
if (I915_READ(HDMIB) & PORT_DETECTED) {
|
||||
/* PCH SDVOB multiplex with HDMIB */
|
||||
found = intel_sdvo_init(dev, PCH_SDVOB);
|
||||
|
@ -5142,7 +5149,7 @@ static void intel_setup_outputs(struct drm_device *dev)
|
|||
if (I915_READ(PCH_DP_C) & DP_DETECTED)
|
||||
intel_dp_init(dev, PCH_DP_C);
|
||||
|
||||
if (I915_READ(PCH_DP_D) & DP_DETECTED)
|
||||
if (!dpd_is_edp && (I915_READ(PCH_DP_D) & DP_DETECTED))
|
||||
intel_dp_init(dev, PCH_DP_D);
|
||||
|
||||
} else if (SUPPORTS_DIGITAL_OUTPUTS(dev)) {
|
||||
|
|
|
@ -1464,7 +1464,7 @@ intel_trans_dp_port_sel (struct drm_crtc *crtc)
|
|||
}
|
||||
|
||||
/* check the VBT to see whether the eDP is on DP-D port */
|
||||
static bool intel_dpd_is_edp(struct drm_device *dev)
|
||||
bool intel_dpd_is_edp(struct drm_device *dev)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
struct child_device_config *p_child;
|
||||
|
|
|
@ -180,6 +180,7 @@ void
|
|||
intel_dp_set_m_n(struct drm_crtc *crtc, struct drm_display_mode *mode,
|
||||
struct drm_display_mode *adjusted_mode);
|
||||
extern bool intel_pch_has_edp(struct drm_crtc *crtc);
|
||||
extern bool intel_dpd_is_edp(struct drm_device *dev);
|
||||
extern void intel_edp_link_config (struct intel_encoder *, int *, int *);
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue