On Fri, Jan 17, 2020 at 04:29:22PM +0200, Jani Nikula wrote: > Don't access i915->vbt.ddi_port_info[] directly. > > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_bios.c | 9 +++++++++ > drivers/gpu/drm/i915/display/intel_bios.h | 1 + > drivers/gpu/drm/i915/display/intel_ddi.c | 14 ++++++-------- > 3 files changed, 16 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c > index b231fafc03ca..50bff4e7d5c2 100644 > --- a/drivers/gpu/drm/i915/display/intel_bios.c > +++ b/drivers/gpu/drm/i915/display/intel_bios.c > @@ -2569,3 +2569,12 @@ int intel_bios_max_tmds_clock(struct intel_encoder *encoder) > > return i915->vbt.ddi_port_info[encoder->port].max_tmds_clock; > } > + > +int intel_bios_hdmi_level_shift(struct intel_encoder *encoder) > +{ > + struct drm_i915_private *i915 = to_i915(encoder->base.dev); > + const struct ddi_vbt_port_info *info = > + &i915->vbt.ddi_port_info[encoder->port]; > + > + return info->hdmi_level_shift_set ? info->hdmi_level_shift : -1; > +} > diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h > index 519e983ee9e7..c6cc413bf8ec 100644 > --- a/drivers/gpu/drm/i915/display/intel_bios.h > +++ b/drivers/gpu/drm/i915/display/intel_bios.h > @@ -248,5 +248,6 @@ bool intel_bios_get_dsc_params(struct intel_encoder *encoder, > struct intel_crtc_state *crtc_state, > int dsc_max_bpc); > int intel_bios_max_tmds_clock(struct intel_encoder *encoder); > +int intel_bios_hdmi_level_shift(struct intel_encoder *encoder); > > #endif /* _INTEL_BIOS_H_ */ > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c > index 32ea3c7e8b62..cfaa64df9892 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -944,11 +944,11 @@ tgl_get_combo_buf_trans(struct drm_i915_private *dev_priv, int type, int rate, > return tgl_combo_phy_ddi_translations_dp_hbr; > } > > -static int intel_ddi_hdmi_level(struct drm_i915_private *dev_priv, enum port port) > +static int intel_ddi_hdmi_level(struct intel_encoder *encoder) > { > - struct ddi_vbt_port_info *port_info = &dev_priv->vbt.ddi_port_info[port]; > + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > int n_entries, level, default_entry; > - enum phy phy = intel_port_to_phy(dev_priv, port); > + enum phy phy = intel_port_to_phy(dev_priv, encoder->port); > > if (INTEL_GEN(dev_priv) >= 12) { > if (intel_phy_is_combo(dev_priv, phy)) > @@ -987,9 +987,8 @@ static int intel_ddi_hdmi_level(struct drm_i915_private *dev_priv, enum port por > if (WARN_ON_ONCE(n_entries == 0)) > return 0; > > - if (port_info->hdmi_level_shift_set) > - level = port_info->hdmi_level_shift; > - else > + level = intel_bios_hdmi_level_shift(encoder); > + if (level < 0) > level = default_entry; > > if (WARN_ON_ONCE(level >= n_entries)) > @@ -3665,8 +3664,7 @@ static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder, > struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder); > struct intel_hdmi *intel_hdmi = &intel_dig_port->hdmi; > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > - enum port port = encoder->port; > - int level = intel_ddi_hdmi_level(dev_priv, port); > + int level = intel_ddi_hdmi_level(encoder); > struct intel_digital_port *dig_port = enc_to_dig_port(encoder); > > intel_dp_dual_mode_set_tmds_output(intel_hdmi, true); > -- > 2.20.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrjälä Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx