From: Imre Deak <imre.deak@intel.com>
To: Gustavo Sousa <gustavo.sousa@intel.com>
Cc: "Jouni Högander" <jouni.hogander@intel.com>,
"Ankit Nautiyal" <ankit.k.nautiyal@intel.com>,
"Dnyaneshwar Bhadane" <dnyaneshwar.bhadane@intel.com>,
"Juha-pekka Heikkila" <juha-pekka.heikkila@intel.com>,
"Luca Coelho" <luciano.coelho@intel.com>,
"Lucas De Marchi" <lucas.demarchi@intel.com>,
"Matt Atwood" <matthew.s.atwood@intel.com>,
"Matt Roper" <matthew.d.roper@intel.com>,
"Ravi Kumar Vodapalli" <ravi.kumar.vodapalli@intel.com>,
"Shekhar Chauhan" <shekhar.chauhan@intel.com>,
"Vinod Govindapillai" <vinod.govindapillai@intel.com>,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Subject: Re: [PATCH v4 07/11] drm/i915/xe3p_lpd: Extend Type-C flow for static DDI allocation
Date: Mon, 17 Nov 2025 17:17:48 +0200 [thread overview]
Message-ID: <aRs8nFHQ-syeq4SB@ideak-desk> (raw)
In-Reply-To: <176339175784.5989.15280881790145867529@intel.com>
On Mon, Nov 17, 2025 at 12:02:37PM -0300, Gustavo Sousa wrote:
> [...]
> >> > >> + if (iom_dp_resource_lock(tc))
> >> > >> + return false;
> >> > >> +
> >> > >> + val = intel_de_read(display, IOM_DP_RESOURCE_MNG);
> >> > >> +
> >> > >> + consumer = val & IOM_DDI_CONSUMER_MASK(tc_port);
> >> > >> + consumer >>= IOM_DDI_CONSUMER_SHIFT(tc_port);
> >> > >> +
> >> > >> + /*
> >> > >> + * Bspec instructs to select first available DDI, but our driver is not
> >> > >> + * ready for such dynamic allocation yet. For now, we force a "static"
> >> > >> + * allocation: map the physical port (where HPD happens) to the
> >> > >> + * encoder's DDI (logical TC port, represented by tc_port).
> >> > >> + */
> >> > >> + expected_consumer = IOM_DDI_CONSUMER_STATIC_TC(tc_port);
> >> > >> + expected_consumer >>= IOM_DDI_CONSUMER_SHIFT(tc_port);
> >>
> >> One more thing occured to me: why can't this allocate any free DDI? IOW
> >> does the address of DDI_BUF_CTL (aka DDI_CTL_DE) used for tc_port depend
> >> on which DDI gets allocated (or is there any other dependency on which
> >> DDI got allocated)? AFAICS there is no such dependency and the above
> >> address would be DDI_BUF_CTL(encoder->port) regardless of the allocated
> >> DDI. In that case any free DDI could be allocated here.
> >
> >Ok, checking this again, DDI_BUF_CTL etc. DDI register addresses will
> >depend on the allocated DDI. So nvm the above, the mapping needs to
> >stay 1:1 for now until all the DDI reg accesses are converted to index
> >the registers with the allocated DDI index.
>
> As far as I understand this, especially after talking with Windows
> folks, the allocated DDI will define the port index for the whole
> programming, including the registers used to program the PHY - and the
> hardware would take care of routing to the correct PHY.
Correct, that's how I also understood it after "checking this again".
> Thus, it appears we would need to do the allocation at hotplug time,
> like saying "this PHY will be driven by DDI x".
To clarify, if the mapping is 1:1, as in this patch, the allocation can
be done statically during driver loading as discussed earlier. This is
the only way it will work atm, because the DDI allocation cannot fail
during runtime.
> One of the reasons I think we can't allocate a free DDI at the moment is
> that the driver is expecting a 1:1 static mapping for HPD interations.
> We will neeed to make the driver aware of the mapping in order to use
> the correct encoder when handling HPD events.
Again clarifying, that the above is true only for legacy connectors. IOW
for a TBT/DP-alt connector, where IOM does the DDI allocation, the HPD
IRQ delivered to the driver will be already according to the allocated
DDI. That is those connectors are _different_ wrt. to the mapping
requirement than the dynamic legacy connectors, for those TBT/DP-alt
connectors the DDI registers will be accessed based on the
tc_port/encoder->port to which the HPD IRQ is delivered.
> --
> Gustavo Sousa
next prev parent reply other threads:[~2025-11-17 15:18 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-08 0:05 [PATCH v4 00/11] drm/i915/display: Add initial support for Xe3p_LPD Gustavo Sousa
2025-11-08 0:05 ` [PATCH v4 01/11] drm/i915/wm: Do not make latency values monotonic on Xe3 onward Gustavo Sousa
2025-11-12 3:46 ` Kandpal, Suraj
2025-11-12 12:45 ` Gustavo Sousa
2025-11-08 0:05 ` [PATCH v4 02/11] drm/i915/vbt: Add fields dedicated_external and dyn_port_over_tc Gustavo Sousa
2025-11-11 16:02 ` Imre Deak
2025-11-11 16:15 ` Imre Deak
2025-11-12 13:00 ` Gustavo Sousa
2025-11-12 13:20 ` Imre Deak
2025-11-13 22:01 ` Gustavo Sousa
2025-11-08 0:05 ` [PATCH v4 03/11] drm/i915/power: Use intel_encoder_is_tc() Gustavo Sousa
2025-11-12 16:19 ` Imre Deak
2025-11-13 22:01 ` Gustavo Sousa
2025-11-08 0:05 ` [PATCH v4 04/11] drm/i915/display: Handle dedicated external ports in intel_encoder_is_tc() Gustavo Sousa
2025-11-12 16:24 ` Imre Deak
2025-11-13 22:02 ` Gustavo Sousa
2025-11-08 0:05 ` [PATCH v4 05/11] drm/i915/fbc: Add intel_fbc_id_for_pipe() Gustavo Sousa
2025-11-10 16:35 ` Matt Roper
2025-11-10 17:03 ` Ville Syrjälä
2025-11-10 22:18 ` Gustavo Sousa
2025-11-08 0:05 ` [PATCH v4 06/11] drm/i915/xe3p_lpd: Handle underrun debug bits Gustavo Sousa
2025-11-10 11:45 ` Jani Nikula
2025-11-11 0:23 ` Gustavo Sousa
2025-11-11 10:22 ` Jani Nikula
2025-11-11 12:22 ` Gustavo Sousa
2025-11-10 17:03 ` Ville Syrjälä
2025-11-10 23:42 ` Gustavo Sousa
2025-11-08 0:05 ` [PATCH v4 07/11] drm/i915/xe3p_lpd: Extend Type-C flow for static DDI allocation Gustavo Sousa
2025-11-12 17:53 ` Imre Deak
2025-11-14 19:46 ` Gustavo Sousa
2025-11-15 0:40 ` Imre Deak
2025-11-15 1:22 ` Imre Deak
2025-11-17 15:02 ` Gustavo Sousa
2025-11-17 15:17 ` Imre Deak [this message]
2025-11-17 17:23 ` Gustavo Sousa
2025-11-17 17:58 ` Imre Deak
2025-11-17 15:33 ` Gustavo Sousa
2025-11-17 16:01 ` Imre Deak
2025-11-08 0:05 ` [PATCH v4 08/11] drm/i915/nvls: Add NVL-S display support Gustavo Sousa
2025-11-08 0:05 ` [PATCH v4 09/11] drm/i915/display: Use platform check in HAS_LT_PHY() Gustavo Sousa
2025-11-08 0:05 ` [PATCH v4 10/11] drm/i915/display: Move HAS_LT_PHY() to intel_display_device.h Gustavo Sousa
2025-11-08 0:05 ` [PATCH v4 11/11] drm/i915/display: Use HAS_LT_PHY() for LT PHY AUX power Gustavo Sousa
2025-11-08 0:15 ` [PATCH v4 00/11] drm/i915/display: Add initial support for Xe3p_LPD Gustavo Sousa
2025-11-08 1:52 ` ✗ CI.checkpatch: warning for drm/i915/display: Add initial support for Xe3p_LPD (rev4) Patchwork
2025-11-08 1:54 ` ✓ CI.KUnit: success " Patchwork
2025-11-08 2:09 ` ✗ CI.checksparse: warning " Patchwork
2025-11-08 2:31 ` ✗ Xe.CI.BAT: failure " Patchwork
2025-11-09 8:10 ` ✗ Xe.CI.Full: " 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=aRs8nFHQ-syeq4SB@ideak-desk \
--to=imre.deak@intel.com \
--cc=ankit.k.nautiyal@intel.com \
--cc=dnyaneshwar.bhadane@intel.com \
--cc=gustavo.sousa@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jouni.hogander@intel.com \
--cc=juha-pekka.heikkila@intel.com \
--cc=lucas.demarchi@intel.com \
--cc=luciano.coelho@intel.com \
--cc=matthew.d.roper@intel.com \
--cc=matthew.s.atwood@intel.com \
--cc=ravi.kumar.vodapalli@intel.com \
--cc=shekhar.chauhan@intel.com \
--cc=vinod.govindapillai@intel.com \
/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