Commit b329530c authored by Adam Jackson's avatar Adam Jackson Committed by Eric Anholt

drm/i915/dp: Correctly report eDP in the core connector type

Do this for both real eDP and for PCH_DP_D when used as the eDP
connection.
Signed-off-by: default avatarAdam Jackson <ajax@redhat.com>
Signed-off-by: default avatarEric Anholt <eric@anholt.net>
parent f0917379
...@@ -1492,6 +1492,7 @@ intel_dp_init(struct drm_device *dev, int output_reg) ...@@ -1492,6 +1492,7 @@ intel_dp_init(struct drm_device *dev, int output_reg)
struct intel_connector *intel_connector; struct intel_connector *intel_connector;
struct intel_dp_priv *dp_priv; struct intel_dp_priv *dp_priv;
const char *name = NULL; const char *name = NULL;
int type;
intel_encoder = kcalloc(sizeof(struct intel_encoder) + intel_encoder = kcalloc(sizeof(struct intel_encoder) +
sizeof(struct intel_dp_priv), 1, GFP_KERNEL); sizeof(struct intel_dp_priv), 1, GFP_KERNEL);
...@@ -1506,18 +1507,24 @@ intel_dp_init(struct drm_device *dev, int output_reg) ...@@ -1506,18 +1507,24 @@ intel_dp_init(struct drm_device *dev, int output_reg)
dp_priv = (struct intel_dp_priv *)(intel_encoder + 1); dp_priv = (struct intel_dp_priv *)(intel_encoder + 1);
if (HAS_PCH_SPLIT(dev) && (output_reg == PCH_DP_D))
if (intel_dpd_is_edp(dev))
dp_priv->is_pch_edp = true;
if (output_reg == DP_A || IS_PCH_eDP(dp_priv)) {
type = DRM_MODE_CONNECTOR_eDP;
intel_encoder->type = INTEL_OUTPUT_EDP;
} else {
type = DRM_MODE_CONNECTOR_DisplayPort;
intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT;
}
connector = &intel_connector->base; connector = &intel_connector->base;
drm_connector_init(dev, connector, &intel_dp_connector_funcs, drm_connector_init(dev, connector, &intel_dp_connector_funcs, type);
DRM_MODE_CONNECTOR_DisplayPort);
drm_connector_helper_add(connector, &intel_dp_connector_helper_funcs); drm_connector_helper_add(connector, &intel_dp_connector_helper_funcs);
connector->polled = DRM_CONNECTOR_POLL_HPD; connector->polled = DRM_CONNECTOR_POLL_HPD;
if (output_reg == DP_A)
intel_encoder->type = INTEL_OUTPUT_EDP;
else
intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT;
if (output_reg == DP_B || output_reg == PCH_DP_B) if (output_reg == DP_B || output_reg == PCH_DP_B)
intel_encoder->clone_mask = (1 << INTEL_DP_B_CLONE_BIT); intel_encoder->clone_mask = (1 << INTEL_DP_B_CLONE_BIT);
else if (output_reg == DP_C || output_reg == PCH_DP_C) else if (output_reg == DP_C || output_reg == PCH_DP_C)
...@@ -1528,11 +1535,6 @@ intel_dp_init(struct drm_device *dev, int output_reg) ...@@ -1528,11 +1535,6 @@ intel_dp_init(struct drm_device *dev, int output_reg)
if (IS_eDP(intel_encoder)) if (IS_eDP(intel_encoder))
intel_encoder->clone_mask = (1 << INTEL_EDP_CLONE_BIT); intel_encoder->clone_mask = (1 << INTEL_EDP_CLONE_BIT);
if (HAS_PCH_SPLIT(dev) && (output_reg == PCH_DP_D)) {
if (intel_dpd_is_edp(dev))
dp_priv->is_pch_edp = true;
}
intel_encoder->crtc_mask = (1 << 0) | (1 << 1); intel_encoder->crtc_mask = (1 << 0) | (1 << 1);
connector->interlace_allowed = true; connector->interlace_allowed = true;
connector->doublescan_allowed = 0; connector->doublescan_allowed = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment