On Tue, Mar 28, 2017 at 05:59:10PM +0300, Jani Nikula wrote: > These are the theoretical maximums common for source and sink. These are > the maximums we should start with. They may be degraded in case of link > training failures, and the dynamic link values are stored separately. > > Cc: Manasi Navare <manasi.d.navare@xxxxxxxxx> > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> Reviewed-by: Manasi Navare <manasi.d.navare@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_dp.c | 29 +++++++++++++++++------------ > 1 file changed, 17 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index a0082a3784e8..b3df2082eac9 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -161,22 +161,27 @@ static void intel_dp_set_sink_rates(struct intel_dp *intel_dp) > intel_dp->num_sink_rates = num_rates; > } > > -static int intel_dp_max_sink_rate(struct intel_dp *intel_dp) > +/* Theoretical max between source and sink */ > +static int intel_dp_max_common_rate(struct intel_dp *intel_dp) > { > - return intel_dp->sink_rates[intel_dp->num_sink_rates - 1]; > + return intel_dp->common_rates[intel_dp->num_common_rates - 1]; > } > > -static u8 intel_dp_max_lane_count(struct intel_dp *intel_dp) > +/* Theoretical max between source and sink */ > +static int intel_dp_max_common_lane_count(struct intel_dp *intel_dp) > { > struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); > - u8 source_max, sink_max; > - > - source_max = intel_dig_port->max_lanes; > - sink_max = intel_dp->max_link_lane_count; > + int source_max = intel_dig_port->max_lanes; > + int sink_max = drm_dp_max_lane_count(intel_dp->dpcd); > > return min(source_max, sink_max); > } > > +static int intel_dp_max_lane_count(struct intel_dp *intel_dp) > +{ > + return intel_dp->max_link_lane_count; > +} > + > int > intel_dp_link_required(int pixel_clock, int bpp) > { > @@ -329,7 +334,7 @@ int intel_dp_get_link_train_fallback_values(struct intel_dp *intel_dp, > intel_dp->max_link_rate = intel_dp->common_rates[index - 1]; > intel_dp->max_link_lane_count = lane_count; > } else if (lane_count > 1) { > - intel_dp->max_link_rate = intel_dp_max_sink_rate(intel_dp); > + intel_dp->max_link_rate = intel_dp_max_common_rate(intel_dp); > intel_dp->max_link_lane_count = lane_count >> 1; > } else { > DRM_ERROR("Link Training Unsuccessful\n"); > @@ -4636,11 +4641,11 @@ intel_dp_long_pulse(struct intel_connector *intel_connector) > yesno(drm_dp_tps3_supported(intel_dp->dpcd))); > > if (intel_dp->reset_link_params) { > - /* Set the max lane count for link */ > - intel_dp->max_link_lane_count = drm_dp_max_lane_count(intel_dp->dpcd); > + /* Initial max link lane count */ > + intel_dp->max_link_lane_count = intel_dp_max_common_lane_count(intel_dp); > > - /* Set the max link rate for link */ > - intel_dp->max_link_rate = intel_dp_max_sink_rate(intel_dp); > + /* Initial max link rate */ > + intel_dp->max_link_rate = intel_dp_max_common_rate(intel_dp); > > intel_dp->reset_link_params = false; > } > -- > 2.1.4 > _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx