Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/56] Enable HDMI FRL for MTL+
@ 2026-10-12  3:57 Ankit Nautiyal
  2026-10-12  3:57 ` [PATCH v2 01/56] drm/i915/hdmi: Parse FRL max link rate from VBT Ankit Nautiyal
                   ` (59 more replies)
  0 siblings, 60 replies; 94+ messages in thread
From: Ankit Nautiyal @ 2026-10-12  3:57 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: dri-devel, jani.nikula, uma.shankar, ville.syrjala, suraj.kandpal

FRL is a high-bandwidth transmission mode required for modes that exceed
the TMDS bandwidth limit.

The series covers the core enabling:
- SCDC helper additions for FRL link training
- FRL link training state machine (LTS:2, LTS:3, LTS:P)
- DDI enable/disable sequence updates for FRL mode
- DFM (Data Flow Metering) computation and register programming
- PHY (CX0/LT PHY) support for FRL rates
- Mode validation and clock computation for FRL

This is a work in progress. The primary goal at this stage is to get the
overall design reviewed and the foundational patches landed before building
on top.

Lightly tested on PTL. Modes like 4K@120 are working. Higher resolution
modes (e.g. 8K) require DSC which is not yet covered in this series, that
work is ongoing.

Testing on other MTL+ platforms is also ongoing.
Known gaps:
- DSC over FRL not yet supported
- Testing limited to MTL, PTL so far

Feedback on the design and approach is welcome.

Rev 2:
- Addressed review comments from Jani and Suraj on VBT parsing.
- Added pipe joiner support for HDMI.
- Added audio pruning for HDMI FRL mode.
- Tweaked the vswing presets and removed test-only presets.
- Fixed potential integer overflows in FRL DFM calculations.
- Tested on MTL, PTL, NVL with AORUS FO32U2P HDMI 2.1 panel.

Note: DSC support is WIP. Working patches are available in my public tree:
https://github.com/aknautiyal/tip/tree/hdmi21_dev  (based on drm-tip, may be rebased)
Tested working for most modes.

Ankit Nautiyal (38):
  drm/i915/hdmi: Add new data members for FRL configuration
  drm/i915/hdmi: Add FRL link rate cap
  drm/drm_scdc_helper: Add SCDC helper funcs for FRL
  drm/i915/display: Add registers for HDMI FRL configuration
  drm/i915/display: Add new members in crtc_state for FRL configuration
  drm/i915/intel_cx0_phy_regs: Add HDMI FRL SHIFT EN bit in
    PORT_BUF_CTL_1
  drm/i915/ddi: Update Transcoder/DDI registers with the frl bits
  drm/i915/hdmi: Enable Scrambling only for TMDS mode
  drm/i915/ddi: Simplify intel_ddi_enable()
  drm/i915/ddi: Factor out common transcoder/vblank enable sequence
  drm/i915/ddi: Update HDMI modeset sequence for MTL+
  drm/i915/hdmi: Add function to prepare registers for FRL mode
  drm/i915/hdmi: Add functions for FRL training state machine
  drm/i915/intel_hdmi: Add helper to disable FRL
  drm/i915/hdmi: Reduce FRL rate cap on rate change during training
  drm/i915/hdmi: Add provision for FRL mode while computing output
    format
  drm/i915/cx0: Add helper to check if the FRL rate is valid
  drm/i915/lt_phy: Add helper to check if the FRL rate is valid
  drm/i915/hdmi_frl_dfm: Add support for DFM calculation with DSC
  drm/i915/hdmi: Add helper to write FRL CFG register
  drm/i915/hdmi_frl_dfm: Add helpers to read/write FRL DFM registers
  drm/i915/hdmi: Validate FRL modes in mode_valid using the FRL DFM
  drm/i915/hdmi: Add FRL clock computation based on DFM
  drm/i915/hdmi: Add support for sending uevent to user for FRL training
    failure
  drm/i915/ddi: Wire FRL into the HDMI DDI enable/disable path
  drm/i915/ltphy: Fix HDMI FRL per-lane TX mapping
  drm/i915/hdmi: Add read out for FRL state
  drm/i915/hdmi: Use the real pixel clock as crtc_clock for FRL
  drm/i915/display: Add FRL members to the state checker
  drm/i915/hdmi: Compute output format for HDMI FRL mode
  drm/i915/hdmi: Add a helper to check non DSC audio support for HDMI
    FRL
  drm/i915/audio: Add the mode pruning logic for HDMI FRL
  drm/i915/joiner: Prepare to move joiner helpers to a new file
  drm/i915/joiner: Move joiner candidate helpers to intel_joiner.c
  drm/i915/joiner: Move joiner pipe mask helper to intel_joiner.c
  drm/i915/hdmi: Iterate through joiner candidates in compute_config
    path
  drm/i915/hdmi: Iterate through joiner candidates in mode_valid path
  drm/i915/hdmi: Allow Pipe joiner for HDMI

