From: "Kahola, Mika" <mika.kahola@intel.com>
To: "Deak, Imre" <imre.deak@intel.com>,
"intel-gfx@lists.freedesktop.org"
<intel-gfx@lists.freedesktop.org>,
"intel-xe@lists.freedesktop.org" <intel-xe@lists.freedesktop.org>
Subject: RE: [PATCH 09/19] drm/i915/tc: Add an enum for the TypeC pin assignment
Date: Thu, 7 Aug 2025 12:39:06 +0000 [thread overview]
Message-ID: <DS4PPF69154114FB3B65784CEC0909C1F36EF2CA@DS4PPF69154114F.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20250805073700.642107-10-imre.deak@intel.com>
> -----Original Message-----
> From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Imre Deak
> Sent: Tuesday, 5 August 2025 10.37
> To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
> Subject: [PATCH 09/19] drm/i915/tc: Add an enum for the TypeC pin assignment
>
> Add an enum for the TypeC pin assignment, which is a better way to pass its value around than a plain integer. While at it add a
> description for each pin assignment, based on the DP and DP Alt mode Standards, opting for more details to ease any future
> debugging related to a given pin assignment and the cables / sink types used.
>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
> Signed-off-by: Imre Deak <imre.deak@intel.com>
> ---
> .../gpu/drm/i915/display/intel_display_regs.h | 2 +
> drivers/gpu/drm/i915/display/intel_tc.c | 19 ++---
> drivers/gpu/drm/i915/display/intel_tc.h | 69 +++++++++++++++++++
> 3 files changed, 78 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_regs.h b/drivers/gpu/drm/i915/display/intel_display_regs.h
> index 7bd09d981cd2d..9d71e26a4fa27 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_regs.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_regs.h
> @@ -2890,6 +2890,7 @@ enum skl_power_gate {
> #define DP_PIN_ASSIGNMENT_SHIFT(idx) ((idx) * 4)
> #define DP_PIN_ASSIGNMENT_MASK(idx) (0xf << ((idx) * 4))
> #define DP_PIN_ASSIGNMENT(idx, x) ((x) << ((idx) * 4))
> +/* See enum intel_tc_pin_assignment for the pin assignment field
> +values. */
>
> #define _TCSS_DDI_STATUS_1 0x161500
> #define _TCSS_DDI_STATUS_2 0x161504
> @@ -2897,6 +2898,7 @@ enum skl_power_gate {
> _TCSS_DDI_STATUS_1, \
> _TCSS_DDI_STATUS_2))
> #define TCSS_DDI_STATUS_PIN_ASSIGNMENT_MASK REG_GENMASK(28, 25)
> +/* See enum intel_tc_pin_assignment for the pin assignment field
> +values. */
> #define TCSS_DDI_STATUS_READY REG_BIT(2)
> #define TCSS_DDI_STATUS_HPD_LIVE_STATUS_TBT REG_BIT(1)
> #define TCSS_DDI_STATUS_HPD_LIVE_STATUS_ALT REG_BIT(0)
> diff --git a/drivers/gpu/drm/i915/display/intel_tc.c b/drivers/gpu/drm/i915/display/intel_tc.c
> index de9129b65d34f..9a40ad07830f5 100644
> --- a/drivers/gpu/drm/i915/display/intel_tc.c
> +++ b/drivers/gpu/drm/i915/display/intel_tc.c
> @@ -23,11 +23,6 @@
> #include "intel_modeset_lock.h"
> #include "intel_tc.h"
>
> -#define DP_PIN_ASSIGNMENT_NONE 0x0
> -#define DP_PIN_ASSIGNMENT_C 0x3
> -#define DP_PIN_ASSIGNMENT_D 0x4
> -#define DP_PIN_ASSIGNMENT_E 0x5
> -
> enum tc_port_mode {
> TC_PORT_DISCONNECTED,
> TC_PORT_TBT_ALT,
> @@ -317,15 +312,15 @@ static int lnl_tc_port_get_max_lane_count(struct intel_digital_port *dig_port)
> REG_FIELD_GET(TCSS_DDI_STATUS_PIN_ASSIGNMENT_MASK, val);
>
> switch (pin_assignment) {
> - case DP_PIN_ASSIGNMENT_NONE:
> + case INTEL_TC_PIN_ASSIGNMENT_NONE:
> return 0;
> default:
> MISSING_CASE(pin_assignment);
> fallthrough;
> - case DP_PIN_ASSIGNMENT_D:
> + case INTEL_TC_PIN_ASSIGNMENT_D:
> return 2;
> - case DP_PIN_ASSIGNMENT_C:
> - case DP_PIN_ASSIGNMENT_E:
> + case INTEL_TC_PIN_ASSIGNMENT_C:
> + case INTEL_TC_PIN_ASSIGNMENT_E:
> return 4;
> }
> }
> @@ -340,10 +335,10 @@ static int mtl_tc_port_get_max_lane_count(struct intel_digital_port *dig_port)
> default:
> MISSING_CASE(pin_mask);
> fallthrough;
> - case DP_PIN_ASSIGNMENT_D:
> + case INTEL_TC_PIN_ASSIGNMENT_D:
> return 2;
> - case DP_PIN_ASSIGNMENT_C:
> - case DP_PIN_ASSIGNMENT_E:
> + case INTEL_TC_PIN_ASSIGNMENT_C:
> + case INTEL_TC_PIN_ASSIGNMENT_E:
> return 4;
> }
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_tc.h b/drivers/gpu/drm/i915/display/intel_tc.h
> index 26c4265368c1a..d35d9aae3b889 100644
> --- a/drivers/gpu/drm/i915/display/intel_tc.h
> +++ b/drivers/gpu/drm/i915/display/intel_tc.h
> @@ -12,6 +12,75 @@ struct intel_crtc_state; struct intel_digital_port; struct intel_encoder;
>
> +/*
> + * The following enum values must stay fixed, as they match the
> +corresponding
> + * pin assignment fields in the PORT_TX_DFLEXPA1 and TCSS_DDI_STATUS registers.
> + */
> +enum intel_tc_pin_assignment { /* Lanes (a) Signal/ Cable Notes */
> + /* DP USB Rate (b) type */
> + INTEL_TC_PIN_ASSIGNMENT_NONE = 0, /* 4 - - - (c) */
> + INTEL_TC_PIN_ASSIGNMENT_A, /* 2/4 0 GEN2 TC->TC (d,e) */
> + INTEL_TC_PIN_ASSIGNMENT_B, /* 1/2 1 GEN2 TC->TC (d,f,g) */
> + INTEL_TC_PIN_ASSIGNMENT_C, /* 4 0 DP2 TC->TC (h) */
> + INTEL_TC_PIN_ASSIGNMENT_D, /* 2 1 DP2 TC->TC (h,g) */
> + INTEL_TC_PIN_ASSIGNMENT_E, /* 4 0 DP2 TC->DP */
> + INTEL_TC_PIN_ASSIGNMENT_F, /* 2 1 GEN1/DP1 TC->DP (d,g,i) */
This summary is warmly welcomed addition!
> + /*
> + * (a) - DP unidirectional lanes, each lane using 1 differential signal
> + * pair.
> + * - USB SuperSpeed bidirectional lane, using 2 differential (TX and
> + * RX) signal pairs.
> + * - USB 2.0 (HighSpeed) unidirectional lane, using 1 differential
> + * signal pair. Not indicated, this lane is always present on pin
> + * assignments A-D and never present on pin assignments E/F.
> + * (b) - GEN1: USB 3.1 GEN1 bit rate (5 Gbps) and signaling. This
> + * is used for transferring only a USB stream.
> + * - GEN2: USB 3.1 GEN2 bit rate (10 Gbps) and signaling. This
> + * allows transferring an HBR3 (8.1 Gbps) DP stream.
> + * - DP1: Display Port signaling defined by the DP v1.3 Standard,
> + * with a maximum bit rate of HBR3.
> + * - DP2: Display Port signaling defined by the DP v2.1 Standard,
> + * with a maximum bit rate defined by the DP Alt Mode
> + * v2.1a Standard depending on the cable type as follows:
> + * - Passive (Full-Featured) USB 3.2 GEN1
> + * TC->TC cables (CC3G1-X) : UHBR10
> + * - Passive (Full-Featured) USB 3.2/4 GEN2 and
> + * Thunderbolt Alt Mode GEN2
> + * TC->TC cables (CC3G2-X) all : UHBR10
> + * DP54 logo : UHBR13.5
> + * - Passive (Full-Featured) USB4 GEN3+ and
> + * Thunderbolt Alt Mode GEN3+
> + * TC->TC cables (CC4G3-X) all : UHBR13.5
> + * DP80 logo : UHBR20
> + * - Active Re-Timed or
> + * Active Linear Re-driven (LRD)
> + * USB3.2 GEN1/2 and USB4 GEN2+
> + * TC->TC cables all : HBR3
> + * with DP_BR CTS : UHBR10
> + * DP54 logo : UHBR13.5
> + * DP80 logo : UHBR20
> + * - Passive/Active Re-Timed or
> + * Active Linear Re-driven (LRD)
> + * TC->DP cables with DP_BR CTS/DP8K logo : HBR3
> + * with DP_BR CTS : UHBR10
> + * DP54 logo : UHBR13.5
> + * DP80 logo : UHBR20
> + * (c) Used in TBT-alt/legacy modes and on LNL+ after the sink
> + * disconnected in DP-alt mode.
> + * (d) Only defined by the DP Alt Standard v1.0a, deprecated by v1.0b,
> + * only supported on ICL.
> + * (e) GEN2 passive 1 m cable: 4 DP lanes, GEN2 active cable: 2 DP lanes.
> + * (f) GEN2 passive 1 m cable: 2 DP lanes, GEN2 active cable: 1 DP lane.
> + * (g) These pin assignments are also referred to as (USB/DP)
> + * multifunction or Multifunction Display Port (MFD) modes.
> + * (h) Also used where one end of the cable is a captive connector,
> + * attached to a DP->HDMI/DVI/VGA converter.
> + * (i) The DP end of the cable is a captive connector attached to a
> + * (DP/USB) multifunction dock as deined by the DockPort v1.0a
> + * specification.
> + */
> +};
> +
> bool intel_tc_port_in_tbt_alt_mode(struct intel_digital_port *dig_port); bool intel_tc_port_in_dp_alt_mode(struct
> intel_digital_port *dig_port); bool intel_tc_port_in_legacy_mode(struct intel_digital_port *dig_port);
> --
> 2.49.1
next prev parent reply other threads:[~2025-08-07 12:42 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-05 7:36 [PATCH 00/19] drm/i915/tc: Fix enabled/disconnected DP-alt sink handling Imre Deak
2025-08-05 7:36 ` [PATCH 01/19] drm/i915/lnl+/tc: Fix handling of an enabled/disconnected dp-alt sink Imre Deak
2025-08-07 7:06 ` Kahola, Mika
2025-08-07 10:59 ` Luca Coelho
2025-08-07 11:38 ` Imre Deak
2025-08-07 12:19 ` Jani Nikula
2025-08-07 12:32 ` Imre Deak
2025-08-07 12:50 ` Imre Deak
2025-08-07 13:05 ` Jani Nikula
2025-08-07 13:24 ` Imre Deak
2025-08-07 14:10 ` Luca Coelho
2025-08-05 7:36 ` [PATCH 02/19] drm/i915/icl+/tc: Cache the max lane count value Imre Deak
2025-08-05 9:33 ` [PATCH v2 " Imre Deak
2025-08-07 8:07 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 03/19] drm/i915/lnl+/tc: Fix max lane count HW readout Imre Deak
2025-08-05 9:33 ` [PATCH v2 " Imre Deak
2025-08-07 8:36 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 04/19] drm/i915/lnl+/tc: Use the cached max lane count value Imre Deak
2025-08-07 8:49 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 05/19] drm/i915/icl+/tc: Convert AUX powered WARN to a debug message Imre Deak
2025-08-07 12:29 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 06/19] drm/i915/tc: Use the cached max lane count value Imre Deak
2025-08-06 12:02 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 07/19] drm/i915/tc: Move getting the power domain before reading DFLEX registers Imre Deak
2025-08-06 12:56 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 08/19] drm/i915/tc: Move asserting the power state after reading TCSS_DDI_STATUS Imre Deak
2025-08-06 13:22 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 09/19] drm/i915/tc: Add an enum for the TypeC pin assignment Imre Deak
2025-08-07 12:39 ` Kahola, Mika [this message]
2025-08-05 7:36 ` [PATCH 10/19] drm/i915/tc: Pass pin assignment value around using the pin assignment enum Imre Deak
2025-08-07 12:56 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 11/19] drm/i915/tc: Handle pin assignment NONE on all platforms Imre Deak
2025-08-07 12:57 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 12/19] drm/i915/tc: Validate the pin assignment " Imre Deak
2025-08-07 13:08 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 13/19] drm/i915/tc: Unify the way to get " Imre Deak
2025-08-08 6:44 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 14/19] drm/i915/tc: Unify the way to get the max lane count value on MTL+ Imre Deak
2025-08-08 7:32 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 15/19] drm/i915/tc: Handle non-TC encoders when getting the pin assignment Imre Deak
2025-08-08 7:45 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 16/19] drm/i915/tc: Pass intel_tc_port to internal lane mask/count helpers Imre Deak
2025-08-08 8:25 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 17/19] dmc/i915/tc: Report pin assignment NONE in TBT-alt mode Imre Deak
2025-08-08 8:26 ` Kahola, Mika
2025-08-05 7:36 ` [PATCH 18/19] drm/i915/tc: Cache the pin assignment value Imre Deak
2025-08-08 8:27 ` Kahola, Mika
2025-08-05 7:37 ` [PATCH 19/19] drm/i915/tc: Debug print the pin assignment and max lane count Imre Deak
2025-08-08 8:28 ` Kahola, Mika
2025-08-05 7:46 ` ✗ CI.checkpatch: warning for drm/i915/tc: Fix enabled/disconnected DP-alt sink handling Patchwork
2025-08-05 7:47 ` ✓ CI.KUnit: success " Patchwork
2025-08-05 8:02 ` ✗ CI.checksparse: warning " Patchwork
2025-08-05 8:49 ` ✗ Xe.CI.BAT: failure " Patchwork
2025-08-05 10:08 ` ✓ Xe.CI.Full: success " Patchwork
2025-08-05 11:41 ` ✗ CI.checkpatch: warning for drm/i915/tc: Fix enabled/disconnected DP-alt sink handling (rev3) Patchwork
2025-08-05 11:42 ` ✓ CI.KUnit: success " Patchwork
2025-08-05 11:57 ` ✗ CI.checksparse: warning " Patchwork
2025-08-05 13:02 ` ✓ Xe.CI.BAT: success " Patchwork
2025-08-05 15:31 ` ✓ Xe.CI.Full: " Patchwork
2025-08-06 11:44 ` [PATCH 00/19] drm/i915/tc: Fix enabled/disconnected DP-alt sink handling Luca Coelho
2025-08-06 11:54 ` Imre Deak
2025-08-06 12:54 ` Luca Coelho
2025-08-06 13:12 ` Imre Deak
2025-08-06 13:16 ` Luca Coelho
[not found] ` <175439829105.213103.3969215907569188087@1538d3639d33>
2025-08-13 12:43 ` ✗ i915.CI.Full: failure for drm/i915/tc: Fix enabled/disconnected DP-alt sink handling (rev3) Imre Deak
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=DS4PPF69154114FB3B65784CEC0909C1F36EF2CA@DS4PPF69154114F.namprd11.prod.outlook.com \
--to=mika.kahola@intel.com \
--cc=imre.deak@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).