All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lucas De Marchi <lucas.demarchi@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [Intel-gfx] [CI 15/17] drm/i915/adl_p: Program DP/HDMI link rate to DDI_BUF_CTL
Date: Tue, 18 May 2021 17:06:23 -0700	[thread overview]
Message-ID: <20210519000625.3184321-16-lucas.demarchi@intel.com> (raw)
In-Reply-To: <20210519000625.3184321-1-lucas.demarchi@intel.com>

From: Imre Deak <imre.deak@intel.com>

On ADL_P besides programming the PLL accordingly the DP/HDMI link rate
should be also programmed to the DDI_BUF_CTL register, do that.

Cc: José Roberto de Souza <jose.souza@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 drivers/gpu/drm/i915/display/intel_ddi.c | 36 ++++++++++++++++++++++--
 drivers/gpu/drm/i915/i915_reg.h          |  1 +
 2 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index e0adb14ecd0d..3d8918674153 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -249,6 +249,31 @@ static u32 icl_pll_to_ddi_clk_sel(struct intel_encoder *encoder,
 	}
 }
 
+static u32 ddi_buf_phy_link_rate(int port_clock)
+{
+	switch (port_clock) {
+	case 162000:
+		return DDI_BUF_PHY_LINK_RATE(0);
+	case 216000:
+		return DDI_BUF_PHY_LINK_RATE(4);
+	case 243000:
+		return DDI_BUF_PHY_LINK_RATE(5);
+	case 270000:
+		return DDI_BUF_PHY_LINK_RATE(1);
+	case 324000:
+		return DDI_BUF_PHY_LINK_RATE(6);
+	case 432000:
+		return DDI_BUF_PHY_LINK_RATE(7);
+	case 540000:
+		return DDI_BUF_PHY_LINK_RATE(2);
+	case 810000:
+		return DDI_BUF_PHY_LINK_RATE(3);
+	default:
+		MISSING_CASE(port_clock);
+		return DDI_BUF_PHY_LINK_RATE(0);
+	}
+}
+
 static void intel_ddi_init_dp_buf_reg(struct intel_encoder *encoder,
 				      const struct intel_crtc_state *crtc_state)
 {
@@ -261,9 +286,11 @@ static void intel_ddi_init_dp_buf_reg(struct intel_encoder *encoder,
 		DDI_BUF_CTL_ENABLE | DDI_BUF_TRANS_SELECT(0);
 	intel_dp->DP |= DDI_PORT_WIDTH(crtc_state->lane_count);
 
-	if (IS_ALDERLAKE_P(i915) &&
-	    intel_phy_is_tc(i915, phy) && dig_port->tc_mode != TC_PORT_TBT_ALT)
-		intel_dp->DP |= DDI_BUF_CTL_TC_PHY_OWNERSHIP;
+	if (IS_ALDERLAKE_P(i915) && intel_phy_is_tc(i915, phy)) {
+		intel_dp->DP |= ddi_buf_phy_link_rate(crtc_state->port_clock);
+		if (dig_port->tc_mode != TC_PORT_TBT_ALT)
+			intel_dp->DP |= DDI_BUF_CTL_TC_PHY_OWNERSHIP;
+	}
 }
 
 static int icl_calc_tbt_pll_link(struct drm_i915_private *dev_priv,
@@ -3168,6 +3195,9 @@ static void intel_enable_ddi_hdmi(struct intel_atomic_state *state,
 	/* In HDMI/DVI mode, the port width, and swing/emphasis values
 	 * are ignored so nothing special needs to be done besides
 	 * enabling the port.
+	 *
+	 * On ADL_P the PHY link rate and lane count must be programmed but
+	 * these are both 0 for HDMI.
 	 */
 	intel_de_write(dev_priv, DDI_BUF_CTL(port),
 		       dig_port->saved_port_bits | DDI_BUF_CTL_ENABLE);
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 5e3e1725b95c..2e4f420a0c9a 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -10172,6 +10172,7 @@ enum skl_power_gate {
 #define  DDI_BUF_CTL_ENABLE			(1 << 31)
 #define  DDI_BUF_TRANS_SELECT(n)	((n) << 24)
 #define  DDI_BUF_EMP_MASK			(0xf << 24)
+#define  DDI_BUF_PHY_LINK_RATE(r)		((r) << 20)
 #define  DDI_BUF_PORT_REVERSAL			(1 << 16)
 #define  DDI_BUF_IS_IDLE			(1 << 7)
 #define  DDI_BUF_CTL_TC_PHY_OWNERSHIP		REG_BIT(6)
-- 
2.31.1

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

  parent reply	other threads:[~2021-05-19  0:07 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-19  0:06 [Intel-gfx] [CI 00/17] ADL-P: more reviewed patches Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 01/17] drm/i915/xelpd: Calculate VDSC RC parameters Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 02/17] drm/i915/xelpd: Add rc_qp_table for rcparams calculation Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 03/17] drm/i915/adl_p: Add dedicated SAGV watermarks Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 04/17] drm/i915/adl_p: Setup ports/phys Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 05/17] drm/i915/adl_p: Implement TC sequences Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 06/17] drm/i915/adl_p: Don't config MBUS and DBUF during display initialization Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 07/17] drm/i915/adl_p: Add ddb allocation support Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 08/17] drm/i915: Introduce MBUS relative dbuf offsets Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 09/17] drm/i915/adl_p: MBUS programming Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 10/17] drm/i915/adl_p: Tx escape clock with DSI Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 11/17] drm/i915/display: Replace dc3co_enabled with dc3co_exitline on intel_psr struct Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 12/17] drm/i915/display: Add PSR interrupt error check function Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 13/17] drm/i915/adl_p: Define and use ADL-P specific DP translation tables Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 14/17] drm/i915/adl_p: Add PLL Support Lucas De Marchi
2021-05-19  0:06 ` Lucas De Marchi [this message]
2021-05-19  0:06 ` [Intel-gfx] [CI 16/17] drm/i915/adlp: Add PIPE_MISC2 programming Lucas De Marchi
2021-05-19  0:06 ` [Intel-gfx] [CI 17/17] drm/i915/adl_p: Update memory bandwidth parameters Lucas De Marchi
2021-05-19  0:22 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for ADL-P: more reviewed patches Patchwork
2021-05-19  0:23 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2021-05-19  0:53 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-05-20  6:26 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2021-05-20  6:57   ` Lucas De Marchi
2021-05-20 10:11 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for ADL-P: more reviewed patches (rev2) Patchwork

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=20210519000625.3184321-16-lucas.demarchi@intel.com \
    --to=lucas.demarchi@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.