Suraj Kandpal (7):
  drm/i915/hdmi: Introduce intel_hdmi_frl_level() for per-lane TxFFE
  drm/i915/hdmi: Drive per-lane TxFFE during FRL link training
  drm/i915/ltphy: Add PLL tables for HDMI FRL
  drm/i915/ltphy: Add safegaurd when calculation HDMI FRL state
  drm/i915/ltphy: Calculate port clock for HDMI FRL
  drm/i915/ltphy: Verify HDMI FRL tables
  drm/i915/ddi_buf: Add Vswing table for HDMI FRL

Vandita Kulkarni (11):
  drm/i915/hdmi: Parse FRL max link rate from VBT
  drm/i915/hdmi_frl_dfm_regs: Define DFM registers
  drm/i915/hdmi_frl_dfm: Define frl_dfm structure
  drm/i915/hdmi_frl_dfm: Add non dsc frl capacity computation helpers
  drm/i915/hdmi: Rename port clock limit to specify tmds clock
  drm/i915/hdmi: Rename port clock valid to specify tmds clock
  drm/i915/hdmi: Rename mode clock valid to specify tmds clock
  drm/i915/hdmi: Add FRL port clock valid
  drm/i915/hdmi: Compute FRL Link M/N
  drm/i915/hdmi_frl_dfm: Write and read back FRL Link M/N
  drm/i915/hdmi: Enable FRL based mode clock valid

 drivers/gpu/drm/display/drm_scdc_helper.c     |  109 ++
 drivers/gpu/drm/i915/Makefile                 |    2 +
 drivers/gpu/drm/i915/display/intel_audio.c    |   14 +-
 drivers/gpu/drm/i915/display/intel_bios.c     |   39 +
 drivers/gpu/drm/i915/display/intel_bios.h     |    1 +
 drivers/gpu/drm/i915/display/intel_cx0_phy.c  |   23 +
 drivers/gpu/drm/i915/display/intel_cx0_phy.h  |    1 +
 .../gpu/drm/i915/display/intel_cx0_phy_regs.h |    1 +
 drivers/gpu/drm/i915/display/intel_ddi.c      |  159 ++-
 .../drm/i915/display/intel_ddi_buf_trans.c    |   17 +
 drivers/gpu/drm/i915/display/intel_display.c  |   55 +-
 .../drm/i915/display/intel_display_debugfs.c  |    6 +-
 .../gpu/drm/i915/display/intel_display_regs.h |   27 +
 .../drm/i915/display/intel_display_types.h    |   38 +
 drivers/gpu/drm/i915/display/intel_dp.c       |   54 +-
 drivers/gpu/drm/i915/display/intel_dp.h       |   11 -
 drivers/gpu/drm/i915/display/intel_dp_mst.c   |    5 +-
 drivers/gpu/drm/i915/display/intel_dpll.c     |    2 +-
 drivers/gpu/drm/i915/display/intel_hdmi.c     | 1051 ++++++++++++++++-
 drivers/gpu/drm/i915/display/intel_hdmi.h     |   16 +-
 .../gpu/drm/i915/display/intel_hdmi_frl_dfm.c |  787 ++++++++++++
 .../gpu/drm/i915/display/intel_hdmi_frl_dfm.h |  123 ++
 .../i915/display/intel_hdmi_frl_dfm_regs.h    |   36 +
 drivers/gpu/drm/i915/display/intel_joiner.c   |  108 ++
 drivers/gpu/drm/i915/display/intel_joiner.h   |   27 +
 drivers/gpu/drm/i915/display/intel_lt_phy.c   |  348 +++++-
 drivers/gpu/drm/i915/display/intel_lt_phy.h   |    1 +
 .../drm/i915/display/intel_modeset_verify.c   |   18 +
 drivers/gpu/drm/i915/display/intel_vbt_defs.h |    7 +
 drivers/gpu/drm/xe/Makefile                   |    2 +
 include/drm/display/drm_scdc.h                |    3 +
 include/drm/display/drm_scdc_helper.h         |   23 +
 32 files changed, 2886 insertions(+), 228 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/display/intel_hdmi_frl_dfm.c
 create mode 100644 drivers/gpu/drm/i915/display/intel_hdmi_frl_dfm.h
 create mode 100644 drivers/gpu/drm/i915/display/intel_hdmi_frl_dfm_regs.h
 create mode 100644 drivers/gpu/drm/i915/display/intel_joiner.c
 create mode 100644 drivers/gpu/drm/i915/display/intel_joiner.h

