Commit 9dbf5a4e authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Provide more clues as to why MST is/is not used

Always print out the information whether the port and sink can each
do MST. And let's include the modparam in the debug output as well.
Makes life a little less confusing when you don't have to wonder
why MST isn't kicking in.

This does cause a slight change in our behaviour towards the sink.
Previously we only read the MSTM_CAP register after passing all
the other checks. Now we will read that register regardless. Hopefully
some crazy sink doesn't get confused by a simple register read.
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181003184210.1306-1-ville.syrjala@linux.intel.comReviewed-by: default avatarDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
parent 0fc645f3
...@@ -4050,16 +4050,10 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp) ...@@ -4050,16 +4050,10 @@ intel_dp_get_dpcd(struct intel_dp *intel_dp)
} }
static bool static bool
intel_dp_can_mst(struct intel_dp *intel_dp) intel_dp_sink_can_mst(struct intel_dp *intel_dp)
{ {
u8 mstm_cap; u8 mstm_cap;
if (!i915_modparams.enable_dp_mst)
return false;
if (!intel_dp->can_mst)
return false;
if (intel_dp->dpcd[DP_DPCD_REV] < 0x12) if (intel_dp->dpcd[DP_DPCD_REV] < 0x12)
return false; return false;
...@@ -4069,21 +4063,30 @@ intel_dp_can_mst(struct intel_dp *intel_dp) ...@@ -4069,21 +4063,30 @@ intel_dp_can_mst(struct intel_dp *intel_dp)
return mstm_cap & DP_MST_CAP; return mstm_cap & DP_MST_CAP;
} }
static bool
intel_dp_can_mst(struct intel_dp *intel_dp)
{
return i915_modparams.enable_dp_mst &&
intel_dp->can_mst &&
intel_dp_sink_can_mst(intel_dp);
}
static void static void
intel_dp_configure_mst(struct intel_dp *intel_dp) intel_dp_configure_mst(struct intel_dp *intel_dp)
{ {
if (!i915_modparams.enable_dp_mst) struct intel_encoder *encoder =
return; &dp_to_dig_port(intel_dp)->base;
bool sink_can_mst = intel_dp_sink_can_mst(intel_dp);
DRM_DEBUG_KMS("MST support? port %c: %s, sink: %s, modparam: %s\n",
port_name(encoder->port), yesno(intel_dp->can_mst),
yesno(sink_can_mst), yesno(i915_modparams.enable_dp_mst));
if (!intel_dp->can_mst) if (!intel_dp->can_mst)
return; return;
intel_dp->is_mst = intel_dp_can_mst(intel_dp); intel_dp->is_mst = sink_can_mst &&
i915_modparams.enable_dp_mst;
if (intel_dp->is_mst)
DRM_DEBUG_KMS("Sink is MST capable\n");
else
DRM_DEBUG_KMS("Sink is not MST capable\n");
drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr, drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr,
intel_dp->is_mst); intel_dp->is_mst);
......
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