All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rodrigo Vivi <rodrigo.vivi@gmail.com>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH 09/11] drm/i915: BDW PSR: Remove DDIA limitation for Broadwell.
Date: Thu, 15 May 2014 20:13:08 -0400	[thread overview]
Message-ID: <1400199190-2424-10-git-send-email-rodrigo.vivi@gmail.com> (raw)
In-Reply-To: <1400199190-2424-1-git-send-email-rodrigo.vivi@gmail.com>

Broadwell has a PSR per transcoder, where DDIA supports
link disable and link standby modes while other
transcoders only support link standby.

Signed-off-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 9421b0b..47053e6 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1675,16 +1675,21 @@ static void intel_edp_psr_setup(struct intel_dp *intel_dp)
 
 static void intel_edp_psr_enable_sink(struct intel_dp *intel_dp)
 {
-	struct drm_device *dev = intel_dp_to_dev(intel_dp);
+	struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
+	struct drm_device *dev = dig_port->base.base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	uint32_t aux_clock_divider;
 	int precharge = 0x3;
 	int msg_size = 5;       /* Header(4) + Message(1) */
+	bool only_standby = false;
 
 	aux_clock_divider = intel_dp->get_aux_clock_divider(intel_dp, 0);
 
+	if (IS_BROADWELL(dev) && dig_port->port != PORT_A)
+		only_standby = true;
+
 	/* Enable PSR in sink */
-	if (intel_dp->psr_dpcd[1] & DP_PSR_NO_TRAIN_ON_EXIT)
+	if (intel_dp->psr_dpcd[1] & DP_PSR_NO_TRAIN_ON_EXIT || only_standby)
 		drm_dp_dpcd_writeb(&intel_dp->aux, DP_PSR_EN_CFG,
 				   DP_PSR_ENABLE & ~DP_PSR_MAIN_LINK_ACTIVE);
 	else
@@ -1703,14 +1708,19 @@ static void intel_edp_psr_enable_sink(struct intel_dp *intel_dp)
 
 static void intel_edp_psr_enable_source(struct intel_dp *intel_dp)
 {
-	struct drm_device *dev = intel_dp_to_dev(intel_dp);
+	struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
+	struct drm_device *dev = dig_port->base.base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	uint32_t max_sleep_time = 0x1f;
 	uint32_t idle_frames = 1;
 	uint32_t val = 0x0;
 	const uint32_t link_entry_time = EDP_PSR_MIN_LINK_ENTRY_TIME_8_LINES;
+	bool only_standby = false;
 
-	if (intel_dp->psr_dpcd[1] & DP_PSR_NO_TRAIN_ON_EXIT) {
+	if (IS_BROADWELL(dev) && dig_port->port != PORT_A)
+		only_standby = true;
+
+	if (intel_dp->psr_dpcd[1] & DP_PSR_NO_TRAIN_ON_EXIT || only_standby) {
 		val |= EDP_PSR_LINK_STANDBY;
 		val |= EDP_PSR_TP2_TP3_TIME_0us;
 		val |= EDP_PSR_TP1_TIME_0us;
@@ -1738,8 +1748,13 @@ static bool intel_edp_psr_match_conditions(struct intel_dp *intel_dp)
 
 	dev_priv->psr.source_ok = false;
 
-	if ((intel_encoder->type != INTEL_OUTPUT_EDP) ||
-	    (dig_port->port != PORT_A)) {
+	if (!HAS_PSR(dev)) {
+		DRM_DEBUG_KMS("PSR not supported on this platform\n");
+		return false;
+	}
+
+	if (IS_HASWELL(dev) && (intel_encoder->type != INTEL_OUTPUT_EDP ||
+				dig_port->port != PORT_A)) {
 		DRM_DEBUG_KMS("HSW ties PSR to DDI A (eDP)\n");
 		return false;
 	}
-- 
1.9.0

  parent reply	other threads:[~2014-05-16  0:13 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-16  0:12 [PATCH 00/11] HSW/BDW PSR Rodrigo Vivi
2014-05-16  0:13 ` [PATCH 01/11] drm/i915: move psr_setup_done to psr struct Rodrigo Vivi
2014-05-22 17:50   ` Paulo Zanoni
2014-05-23 20:45     ` [PATCH] " Rodrigo Vivi
2014-05-26  7:44       ` Daniel Vetter
2014-05-16  0:13 ` [PATCH 02/11] drm/i915: Update PSR on resume Rodrigo Vivi
2014-05-23 20:51   ` Paulo Zanoni
2014-05-27 23:50     ` [PATCH] " Rodrigo Vivi
2014-05-28 12:57       ` Daniel Vetter
2014-06-04 19:17         ` Rodrigo Vivi
2014-06-05  9:15           ` Daniel Vetter
2014-06-10 15:11             ` Rodrigo Vivi
2014-06-10 15:24               ` Daniel Vetter
2014-06-10 10:49                 ` [PATCH] drm/i915: Force full PSR setup during crtc enable Rodrigo Vivi
2014-06-11  9:42                   ` Daniel Vetter
2014-08-08 17:19                 ` [PATCH] drm/i915: Update PSR on resume Rodrigo Vivi
2014-08-09  7:40                   ` Daniel Vetter
2014-08-11 16:57                     ` Rodrigo Vivi
2014-08-11 17:31                       ` Daniel Vetter
2014-05-16  0:13 ` [PATCH 03/11] drm/i915: Use HAS_PSR to avoid unecessary interactions Rodrigo Vivi
2014-06-03  9:26   ` Vijay Purushothaman
2014-05-16  0:13 ` [PATCH 04/11] drm/i915: Don't let update_psr function actually enable PSR Rodrigo Vivi
2014-06-03 11:04   ` Vijay Purushothaman
2014-05-16  0:13 ` [PATCH 05/11] drm/i915: Do not try to enable PSR when Panel doesn't suport it Rodrigo Vivi
2014-05-16 10:21   ` Chris Wilson
2014-05-16 16:39     ` Rodrigo Vivi
2014-05-16  0:13 ` [PATCH 06/11] drm/i915: Force PSR exit by inactivating it Rodrigo Vivi
2014-05-16 10:23   ` Chris Wilson
2014-05-16 16:42     ` Rodrigo Vivi
2014-06-03 11:10       ` Vijay Purushothaman
2014-05-16 10:25   ` Chris Wilson
2014-05-16  0:13 ` [PATCH 07/11] drm/i915: BDW PSR: Add single frame update support Rodrigo Vivi
2014-05-16  0:13 ` [PATCH 08/11] drm/i915: BDW PSR: Remove limitations that aren't valid for BDW Rodrigo Vivi
2014-06-03 11:20   ` Vijay Purushothaman
2014-05-16  0:13 ` Rodrigo Vivi [this message]
2014-05-16  0:13 ` [PATCH 10/11] drm/i915: Improve PSR debugfs status Rodrigo Vivi
2014-06-02 18:24   ` Vijay Purushothaman
2014-06-03  7:40     ` Daniel Vetter
2014-06-03 11:22       ` Vijay Purushothaman
2014-05-16  0:13 ` [PATCH 11/11] drm/i915: PSR HSW: update after enabling sprite Rodrigo Vivi
2014-06-03 11:25   ` Vijay Purushothaman
2014-06-12 10:12 ` [PATCH 00/11] HSW/BDW PSR Vijay Purushothaman

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=1400199190-2424-10-git-send-email-rodrigo.vivi@gmail.com \
    --to=rodrigo.vivi@gmail.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.