mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-22 00:09:45 +07:00
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: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20181003184210.1306-1-ville.syrjala@linux.intel.com Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
This commit is contained in:
parent
0fc645f338
commit
9dbf5a4efd
@ -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)
|
|||||||
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user