diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index a06d186a14a5..016a9237a020 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
@@ -1492,6 +1492,7 @@ intel_dp_init(struct drm_device *dev, int output_reg) | |||
1492 | struct intel_connector *intel_connector; | 1492 | struct intel_connector *intel_connector; |
1493 | struct intel_dp_priv *dp_priv; | 1493 | struct intel_dp_priv *dp_priv; |
1494 | const char *name = NULL; | 1494 | const char *name = NULL; |
1495 | int type; | ||
1495 | 1496 | ||
1496 | intel_encoder = kcalloc(sizeof(struct intel_encoder) + | 1497 | intel_encoder = kcalloc(sizeof(struct intel_encoder) + |
1497 | sizeof(struct intel_dp_priv), 1, GFP_KERNEL); | 1498 | sizeof(struct intel_dp_priv), 1, GFP_KERNEL); |
@@ -1506,18 +1507,24 @@ intel_dp_init(struct drm_device *dev, int output_reg) | |||
1506 | 1507 | ||
1507 | dp_priv = (struct intel_dp_priv *)(intel_encoder + 1); | 1508 | dp_priv = (struct intel_dp_priv *)(intel_encoder + 1); |
1508 | 1509 | ||
1510 | if (HAS_PCH_SPLIT(dev) && (output_reg == PCH_DP_D)) | ||
1511 | if (intel_dpd_is_edp(dev)) | ||
1512 | dp_priv->is_pch_edp = true; | ||
1513 | |||
1514 | if (output_reg == DP_A || IS_PCH_eDP(dp_priv)) { | ||
1515 | type = DRM_MODE_CONNECTOR_eDP; | ||
1516 | intel_encoder->type = INTEL_OUTPUT_EDP; | ||
1517 | } else { | ||
1518 | type = DRM_MODE_CONNECTOR_DisplayPort; | ||
1519 | intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT; | ||
1520 | } | ||
1521 | |||
1509 | connector = &intel_connector->base; | 1522 | connector = &intel_connector->base; |
1510 | drm_connector_init(dev, connector, &intel_dp_connector_funcs, | 1523 | drm_connector_init(dev, connector, &intel_dp_connector_funcs, type); |
1511 | DRM_MODE_CONNECTOR_DisplayPort); | ||
1512 | drm_connector_helper_add(connector, &intel_dp_connector_helper_funcs); | 1524 | drm_connector_helper_add(connector, &intel_dp_connector_helper_funcs); |
1513 | 1525 | ||
1514 | connector->polled = DRM_CONNECTOR_POLL_HPD; | 1526 | connector->polled = DRM_CONNECTOR_POLL_HPD; |
1515 | 1527 | ||
1516 | if (output_reg == DP_A) | ||
1517 | intel_encoder->type = INTEL_OUTPUT_EDP; | ||
1518 | else | ||
1519 | intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT; | ||
1520 | |||
1521 | if (output_reg == DP_B || output_reg == PCH_DP_B) | 1528 | if (output_reg == DP_B || output_reg == PCH_DP_B) |
1522 | intel_encoder->clone_mask = (1 << INTEL_DP_B_CLONE_BIT); | 1529 | intel_encoder->clone_mask = (1 << INTEL_DP_B_CLONE_BIT); |
1523 | else if (output_reg == DP_C || output_reg == PCH_DP_C) | 1530 | 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 | if (IS_eDP(intel_encoder)) | 1535 | if (IS_eDP(intel_encoder)) |
1529 | intel_encoder->clone_mask = (1 << INTEL_EDP_CLONE_BIT); | 1536 | intel_encoder->clone_mask = (1 << INTEL_EDP_CLONE_BIT); |
1530 | 1537 | ||
1531 | if (HAS_PCH_SPLIT(dev) && (output_reg == PCH_DP_D)) { | ||
1532 | if (intel_dpd_is_edp(dev)) | ||
1533 | dp_priv->is_pch_edp = true; | ||
1534 | } | ||
1535 | |||
1536 | intel_encoder->crtc_mask = (1 << 0) | (1 << 1); | 1538 | intel_encoder->crtc_mask = (1 << 0) | (1 << 1); |
1537 | connector->interlace_allowed = true; | 1539 | connector->interlace_allowed = true; |
1538 | connector->doublescan_allowed = 0; | 1540 | connector->doublescan_allowed = 0; |