diff -Naur linux-2.6.36-rc3.orig/drivers/gpu/drm/i915/intel_dp.c linux-2.6.36-rc3/drivers/gpu/drm/i915/intel_dp.c --- linux-2.6.36-rc3.orig/drivers/gpu/drm/i915/intel_dp.c 2010-08-29 17:36:04.000000000 +0200 +++ linux-2.6.36-rc3/drivers/gpu/drm/i915/intel_dp.c 2010-09-03 11:52:46.378758682 +0200 @@ -1566,7 +1566,6 @@ struct intel_encoder *intel_encoder; struct intel_connector *intel_connector; const char *name = NULL; - int type; intel_dp = kzalloc(sizeof(struct intel_dp), GFP_KERNEL); if (!intel_dp) @@ -1579,24 +1578,18 @@ } intel_encoder = &intel_dp->base; - if (HAS_PCH_SPLIT(dev) && output_reg == PCH_DP_D) - if (intel_dpd_is_edp(dev)) - intel_dp->is_pch_edp = true; - - if (output_reg == DP_A || IS_PCH_eDP(intel_dp)) { - 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; - drm_connector_init(dev, connector, &intel_dp_connector_funcs, type); + drm_connector_init(dev, connector, &intel_dp_connector_funcs, + DRM_MODE_CONNECTOR_DisplayPort); drm_connector_helper_add(connector, &intel_dp_connector_helper_funcs); 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) intel_encoder->clone_mask = (1 << INTEL_DP_B_CLONE_BIT); else if (output_reg == DP_C || output_reg == PCH_DP_C) @@ -1607,6 +1600,11 @@ if (IS_eDP(intel_dp)) 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)) + intel_dp->is_pch_edp = true; + } + intel_encoder->crtc_mask = (1 << 0) | (1 << 1); connector->interlace_allowed = true; connector->doublescan_allowed = 0;