All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shashank Sharma <shashank.sharma@intel.com>
To: imre.deak@intel.com
Cc: daniel.vetter@intel.com, intel-gfx@lists.freedesktop.org
Subject: [PATCH v5 5/5] drm/i915: Add lspcon resume function
Date: Fri, 14 Oct 2016 14:54:27 +0530	[thread overview]
Message-ID: <1476437067-13237-6-git-send-email-shashank.sharma@intel.com> (raw)
In-Reply-To: <1476437067-13237-1-git-send-email-shashank.sharma@intel.com>

As per the software design, we are driving lspcon in
PCON mode. But while resuming from suspend, lspcon can go
in LS mode (which is its default operating mode on power on)

This patch adds a resume function for lspcon, which makes sure
its operating in PCON mode, post resume.

Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c     |  2 ++
 drivers/gpu/drm/i915/intel_drv.h    |  1 +
 drivers/gpu/drm/i915/intel_lspcon.c | 38 +++++++++++++++++++++++++++++++++++++
 3 files changed, 41 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index e9b3bfc..d87281d 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1574,6 +1574,8 @@ static int i915_drm_resume(struct drm_device *dev)
 		dev_priv->display.hpd_irq_setup(dev_priv);
 	spin_unlock_irq(&dev_priv->irq_lock);
 
+	lspcon_resume(dev);
+
 	intel_dp_mst_resume(dev);
 
 	intel_display_resume(dev);
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 27837b0..e8760a4 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1850,4 +1850,5 @@ void intel_color_load_luts(struct drm_crtc_state *crtc_state);
 
 /* intel_lspcon.c */
 bool lspcon_init(struct intel_digital_port *intel_dig_port);
+void lspcon_resume(struct drm_device *dev);
 #endif /* __INTEL_DRV_H__ */
diff --git a/drivers/gpu/drm/i915/intel_lspcon.c b/drivers/gpu/drm/i915/intel_lspcon.c
index aa74b1f..ba660ecb 100644
--- a/drivers/gpu/drm/i915/intel_lspcon.c
+++ b/drivers/gpu/drm/i915/intel_lspcon.c
@@ -27,6 +27,29 @@
 #include <drm/drm_dp_dual_mode_helper.h>
 #include "intel_drv.h"
 
+/*
+ * This function assumes only one LSPCON port on the device,
+ * and returns the first active LSPCON port.
+ */
+static struct intel_lspcon *find_active_lspcon(struct drm_device *dev)
+{
+	struct intel_lspcon *lspcon = NULL;
+	struct intel_encoder *intel_encoder;
+
+	for_each_intel_encoder(dev, intel_encoder) {
+		struct intel_digital_port *intel_dig_port;
+
+		intel_dig_port = enc_to_dig_port(&intel_encoder->base);
+		lspcon = &intel_dig_port->lspcon;
+		if (lspcon->active) {
+			DRM_DEBUG_KMS("LSPCON active : port %c\n",
+					port_name(intel_dig_port->port));
+			break;
+		}
+	}
+	return lspcon;
+}
+
 enum drm_lspcon_mode lspcon_get_current_mode(struct intel_lspcon *lspcon)
 {
 	enum drm_lspcon_mode current_mode = DRM_LSPCON_MODE_INVALID;
@@ -89,6 +112,21 @@ static bool lspcon_probe(struct intel_lspcon *lspcon)
 	return true;
 }
 
+void lspcon_resume(struct drm_device *dev)
+{
+	if (IS_GEN9(dev)) {
+		struct intel_lspcon *lspcon = find_active_lspcon(dev);
+
+		if (lspcon) {
+			if (lspcon_change_mode(lspcon, DRM_LSPCON_MODE_PCON,
+						true))
+				DRM_ERROR("LSPCON resume failed\n");
+			else
+				DRM_DEBUG_KMS("LSPCON resume success\n");
+		}
+	}
+}
+
 bool lspcon_init(struct intel_digital_port *intel_dig_port)
 {
 	struct intel_dp *dp = &intel_dig_port->dp;
-- 
1.9.1

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

  parent reply	other threads:[~2016-10-14  9:13 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-14  9:24 [PATCH v5 0/5] Enable lspcon support for GEN9 devices Shashank Sharma
2016-10-14  9:24 ` [PATCH v5 1/5] drm: Helper for lspcon in drm_dp_dual_mode Shashank Sharma
2016-10-14  9:24 ` [PATCH v5 2/5] drm/i915: Add lspcon support for I915 driver Shashank Sharma
2016-10-14  9:24 ` [PATCH v5 3/5] drm/i915: Parse VBT data for lspcon Shashank Sharma
2016-10-14  9:24 ` [PATCH v5 4/5] drm/i915: Enable lspcon initialization Shashank Sharma
2016-10-14  9:24 ` Shashank Sharma [this message]
2016-10-14  9:26   ` [PATCH v5 5/5] drm/i915: Add lspcon resume function Imre Deak
2016-10-14 12:35     ` Sharma, Shashank
2016-10-14 12:31 ` ✗ Fi.CI.BAT: failure for Enable lspcon support for GEN9 devices (rev5) Patchwork
2016-10-14 13:39   ` Jani Nikula
2016-10-14 13:41     ` Sharma, Shashank

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=1476437067-13237-6-git-send-email-shashank.sharma@intel.com \
    --to=shashank.sharma@intel.com \
    --cc=daniel.vetter@intel.com \
    --cc=imre.deak@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /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.