[Intel-gfx] [PATCH v2] drm/i915/dp/mst: Fix MST logic in intel_dp_long_pulse()
Lyude
cpaul at redhat.com
Tue Apr 12 20:07:09 UTC 2016
I'm going to take back the NAK on this, apparently this hotplugging
issue has been around longer then this patchset.
Reviewed-by: Lyude <cpaul at redhat.com>
On Tue, 2016-04-12 at 10:11 +0300, Ander Conselvan De Oliveira wrote:
> On Mon, 2016-04-11 at 10:11 -0700, Jim Bride wrote:
> >
> > In commit 7d23e3c3 ("drm/i915: Cleaning up intel_dp_hpd_pulse")
> > some
> > much needed clean-up was done, but unfortunately part of the change
> > broke DP MST. The real issue was setting the connector state to
> > disconnected in the MST case, which is good, but the code then
> > (after
> > a goto) checks if the connector state is not connected and shuts
> > down
> > MST if this is the case, which is bad. With this change both SST
> > and
> > MST seem to be happy.
> >
> > v2: Add removed check further up in the function to be sure that
> > MST
> > is shut down when we lose the link. (Ander)
> >
> > Fixes: commit 7d23e3c3 ("drm/i915: Cleaning up intel_dp_hpd_pulse")
> > cc: Sivakumar Thulasimani <sivakumar.thulasimani at intel.com>
> > cc: Shubhangi Shrivastava <shubhangi.shrivastava at intel.com>
> > cc: Ander Conselvan de Oliveira <conselvan2 at gmail.com>
> > cc: Nathan D Ciobanu <nathan.d.ciobanu at intel.com>
> > Signed-off-by: Jim Bride <jim.bride at linux.intel.com>
> Reviewed-by: Ander Conselvan de Oliveira <conselvan2 at gmail.com>
>
> >
> > ---
> > drivers/gpu/drm/i915/intel_dp.c | 24 +++++++++++-------------
> > 1 file changed, 11 insertions(+), 13 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_dp.c
> > b/drivers/gpu/drm/i915/intel_dp.c
> > index da0c3d2..31b222a 100644
> > --- a/drivers/gpu/drm/i915/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/intel_dp.c
> > @@ -4608,6 +4608,15 @@ intel_dp_long_pulse(struct intel_connector
> > *intel_connector)
> > intel_dp->compliance_test_type = 0;
> > intel_dp->compliance_test_data = 0;
> >
> > + if (intel_dp->is_mst) {
> > + DRM_DEBUG_KMS("MST device may have
> > disappeared %d vs
> > %d\n",
> > + intel_dp->is_mst,
> > + intel_dp-
> > >mst_mgr.mst_state);
> > + intel_dp->is_mst = false;
> > + drm_dp_mst_topology_mgr_set_mst(&intel_dp-
> > >mst_mgr,
> > + intel_dp-
> > >is_mst);
> > + }
> > +
> > goto out;
> > }
> >
> > @@ -4665,20 +4674,9 @@ intel_dp_long_pulse(struct intel_connector
> > *intel_connector)
> > }
> >
> > out:
> > - if (status != connector_status_connected) {
> > + if ((status != connector_status_connected) &&
> > + (intel_dp->is_mst == false))
> > intel_dp_unset_edid(intel_dp);
> > - /*
> > - * If we were in MST mode, and device is not
> > there,
> > - * get out of MST mode
> > - */
> > - if (intel_dp->is_mst) {
> > - DRM_DEBUG_KMS("MST device may have
> > disappeared %d vs
> > %d\n",
> > - intel_dp->is_mst, intel_dp
> > ->mst_mgr.mst_state);
> > - intel_dp->is_mst = false;
> > - drm_dp_mst_topology_mgr_set_mst(&intel_dp-
> > >mst_mgr,
> > - intel_dp-
> > >is_mst);
> > - }
> > - }
> >
> > intel_display_power_put(to_i915(dev), power_domain);
> > return;
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Cheers,
Lyude
More information about the Intel-gfx
mailing list