All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH] drm/i915/edp: Ignore short pulse when panel powered off
@ 2020-03-04 12:51 Anshuman Gupta
  2020-03-04 13:33 ` Jani Nikula
                   ` (8 more replies)
  0 siblings, 9 replies; 18+ messages in thread
From: Anshuman Gupta @ 2020-03-04 12:51 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Few edp panels like Sharp is triggering short and long
hpd pulse after panel is getting powered off.
Currently driver is already ignoring long pulse for eDP
panel but in order to process the short pulse, it turns on
the VDD which requires panel power_cycle_delay + panel_power_on_delay
these delay on Sharp panel introduced the responsiveness overhead
of 800ms in the modeset sequence and as well is in suspend
sequence.
Ignoring any short pulse once panel is powered off.

FIXME: It requires to wait for panel_power_off_delay in order
to check the panel status, as panel triggers short pulse immediately
after writing PP_OFF to PP_CTRL register.

Signed-off-by: Anshuman Gupta <anshuman.gupta@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 0a417cd2af2b..93de015f5322 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6763,10 +6763,24 @@ static const struct drm_encoder_funcs intel_dp_enc_funcs = {
 	.destroy = intel_dp_encoder_destroy,
 };
 
+static bool is_edp_powered_off(struct intel_dp *intel_dp)
+{
+	intel_wakeref_t wakeref;
+	bool powerd_off = false;
+
+	if (intel_dp_is_edp(intel_dp)) {
+		with_pps_lock(intel_dp, wakeref)
+			powerd_off = !edp_have_panel_power(intel_dp);
+	}
+
+	return powerd_off;
+}
+
 enum irqreturn
 intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
 {
 	struct intel_dp *intel_dp = &intel_dig_port->dp;
+	struct drm_i915_private *i915 = dp_to_i915(intel_dp);
 
 	if (long_hpd && intel_dig_port->base.type == INTEL_OUTPUT_EDP) {
 		/*
@@ -6810,6 +6824,11 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
 	if (!intel_dp->is_mst) {
 		bool handled;
 
+		if (is_edp_powered_off(intel_dp)) {
+			drm_info(&i915->drm, "edp panel is off, ignoring the short pulse\n");
+			return IRQ_HANDLED;
+		}
+
 		handled = intel_dp_short_pulse(intel_dp);
 
 		if (!handled)
-- 
2.25.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2020-03-23  8:35 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-04 12:51 [Intel-gfx] [PATCH] drm/i915/edp: Ignore short pulse when panel powered off Anshuman Gupta
2020-03-04 13:33 ` Jani Nikula
2020-03-04 18:45   ` Ville Syrjälä
2020-03-05  3:17     ` Anshuman Gupta
2020-03-09  8:50       ` Anshuman Gupta
2020-03-13 18:47     ` Anshuman Gupta
2020-03-04 17:25 ` [Intel-gfx] ✗ Fi.CI.DOCS: warning for " Patchwork
2020-03-04 17:48 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-03-05 16:05 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2020-03-13 18:52 ` [Intel-gfx] [PATCH v2] " Anshuman Gupta
2020-03-17 17:54   ` Jani Nikula
2020-03-18  8:18   ` [Intel-gfx] [PATCH v3] " Anshuman Gupta
2020-03-18  9:38     ` Jani Nikula
2020-03-23  8:35       ` Shankar, Uma
2020-03-16 15:14 ` [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/edp: Ignore short pulse when panel powered off (rev2) Patchwork
2020-03-16 22:26 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2020-03-18  9:13 ` [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/edp: Ignore short pulse when panel powered off (rev3) Patchwork
2020-03-18 11:33 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork

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.