[Intel-gfx] [PATCH 3/5] drm/i915/dp: Remove intel_dp->detect_done flag
Pandiyan, Dhinakaran
dhinakaran.pandiyan at intel.com
Wed Sep 19 17:43:34 UTC 2018
On Wed, 2018-09-19 at 20:28 +0300, Ville Syrjälä wrote:
> 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 at linux.intel.com>
> > Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan at intel.com>
> > ---
> > 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.
It does indeed, just wanted to reuse the local variable. Will change it
in the next version.
>
> 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.
>
Looks like the code wasn't updated when intel_dp_retrain_link() started
grabbing the locks.
> > + 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
>
>
More information about the Intel-gfx
mailing list