OSDN Git Service

drm/i915: Don't check tc_mode unless dealing with a TC PHY
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 28 Jan 2021 15:59:48 +0000 (17:59 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 29 Jan 2021 23:42:37 +0000 (01:42 +0200)
We shouldn't really trust tc_mode on non-TC PHYs since we never
initialize it explicitly. So let's check for the PHY type first.
Fortunately TC_PORT_TBT_ALT happens to be zero so I don't think
there's an actual bug here, just a possibility for a future one
if someone rearranges the enum values.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210128155948.13678-5-ville.syrjala@linux.intel.com
Reviewed-by: Imre Deak <imre.deak@intel.com>
drivers/gpu/drm/i915/display/intel_ddi.c

index d35eccd..c56de13 100644 (file)
@@ -3443,10 +3443,12 @@ icl_program_mg_dp_mode(struct intel_digital_port *dig_port,
 {
        struct drm_i915_private *dev_priv = to_i915(dig_port->base.base.dev);
        enum tc_port tc_port = intel_port_to_tc(dev_priv, dig_port->base.port);
+       enum phy phy = intel_port_to_phy(dev_priv, dig_port->base.port);
        u32 ln0, ln1, pin_assignment;
        u8 width;
 
-       if (dig_port->tc_mode == TC_PORT_TBT_ALT)
+       if (!intel_phy_is_tc(dev_priv, phy) ||
+           dig_port->tc_mode == TC_PORT_TBT_ALT)
                return;
 
        if (INTEL_GEN(dev_priv) >= 12) {