Op 27-10-17 om 21:31 schreef Ville Syrjala: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Eliminate the partially duplicated DDI readout code from MST, and > instead just call intel_ddi_get_config(). As a nice bonus we get > more cross checking as intel_ddi_get_config() will populate > output_types based on the actual mode of the DDI port. > > Additonally intel_ddi_get_config() must be changed to get the crtc > from the passed in crtc state rather than from the encoder->crtc link. > encoder->crtc really shouldn't be used anyway. > > v2: Rebased on BXT MST latency_optim fix > Make intel_ddi_clock_get() static > > Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_ddi.c | 6 ++--- > drivers/gpu/drm/i915/intel_dp_mst.c | 50 +------------------------------------ > drivers/gpu/drm/i915/intel_drv.h | 2 -- > 3 files changed, 4 insertions(+), 54 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c > index 0f603a157dba..cc3d55b5cea0 100644 > --- a/drivers/gpu/drm/i915/intel_ddi.c > +++ b/drivers/gpu/drm/i915/intel_ddi.c > @@ -1453,8 +1453,8 @@ static void bxt_ddi_clock_get(struct intel_encoder *encoder, > ddi_dotclock_get(pipe_config); > } > > -void intel_ddi_clock_get(struct intel_encoder *encoder, > - struct intel_crtc_state *pipe_config) > +static void intel_ddi_clock_get(struct intel_encoder *encoder, > + struct intel_crtc_state *pipe_config) > { > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > > @@ -2533,7 +2533,7 @@ void intel_ddi_get_config(struct intel_encoder *encoder, > struct intel_crtc_state *pipe_config) > { > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > - struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); > + struct intel_crtc *intel_crtc = to_intel_crtc(pipe_config->base.crtc); > enum transcoder cpu_transcoder = pipe_config->cpu_transcoder; > struct intel_digital_port *intel_dig_port; > u32 temp, flags = 0; > diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c > index d523302e5081..6f11bb35f66f 100644 > --- a/drivers/gpu/drm/i915/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/intel_dp_mst.c > @@ -286,56 +286,8 @@ static void intel_dp_mst_enc_get_config(struct intel_encoder *encoder, > { > struct intel_dp_mst_encoder *intel_mst = enc_to_mst(&encoder->base); > struct intel_digital_port *intel_dig_port = intel_mst->primary; > - struct intel_crtc *crtc = to_intel_crtc(pipe_config->base.crtc); > - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > - enum transcoder cpu_transcoder = pipe_config->cpu_transcoder; > - u32 temp, flags = 0; > > - pipe_config->output_types |= BIT(INTEL_OUTPUT_DP_MST); > - > - pipe_config->has_audio = > - intel_ddi_is_audio_enabled(dev_priv, crtc); > - > - temp = I915_READ(TRANS_DDI_FUNC_CTL(cpu_transcoder)); > - if (temp & TRANS_DDI_PHSYNC) > - flags |= DRM_MODE_FLAG_PHSYNC; > - else > - flags |= DRM_MODE_FLAG_NHSYNC; > - if (temp & TRANS_DDI_PVSYNC) > - flags |= DRM_MODE_FLAG_PVSYNC; > - else > - flags |= DRM_MODE_FLAG_NVSYNC; > - > - switch (temp & TRANS_DDI_BPC_MASK) { > - case TRANS_DDI_BPC_6: > - pipe_config->pipe_bpp = 18; > - break; > - case TRANS_DDI_BPC_8: > - pipe_config->pipe_bpp = 24; > - break; > - case TRANS_DDI_BPC_10: > - pipe_config->pipe_bpp = 30; > - break; > - case TRANS_DDI_BPC_12: > - pipe_config->pipe_bpp = 36; > - break; > - default: > - break; > - } > - pipe_config->base.adjusted_mode.flags |= flags; > - > - pipe_config->lane_count = > - ((temp & DDI_PORT_WIDTH_MASK) >> DDI_PORT_WIDTH_SHIFT) + 1; > - > - intel_dp_get_m_n(crtc, pipe_config); > - > - intel_ddi_clock_get(&intel_dig_port->base, pipe_config); > - > - if (IS_GEN9_LP(dev_priv)) > - pipe_config->lane_lat_optim_mask = > - bxt_ddi_phy_get_lane_lat_optim_mask(encoder); > - > - intel_ddi_compute_min_voltage_level(dev_priv, pipe_config); > + intel_ddi_get_config(&intel_dig_port->base, pipe_config); > } > > static int intel_dp_mst_get_ddc_modes(struct drm_connector *connector) > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > index 3828d9bee7f5..4498d743cebc 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -1295,8 +1295,6 @@ bool intel_ddi_is_audio_enabled(struct drm_i915_private *dev_priv, > void intel_ddi_get_config(struct intel_encoder *encoder, > struct intel_crtc_state *pipe_config); > > -void intel_ddi_clock_get(struct intel_encoder *encoder, > - struct intel_crtc_state *pipe_config); > void intel_ddi_set_vc_payload_alloc(const struct intel_crtc_state *crtc_state, > bool state); > void intel_ddi_compute_min_voltage_level(struct drm_i915_private *dev_priv, I still don't like patch 5/6, but lets just see if it breaks too often in the future, if so we could always revert.. for the whole series: Reviewed-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx