Skip to content

Commit 10d987f

Browse files
author
Lucas De Marchi
committed
drm/i915: fix port checks for MST support on gen >= 11
Both Ice Lake and Elkhart Lake (gen 11) support MST on all external connections except DDI A. Tiger Lake (gen 12) supports on all external connections. Move the check to happen inside intel_dp_mst_encoder_init() and add specific platform checks. v2: Replace != with == checks for ports on gen < 11 (Ville) Signed-off-by: Lucas De Marchi <[email protected]> Reviewed-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 327f8d8 commit 10d987f

2 files changed

Lines changed: 18 additions & 11 deletions

File tree

drivers/gpu/drm/i915/display/intel_dp.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7468,11 +7468,8 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
74687468
intel_connector->get_hw_state = intel_connector_get_hw_state;
74697469

74707470
/* init MST on ports that can support it */
7471-
if (HAS_DP_MST(dev_priv) && !intel_dp_is_edp(intel_dp) &&
7472-
(port == PORT_B || port == PORT_C ||
7473-
port == PORT_D || port == PORT_F))
7474-
intel_dp_mst_encoder_init(intel_dig_port,
7475-
intel_connector->base.base.id);
7471+
intel_dp_mst_encoder_init(intel_dig_port,
7472+
intel_connector->base.base.id);
74767473

74777474
if (!intel_edp_init_connector(intel_dp, intel_connector)) {
74787475
intel_dp_aux_fini(intel_dp);

drivers/gpu/drm/i915/display/intel_dp_mst.c

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -655,21 +655,31 @@ intel_dp_mst_encoder_active_links(struct intel_digital_port *intel_dig_port)
655655
int
656656
intel_dp_mst_encoder_init(struct intel_digital_port *intel_dig_port, int conn_base_id)
657657
{
658+
struct drm_i915_private *i915 = to_i915(intel_dig_port->base.base.dev);
658659
struct intel_dp *intel_dp = &intel_dig_port->dp;
659-
struct drm_device *dev = intel_dig_port->base.base.dev;
660+
enum port port = intel_dig_port->base.port;
660661
int ret;
661662

662-
intel_dp->can_mst = true;
663+
if (!HAS_DP_MST(i915) || intel_dp_is_edp(intel_dp))
664+
return 0;
665+
666+
if (INTEL_GEN(i915) < 12 && port == PORT_A)
667+
return 0;
668+
669+
if (INTEL_GEN(i915) < 11 && port == PORT_E)
670+
return 0;
671+
663672
intel_dp->mst_mgr.cbs = &mst_cbs;
664673

665674
/* create encoders */
666675
intel_dp_create_fake_mst_encoders(intel_dig_port);
667-
ret = drm_dp_mst_topology_mgr_init(&intel_dp->mst_mgr, dev,
676+
ret = drm_dp_mst_topology_mgr_init(&intel_dp->mst_mgr, &i915->drm,
668677
&intel_dp->aux, 16, 3, conn_base_id);
669-
if (ret) {
670-
intel_dp->can_mst = false;
678+
if (ret)
671679
return ret;
672-
}
680+
681+
intel_dp->can_mst = true;
682+
673683
return 0;
674684
}
675685

0 commit comments

Comments
 (0)