Message ID | 20210128155948.13678-1-ville.syrjala@linux.intel.com |
---|---|
State | Accepted |
Commit | f8c6b615b921d8a1bcd74870f9105e62b0bceff3 |
Headers | show |
Series | [1/5] drm/i915: Skip vswing programming for TBT | expand |
On Thu, Jan 28, 2021 at 05:59:44PM +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > In thunderbolt mode the PHY is owned by the thunderbolt controller. > We are not supposed to touch it. So skip the vswing programming > as well (we already skipped the other steps not applicable to TBT). > > Touching this stuff could supposedly interfere with the PHY > programming done by the thunderbolt controller. > > Cc: stable@vger.kernel.org > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Matches the spec: Reviewed-by: Imre Deak <imre.deak@intel.com> > --- > drivers/gpu/drm/i915/display/intel_ddi.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c > index 9506b8048530..c94650488dc1 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -2827,6 +2827,9 @@ static void icl_mg_phy_ddi_vswing_sequence(struct intel_encoder *encoder, > int n_entries, ln; > u32 val; > > + if (enc_to_dig_port(encoder)->tc_mode == TC_PORT_TBT_ALT) > + return; > + > ddi_translations = icl_get_mg_buf_trans(encoder, crtc_state, &n_entries); > > if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations)) > @@ -2962,6 +2965,9 @@ tgl_dkl_phy_ddi_vswing_sequence(struct intel_encoder *encoder, > u32 val, dpcnt_mask, dpcnt_val; > int n_entries, ln; > > + if (enc_to_dig_port(encoder)->tc_mode == TC_PORT_TBT_ALT) > + return; > + > ddi_translations = tgl_get_dkl_buf_trans(encoder, crtc_state, &n_entries); > > if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations)) > -- > 2.26.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
On Thu, Jan 28, 2021 at 05:59:45PM +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Reduce the copypasta by pulling the combo PHY lane > power up stuff into a helper. We'll have a third user soon. > > Cc: stable@vger.kernel.org > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Imre Deak <imre.deak@intel.com> > --- > drivers/gpu/drm/i915/display/intel_ddi.c | 35 +++++++++++++----------- > 1 file changed, 19 insertions(+), 16 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c > index c94650488dc1..88cc6e2fbe91 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -3641,6 +3641,23 @@ static void intel_ddi_disable_fec_state(struct intel_encoder *encoder, > intel_de_posting_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); > } > > +static void intel_ddi_power_up_lanes(struct intel_encoder *encoder, > + const struct intel_crtc_state *crtc_state) > +{ > + struct drm_i915_private *i915 = to_i915(encoder->base.dev); > + struct intel_digital_port *dig_port = enc_to_dig_port(encoder); > + enum phy phy = intel_port_to_phy(i915, encoder->port); > + > + if (intel_phy_is_combo(i915, phy)) { > + bool lane_reversal = > + dig_port->saved_port_bits & DDI_BUF_PORT_REVERSAL; > + > + intel_combo_phy_power_up_lanes(i915, phy, false, > + crtc_state->lane_count, > + lane_reversal); > + } > +} > + > static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > const struct intel_crtc_state *crtc_state, > @@ -3732,14 +3749,7 @@ static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state, > * 7.f Combo PHY: Configure PORT_CL_DW10 Static Power Down to power up > * the used lanes of the DDI. > */ > - if (intel_phy_is_combo(dev_priv, phy)) { > - bool lane_reversal = > - dig_port->saved_port_bits & DDI_BUF_PORT_REVERSAL; > - > - intel_combo_phy_power_up_lanes(dev_priv, phy, false, > - crtc_state->lane_count, > - lane_reversal); > - } > + intel_ddi_power_up_lanes(encoder, crtc_state); > > /* > * 7.g Configure and enable DDI_BUF_CTL > @@ -3830,14 +3840,7 @@ static void hsw_ddi_pre_enable_dp(struct intel_atomic_state *state, > else > intel_prepare_dp_ddi_buffers(encoder, crtc_state); > > - if (intel_phy_is_combo(dev_priv, phy)) { > - bool lane_reversal = > - dig_port->saved_port_bits & DDI_BUF_PORT_REVERSAL; > - > - intel_combo_phy_power_up_lanes(dev_priv, phy, false, > - crtc_state->lane_count, > - lane_reversal); > - } > + intel_ddi_power_up_lanes(encoder, crtc_state); > > intel_ddi_init_dp_buf_reg(encoder, crtc_state); > if (!is_mst) > -- > 2.26.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c index 9506b8048530..c94650488dc1 100644 --- a/drivers/gpu/drm/i915/display/intel_ddi.c +++ b/drivers/gpu/drm/i915/display/intel_ddi.c @@ -2827,6 +2827,9 @@ static void icl_mg_phy_ddi_vswing_sequence(struct intel_encoder *encoder, int n_entries, ln; u32 val; + if (enc_to_dig_port(encoder)->tc_mode == TC_PORT_TBT_ALT) + return; + ddi_translations = icl_get_mg_buf_trans(encoder, crtc_state, &n_entries); if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations)) @@ -2962,6 +2965,9 @@ tgl_dkl_phy_ddi_vswing_sequence(struct intel_encoder *encoder, u32 val, dpcnt_mask, dpcnt_val; int n_entries, ln; + if (enc_to_dig_port(encoder)->tc_mode == TC_PORT_TBT_ALT) + return; + ddi_translations = tgl_get_dkl_buf_trans(encoder, crtc_state, &n_entries); if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations))