On Tue, Sep 18, 2018 at 12:20:07AM -0700, Dhinakaran Pandiyan wrote: > The intel_dp->detect_done flag is no more useful. Pull > intel_dp_long_pulse() into the lone caller, > > Cc: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx> > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_dp.c | 63 +++++++++++++--------------------------- > drivers/gpu/drm/i915/intel_drv.h | 1 - > 2 files changed, 20 insertions(+), 44 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 8bf9afa5683c..d06bf4303814 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -5012,13 +5012,25 @@ intel_dp_unset_edid(struct intel_dp *intel_dp) > } > > static int > -intel_dp_long_pulse(struct intel_connector *connector, > - struct drm_modeset_acquire_ctx *ctx) > +intel_dp_detect(struct drm_connector *connector, > + struct drm_modeset_acquire_ctx *ctx, > + bool force) > { > - struct drm_i915_private *dev_priv = to_i915(connector->base.dev); > - struct intel_dp *intel_dp = intel_attached_dp(&connector->base); > - enum drm_connector_status status; > + struct drm_i915_private *dev_priv = to_i915(connector->dev); > + struct intel_dp *intel_dp = intel_attached_dp(connector); > + int status; > u8 sink_irq_vector = 0; > + struct drm_crtc *crtc; > + > + DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", > + connector->base.id, connector->name); > + > + crtc = connector->state->crtc; > + if (crtc) { > + status = drm_modeset_lock(&crtc->mutex, ctx); The 'status' name looks a bit weird here. I'm leaning towards keeping the 'int ret' for this case. Hmm. Actually, why are we even taking this lock here anyway? I would imagine we only need it for the link retraining and intel_dp_retrain_link() already grabs it so we should be able to just drop this code. Would allow page flips and detect to execute in parallel again. > + if (status) > + return status; > + } > > WARN_ON(!drm_modeset_is_locked(&dev_priv->drm.mode_config.connection_mutex)); > > @@ -5093,9 +5105,9 @@ intel_dp_long_pulse(struct intel_connector *connector, > intel_dp->aux.i2c_defer_count = 0; > > intel_dp_set_edid(intel_dp); > - if (intel_dp_is_edp(intel_dp) || connector->detect_edid) > + if (intel_dp_is_edp(intel_dp) || > + to_intel_connector(connector)->detect_edid) > status = connector_status_connected; > - intel_dp->detect_done = true; > > /* Try to read the source of the interrupt */ > if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11 && > @@ -5120,37 +5132,6 @@ intel_dp_long_pulse(struct intel_connector *connector, > return status; > } > > -static int > -intel_dp_detect(struct drm_connector *connector, > - struct drm_modeset_acquire_ctx *ctx, > - bool force) > -{ > - struct intel_dp *intel_dp = intel_attached_dp(connector); > - int status = connector->status; > - > - DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", > - connector->base.id, connector->name); > - > - /* If full detect is not performed yet, do a full detect */ > - if (!intel_dp->detect_done) { > - struct drm_crtc *crtc; > - int ret; > - > - crtc = connector->state->crtc; > - if (crtc) { > - ret = drm_modeset_lock(&crtc->mutex, ctx); > - if (ret) > - return ret; > - } > - > - status = intel_dp_long_pulse(intel_dp->attached_connector, ctx); > - } > - > - intel_dp->detect_done = false; > - > - return status; > -} > - > static void > intel_dp_force(struct drm_connector *connector) > { > @@ -5643,7 +5624,6 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd) > > if (long_hpd) { > intel_dp->reset_link_params = true; > - intel_dp->detect_done = false; > return IRQ_NONE; > } > > @@ -5660,7 +5640,6 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd) > intel_dp->is_mst = false; > drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr, > intel_dp->is_mst); > - intel_dp->detect_done = false; > goto put_power; > } > } > @@ -5673,10 +5652,8 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd) > /* Short pulse can signify loss of hdcp authentication */ > intel_hdcp_check_link(intel_dp->attached_connector); > > - if (!handled) { > - intel_dp->detect_done = false; > + if (!handled) > goto put_power; > - } > } > > ret = IRQ_HANDLED; > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > index bf1c38728a59..c7206a4764e5 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -1070,7 +1070,6 @@ struct intel_dp { > bool link_mst; > bool link_trained; > bool has_audio; > - bool detect_done; > bool reset_link_params; > enum aux_ch aux_ch; > uint8_t dpcd[DP_RECEIVER_CAP_SIZE]; > -- > 2.14.1 -- Ville Syrjälä Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx