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 <[email protected]>
> Cc: Ville Syrjälä <[email protected]>
> Signed-off-by: Dhinakaran Pandiyan <[email protected]>
> ---
>  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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to