All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: "Navare, Manasi D" <manasi.d.navare@intel.com>,
	stable@vger.kernel.org,
	Ville Syrjala <ville.syrjala@linux.intel.com>,
	Ander Conselvande Oliveira
	<ander.conselvan.de.oliveira@intel.com>,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Subject: [PATCH v3] drm/i915/dp: Do not reset detect_done flag in intel_dp_detect
Date: Thu, 29 Dec 2016 23:14:28 -0800	[thread overview]
Message-ID: <1483082068-5833-1-git-send-email-dhinakaran.pandiyan@intel.com> (raw)

From: "Navare, Manasi D" <manasi.d.navare@intel.com>

The detect_done flag was introduced in the 'commit 7d23e3c37bb3
("drm/i915: Cleaning up intel_dp_hpd_pulse")' in order to avoid multiple
detects on hotplug where intel_dp_long_pulse() was called from HPD handler
as well as intel_dp_detect(). Later, 'commit 1015811609c0
("drm/i915: Move long hpd handling into the hotplug work")' deferred long
hpd handling to hotplug work to avoid handling it twice. But, resetting the
flag after long hpd handling leads to the code being executed again during
mode enumeration.

So, do not reset the detect_done flag to False in intel_dp_detect(). The
flag is reset in intel_dp_hpd_pulse() to allow a full detect and set when
the hotplug work does a full DPCD detect. However if ->detect() gets called
during mode enumeration after a DPCD detect, return the cached connector
status.

Resetting the flag in the encoder's reset callback should take care of
hotplug between suspend/resume.

v2:
Allow full detect after encoder reset. (Ville)
Set the detect_done flag for connector disconnected case too. (DK)
Commit message changes.

Cc: stable@vger.kernel.org
Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
Cc: Ander Conselvande Oliveira <ander.conselvan.de.oliveira@intel.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Fixes: commit 7d23e3c37bb3 ("drm/i915: Cleaning up intel_dp_hpd_pulse")
Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index fb12896..6732c17 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4516,7 +4516,6 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
 	intel_dp_set_edid(intel_dp);
 	if (is_edp(intel_dp) || intel_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 &&
@@ -4551,10 +4550,10 @@ intel_dp_detect(struct drm_connector *connector, bool force)
 		      connector->base.id, connector->name);
 
 	/* If full detect is not performed yet, do a full detect */
-	if (!intel_dp->detect_done)
+	if (!intel_dp->detect_done) {
+		intel_dp->detect_done = true;
 		status = intel_dp_long_pulse(intel_dp->attached_connector);
-
-	intel_dp->detect_done = false;
+	}
 
 	return status;
 }
@@ -4859,6 +4858,8 @@ void intel_dp_encoder_reset(struct drm_encoder *encoder)
 	if (lspcon->active)
 		lspcon_resume(lspcon);
 
+	intel_dp->detect_done = false;
+
 	pps_lock(intel_dp);
 
 	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
-- 
2.7.4


             reply	other threads:[~2016-12-30  7:15 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-30  7:14 Dhinakaran Pandiyan [this message]
2016-12-30  8:23 ` ✓ Fi.CI.BAT: success for drm/i915/dp: Do not reset detect_done flag in intel_dp_detect (rev2) Patchwork
2017-01-05  4:04 ` [Intel-gfx] [PATCH v3] drm/i915/dp: Do not reset detect_done flag in intel_dp_detect Pandiyan, Dhinakaran
2017-01-05  4:04   ` Pandiyan, Dhinakaran
2017-01-17 17:40 ` Manasi Navare
2017-01-17 17:40   ` Manasi Navare
2017-01-19 13:42   ` Ville Syrjälä
2017-01-19 13:42     ` Ville Syrjälä
2017-01-19 19:01     ` Manasi Navare
2017-01-19 19:01       ` Manasi Navare
2017-01-19 19:26       ` Ville Syrjälä
2017-01-19 19:26         ` Ville Syrjälä
2017-01-19 19:38         ` Manasi Navare
2017-01-19 19:38           ` Manasi Navare
2017-01-19 19:59           ` Ville Syrjälä
2017-01-19 19:59             ` Ville Syrjälä
2017-01-19 20:39             ` Manasi Navare
2017-01-19 20:39               ` Manasi Navare
  -- strict thread matches above, loose matches on Subject: below --
2016-12-21 21:59 Dhinakaran Pandiyan
2016-12-21 21:59 ` Dhinakaran Pandiyan
2016-12-20  8:08 [PATCH v2] " Jani Nikula
2016-12-21  1:57 ` [PATCH v3] " Dhinakaran Pandiyan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1483082068-5833-1-git-send-email-dhinakaran.pandiyan@intel.com \
    --to=dhinakaran.pandiyan@intel.com \
    --cc=ander.conselvan.de.oliveira@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@linux.intel.com \
    --cc=manasi.d.navare@intel.com \
    --cc=stable@vger.kernel.org \
    --cc=ville.syrjala@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.