-- 
2.50.1


^ permalink raw reply	[flat|nested] 94+ messages in thread

end of thread, other threads:[~2026-10-12  8:44 UTC | newest]

Thread overview: 94+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-12  3:57 [PATCH v2 00/56] Enable HDMI FRL for MTL+ Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 01/56] drm/i915/hdmi: Parse FRL max link rate from VBT Ankit Nautiyal
2026-10-12  4:34   ` sashiko-bot
2026-10-12  8:01   ` Shankar, Uma
2026-10-12  8:10     ` Shankar, Uma
2026-10-12  3:57 ` [PATCH v2 02/56] drm/i915/hdmi: Add new data members for FRL configuration Ankit Nautiyal
2026-10-12  4:36   ` sashiko-bot
2026-10-12  8:35   ` Shankar, Uma
2026-10-12  3:57 ` [PATCH v2 03/56] drm/i915/hdmi: Add FRL link rate cap Ankit Nautiyal
2026-10-12  8:43   ` Shankar, Uma
2026-10-12  3:57 ` [PATCH v2 04/56] drm/drm_scdc_helper: Add SCDC helper funcs for FRL Ankit Nautiyal
2026-10-12  4:32   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 05/56] drm/i915/display: Add registers for HDMI FRL configuration Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 06/56] drm/i915/display: Add new members in crtc_state for " Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 07/56] drm/i915/intel_cx0_phy_regs: Add HDMI FRL SHIFT EN bit in PORT_BUF_CTL_1 Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 08/56] drm/i915/ddi: Update Transcoder/DDI registers with the frl bits Ankit Nautiyal
2026-10-12  4:35   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 09/56] drm/i915/hdmi: Enable Scrambling only for TMDS mode Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 10/56] drm/i915/ddi: Simplify intel_ddi_enable() Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 11/56] drm/i915/ddi: Factor out common transcoder/vblank enable sequence Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 12/56] drm/i915/ddi: Update HDMI modeset sequence for MTL+ Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 13/56] drm/i915/hdmi: Add function to prepare registers for FRL mode Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 14/56] drm/i915/hdmi: Add functions for FRL training state machine Ankit Nautiyal
2026-10-12  4:49   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 15/56] drm/i915/intel_hdmi: Add helper to disable FRL Ankit Nautiyal
2026-10-12  4:44   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 16/56] drm/i915/hdmi: Reduce FRL rate cap on rate change during training Ankit Nautiyal
2026-10-12  4:47   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 17/56] drm/i915/hdmi: Introduce intel_hdmi_frl_level() for per-lane TxFFE Ankit Nautiyal
2026-10-12  4:49   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 18/56] drm/i915/hdmi: Drive per-lane TxFFE during FRL link training Ankit Nautiyal
2026-10-12  4:34   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 19/56] drm/i915/ltphy: Add PLL tables for HDMI FRL Ankit Nautiyal
2026-10-12  4:26   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 20/56] drm/i915/ltphy: Add safegaurd when calculation HDMI FRL state Ankit Nautiyal
2026-10-12  4:40   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 21/56] drm/i915/ltphy: Calculate port clock for HDMI FRL Ankit Nautiyal
2026-10-12  4:35   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 22/56] drm/i915/ltphy: Verify HDMI FRL tables Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 23/56] drm/i915/ddi_buf: Add Vswing table for HDMI FRL Ankit Nautiyal
2026-10-12  4:33   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 24/56] drm/i915/hdmi: Add provision for FRL mode while computing output format Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 25/56] drm/i915/cx0: Add helper to check if the FRL rate is valid Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 26/56] drm/i915/lt_phy: " Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 27/56] drm/i915/hdmi_frl_dfm_regs: Define DFM registers Ankit Nautiyal
2026-10-12  4:35   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 28/56] drm/i915/hdmi_frl_dfm: Define frl_dfm structure Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 29/56] drm/i915/hdmi_frl_dfm: Add non dsc frl capacity computation helpers Ankit Nautiyal
2026-10-12  4:48   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 30/56] drm/i915/hdmi_frl_dfm: Add support for DFM calculation with DSC Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 31/56] drm/i915/hdmi: Add helper to write FRL CFG register Ankit Nautiyal
2026-10-12  4:33   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 32/56] drm/i915/hdmi_frl_dfm: Add helpers to read/write FRL DFM registers Ankit Nautiyal
2026-10-12  4:42   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 33/56] drm/i915/hdmi: Rename port clock limit to specify tmds clock Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 34/56] drm/i915/hdmi: Rename port clock valid " Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 35/56] drm/i915/hdmi: Rename mode " Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 36/56] drm/i915/hdmi: Validate FRL modes in mode_valid using the FRL DFM Ankit Nautiyal
2026-10-12  4:49   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 37/56] drm/i915/hdmi: Add FRL port clock valid Ankit Nautiyal
2026-10-12  4:56   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 38/56] drm/i915/hdmi: Add FRL clock computation based on DFM Ankit Nautiyal
2026-10-12  4:51   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 39/56] drm/i915/hdmi: Add support for sending uevent to user for FRL training failure Ankit Nautiyal
2026-10-12  4:49   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 40/56] drm/i915/ddi: Wire FRL into the HDMI DDI enable/disable path Ankit Nautiyal
2026-10-12  4:54   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 41/56] drm/i915/ltphy: Fix HDMI FRL per-lane TX mapping Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 42/56] drm/i915/hdmi: Add read out for FRL state Ankit Nautiyal
2026-10-12  4:51   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 43/56] drm/i915/hdmi: Compute FRL Link M/N Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 44/56] drm/i915/hdmi_frl_dfm: Write and read back " Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 45/56] drm/i915/hdmi: Use the real pixel clock as crtc_clock for FRL Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 46/56] drm/i915/display: Add FRL members to the state checker Ankit Nautiyal
2026-10-12  4:54   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 47/56] drm/i915/hdmi: Compute output format for HDMI FRL mode Ankit Nautiyal
2026-10-12  4:53   ` sashiko-bot
2026-10-12  3:57 ` [PATCH v2 48/56] drm/i915/hdmi: Add a helper to check non DSC audio support for HDMI FRL Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 49/56] drm/i915/audio: Add the mode pruning logic " Ankit Nautiyal
2026-10-12  3:57 ` [PATCH v2 50/56] drm/i915/hdmi: Enable FRL based mode clock valid Ankit Nautiyal
2026-10-12  4:58   ` sashiko-bot
2026-10-12  3:58 ` [PATCH v2 51/56] drm/i915/joiner: Prepare to move joiner helpers to a new file Ankit Nautiyal
2026-10-12  3:58 ` [PATCH v2 52/56] drm/i915/joiner: Move joiner candidate helpers to intel_joiner.c Ankit Nautiyal
2026-10-12  3:58 ` [PATCH v2 53/56] drm/i915/joiner: Move joiner pipe mask helper " Ankit Nautiyal
2026-10-12  4:51   ` sashiko-bot
2026-10-12  3:58 ` [PATCH v2 54/56] drm/i915/hdmi: Iterate through joiner candidates in compute_config path Ankit Nautiyal
2026-10-12  3:58 ` [PATCH v2 55/56] drm/i915/hdmi: Iterate through joiner candidates in mode_valid path Ankit Nautiyal
2026-10-12  4:53   ` sashiko-bot
2026-10-12  3:58 ` [PATCH v2 56/56] drm/i915/hdmi: Allow Pipe joiner for HDMI Ankit Nautiyal
2026-10-12  5:01   ` sashiko-bot
2026-10-12  4:59 ` ✗ CI.checkpatch: warning for Enable HDMI FRL for MTL+ (rev2) Patchwork
2026-10-12  5:01 ` ✓ CI.KUnit: success " Patchwork
2026-10-12  5:41 ` ✓ Xe.CI.BAT: " Patchwork
2026-10-12  7:12 ` ✗ Xe.CI.FULL: failure " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox