AMD General

This series is

Reviewed-by: Fangzhi Zuo <[email protected]>

> -----Original Message-----
> From: Harry Wentland <[email protected]>
> Sent: Tuesday, May 12, 2026 10:23
> To: [email protected]
> Cc: Zuo, Jerry <[email protected]>; Wentland, Harry
> <[email protected]>; Rodrigo Siqueira <[email protected]>;
> Tomasz Pakuła <[email protected]>
> Subject: [PATCH v4 00/13] HDMI FRL and DSC Support for amdgpu
>
> This patch series adds HDMI FRL and FRL DSC support to the amdgpu display
> driver.
>
> This work passed a representative subset of HDMI compliance and a full
> compliance run on this branch is in the works. We don't expect the full run to
> show any failures since it passes in other environments.
>
> Thanks to Siqueira who prepared this work a couple years back and
> unfortunately didn't manage to send them while he was still working at AMD.
>
> Thanks to Jerry who has been making this code solid on Linux and running
> the compliance tests.
>
> The first patch in the series isn't related to HDMI 2.1 but included here
> because it moved the code around some key bits of the HDMI 2.1 stuff
> around too much. It will land with the next DC Patch series.
>
> v4:
> - Disable FRL over DP MST due to lack of testing
> - FP compilation fix
> - squash fixup commit
>
> v3:
> - Add missing DML2 bits
> - Merged register headers to asdn and removed from patchset
>
> v2:
> - Add missing function pointers on DCN 3.x
> - Add DSC
>
> Cc: Rodrigo Siqueira <[email protected]>
> Cc: Zuo, Jerry <[email protected]>
> Cc: Tomasz Pakuła <[email protected]>
>
> Fangzhi Zuo (1):
>   drm/amd/display: add HDMI 2.1 Compliance Support
>
> Harry Wentland (12):
>   drm/amd/display: Add HDMI FRL definitions to includes
>   drm/amd/display: Add DML changes to support HDMI FRL
>   drm/amd/display: add HDMI 2.1 FRL base support to DML 2.0
>   drm/amd/display: Add DCCG DIO, HPO, OPP, and OPTC support for FRL
>   drm/amd/display: Add FRL support to clk_mgr, dsc, hdcp
>   drm/amd/display: Tie FRL programming together in HWSS
>   drm/amd/display: Add DC resource support for FRL
>   drm/amd/display Add DC link support for FRL
>   drm/amd/display: Add support for FRL to DC core
>   drm/amd/display: Update HDCP and info_packet modules for FRL
>   drm/amd/display: Tie FRL support into amdgpu_dm
>   drm/amd/display: add HDMI 2.1 DSC over FRL support
>
>  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  160 ++-
>  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h |   11 +
>  .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c |   28 +
>  .../amd/display/amdgpu_dm/amdgpu_dm_hdcp.c    |    2 +
>  .../amd/display/amdgpu_dm/amdgpu_dm_helpers.c |   68 +-
>  .../display/amdgpu_dm/amdgpu_dm_mst_types.c   |   79 ++
>  .../drm/amd/display/dc/bios/bios_parser2.c    |   21 +
>  .../drm/amd/display/dc/bios/command_table2.c  |    6 +
>  .../dce112/command_table_helper2_dce112.c     |    3 +
>  .../bios/dce112/command_table_helper_dce112.c |    3 +
>  .../display/dc/clk_mgr/dcn31/dcn31_clk_mgr.c  |    3 +
>  .../dc/clk_mgr/dcn314/dcn314_clk_mgr.c        |    3 +
>  .../dc/clk_mgr/dcn315/dcn315_clk_mgr.c        |    3 +
>  .../dc/clk_mgr/dcn316/dcn316_clk_mgr.c        |    3 +
>  .../display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c  |   12 +
>  .../display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c  |   14 +
>  .../dc/clk_mgr/dcn401/dcn401_clk_mgr.c        |   18 +
>  drivers/gpu/drm/amd/display/dc/core/dc.c      |   32 +-
>  .../gpu/drm/amd/display/dc/core/dc_debug.c    |    4 +
>  .../drm/amd/display/dc/core/dc_hw_sequencer.c |   49 +
>  .../drm/amd/display/dc/core/dc_link_enc_cfg.c |    3 +
>  .../drm/amd/display/dc/core/dc_link_exports.c |   45 +
>  .../gpu/drm/amd/display/dc/core/dc_resource.c |  289 ++++
>  .../gpu/drm/amd/display/dc/core/dc_stream.c   |   35 +
>  drivers/gpu/drm/amd/display/dc/dc.h           |  128 ++
>  drivers/gpu/drm/amd/display/dc/dc_dsc.h       |    8 +
>  .../gpu/drm/amd/display/dc/dc_hdmi_types.h    |  164 ++-
>  drivers/gpu/drm/amd/display/dc/dc_hw_types.h  |    8 +
>  drivers/gpu/drm/amd/display/dc/dc_types.h     |   24 +
>  .../amd/display/dc/dccg/dcn30/dcn30_dccg.c    |   40 +
>  .../amd/display/dc/dccg/dcn30/dcn30_dccg.h    |    8 +
>  .../amd/display/dc/dccg/dcn31/dcn31_dccg.c    |   88 ++
>  .../amd/display/dc/dccg/dcn31/dcn31_dccg.h    |   13 +
>  .../amd/display/dc/dccg/dcn314/dcn314_dccg.c  |   25 +
>  .../amd/display/dc/dccg/dcn32/dcn32_dccg.c    |   68 +
>  .../amd/display/dc/dccg/dcn35/dcn35_dccg.c    |  321 +++++
>  .../amd/display/dc/dccg/dcn401/dcn401_dccg.c  |   73 +
>  .../amd/display/dc/dccg/dcn401/dcn401_dccg.h  |    4 +
>  .../amd/display/dc/dccg/dcn42/dcn42_dccg.c    |   33 +
>  .../gpu/drm/amd/display/dc/dce/dce_audio.c    |    8 +
>  .../drm/amd/display/dc/dce/dce_clock_source.c |   30 +-
>  .../display/dc/dio/dcn10/dcn10_link_encoder.c |    3 +-
>  .../display/dc/dio/dcn20/dcn20_link_encoder.h |    1 +
>  .../dc/dio/dcn30/dcn30_dio_link_encoder.c     |  250 ++++
>  .../dc/dio/dcn30/dcn30_dio_link_encoder.h     |   17 +
>  .../dc/dio/dcn301/dcn301_dio_link_encoder.c   |   18 +
>  .../dc/dio/dcn31/dcn31_dio_link_encoder.c     |  114 ++
>  .../dc/dio/dcn31/dcn31_dio_link_encoder.h     |    8 +
>  .../dc/dio/dcn32/dcn32_dio_link_encoder.c     |  214 +++
>  .../dc/dio/dcn32/dcn32_dio_link_encoder.h     |   16 +
>  .../dc/dio/dcn321/dcn321_dio_link_encoder.c   |   20 +
>  .../dc/dio/dcn35/dcn35_dio_link_encoder.c     |   21 +
>  .../dc/dio/dcn401/dcn401_dio_link_encoder.c   |  220 +++
>  .../dc/dio/dcn401/dcn401_dio_link_encoder.h   |   16 +
>  .../dc/dio/dcn42/dcn42_dio_link_encoder.c     |   21 +
>  drivers/gpu/drm/amd/display/dc/dm_cp_psp.h    |    1 +
>  .../drm/amd/display/dc/dm_services_types.h    |    1 +
>  drivers/gpu/drm/amd/display/dc/dml/Makefile   |    3 +
>  .../drm/amd/display/dc/dml/dcn20/dcn20_fpu.c  |    5 +
>  .../drm/amd/display/dc/dml/dcn30/dcn30_fpu.c  |  127 ++
>  .../drm/amd/display/dc/dml/dcn30/dcn30_fpu.h  |   22 +
>  .../dc/dml/dcn30/display_mode_vba_30.c        |  280 +++-
>  .../amd/display/dc/dml/dcn302/dcn302_fpu.c    |    1 +
>  .../amd/display/dc/dml/dcn303/dcn303_fpu.c    |    1 +
>  .../dc/dml/dcn31/display_mode_vba_31.c        |  243 ++++
>  .../dc/dml/dcn314/display_mode_vba_314.c      |  241 ++++
>  .../drm/amd/display/dc/dml/dcn32/dcn32_fpu.c  |   10 +
>  .../drm/amd/display/dc/dml/dcn32/dcn32_fpu.h  |    2 +
>  .../dc/dml/dcn32/display_mode_vba_32.c        |   16 +-
>  .../dc/dml/dcn32/display_mode_vba_util_32.c   |  127 +-
>  .../amd/display/dc/dml/display_mode_enums.h   |    1 +
>  .../drm/amd/display/dc/dml/dml1_frl_cap_chk.c |  786
> +++++++++++  .../drm/amd/display/dc/dml/dml1_frl_cap_chk.h |  173 +++
>  .../gpu/drm/amd/display/dc/dml2_0/Makefile    |    2 +
>  .../amd/display/dc/dml2_0/display_mode_core.c |  104 +-
>  .../amd/display/dc/dml2_0/display_mode_util.c |    3 +
>  .../dml2_0/dml21/dml21_translation_helper.c   |    4 +
>  .../dml21/src/dml2_core/dml2_core_dcn4.c      |    1 +
>  .../src/dml2_core/dml2_core_dcn4_calcs.c      |   29 +-
>  .../src/dml2_core/dml2_core_shared_types.h    |    3 +
>  .../lib_frl_cap_check.c                       |  396 ++++++
>  .../lib_frl_cap_check.h                       |   90 ++
>  .../dc/dml2_0/dml2_translation_helper.c       |    4 +
>  .../drm/amd/display/dc/dml2_0/dml2_utils.c    |    2 +
>  .../amd/display/dc/dml2_0/dml_frl_cap_chk.c   |  413 ++++++
>  .../amd/display/dc/dml2_0/dml_frl_cap_chk.h   |  109 ++
>  drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c   |  704 ++++++++++
>  drivers/gpu/drm/amd/display/dc/dsc/dsc.h      |    5 +
>  .../gpu/drm/amd/display/dc/hdcp/hdcp_msg.c    |    1 +
>  drivers/gpu/drm/amd/display/dc/hpo/Makefile   |   10 +
>  .../dc/hpo/dcn30/dcn30_hpo_frl_link_encoder.c |  286
> ++++  .../dc/hpo/dcn30/dcn30_hpo_frl_link_encoder.h |  146
> ++  .../hpo/dcn30/dcn30_hpo_frl_stream_encoder.c  | 1043
> +++++++++++++++  .../hpo/dcn30/dcn30_hpo_frl_stream_encoder.h  |  436
> ++++++
>  .../dcn401/dcn401_hpo_frl_stream_encoder.c    |  907 +++++++++++++
>  .../dcn401/dcn401_hpo_frl_stream_encoder.h    |  335 +++++
>  .../hpo/dcn42/dcn42_hpo_frl_stream_encoder.c  |  207 +++
>  .../hpo/dcn42/dcn42_hpo_frl_stream_encoder.h  |   59 +
>  .../amd/display/dc/hwss/dce110/dce110_hwseq.c |   99 +-
>  .../amd/display/dc/hwss/dcn10/dcn10_hwseq.c   |   37 +
>  .../amd/display/dc/hwss/dcn20/dcn20_hwseq.c   |   19 +-
>  .../amd/display/dc/hwss/dcn30/dcn30_hwseq.c   |   49 +-
>  .../amd/display/dc/hwss/dcn30/dcn30_hwseq.h   |   13 +
>  .../amd/display/dc/hwss/dcn30/dcn30_init.c    |    1 +
>  .../amd/display/dc/hwss/dcn31/dcn31_hwseq.c   |   13 +-
>  .../amd/display/dc/hwss/dcn31/dcn31_init.c    |    1 +
>  .../amd/display/dc/hwss/dcn314/dcn314_hwseq.c |    3 +-
>  .../amd/display/dc/hwss/dcn314/dcn314_init.c  |    1 +
>  .../amd/display/dc/hwss/dcn32/dcn32_hwseq.c   |   13 +-
>  .../amd/display/dc/hwss/dcn32/dcn32_init.c    |    3 +
>  .../amd/display/dc/hwss/dcn35/dcn35_hwseq.c   |   42 +
>  .../amd/display/dc/hwss/dcn35/dcn35_hwseq.h   |    2 +
>  .../amd/display/dc/hwss/dcn35/dcn35_init.c    |    2 +
>  .../amd/display/dc/hwss/dcn351/dcn351_init.c  |    2 +
>  .../amd/display/dc/hwss/dcn401/dcn401_hwseq.c |   13 +
>  .../amd/display/dc/hwss/dcn401/dcn401_init.c  |    1 +
>  .../amd/display/dc/hwss/dcn42/dcn42_hwseq.c   |   38 +-
>  .../amd/display/dc/hwss/dcn42/dcn42_init.c    |    2 +
>  .../drm/amd/display/dc/hwss/hw_sequencer.h    |   34 +
>  .../display/dc/hwss/hw_sequencer_private.h    |    3 +
>  .../gpu/drm/amd/display/dc/inc/core_status.h  |    2 +
>  .../gpu/drm/amd/display/dc/inc/core_types.h   |   12 +
>  drivers/gpu/drm/amd/display/dc/inc/hw/dccg.h  |   10 +
>  .../gpu/drm/amd/display/dc/inc/hw/hw_shared.h |    1 +
>  .../drm/amd/display/dc/inc/hw/link_encoder.h  |  176 +++
>  .../amd/display/dc/inc/hw/stream_encoder.h    |  231 ++++
>  .../amd/display/dc/inc/hw/timing_generator.h  |    5 +
>  .../gpu/drm/amd/display/dc/inc/link_service.h |   15 +
>  drivers/gpu/drm/amd/display/dc/inc/resource.h |    7 +
>  drivers/gpu/drm/amd/display/dc/link/Makefile  |    2 +
>  .../display/dc/link/hwss/link_hwss_hpo_frl.c  |  113 ++
>  .../display/dc/link/hwss/link_hwss_hpo_frl.h  |   34 +
>  .../drm/amd/display/dc/link/link_detection.c  |  111 ++
>  .../gpu/drm/amd/display/dc/link/link_dpms.c   |  223 +++-
>  .../gpu/drm/amd/display/dc/link/link_dpms.h   |    1 +
>  .../drm/amd/display/dc/link/link_factory.c    |   44 +
>  .../drm/amd/display/dc/link/link_validation.c |  298 +++++
>  .../drm/amd/display/dc/link/link_validation.h |   13 +
>  .../amd/display/dc/link/protocols/link_ddc.c  |   90 ++
>  .../amd/display/dc/link/protocols/link_ddc.h  |    4 +
>  .../display/dc/link/protocols/link_hdmi_frl.c | 1185 +++++++++++++++++
>  .../display/dc/link/protocols/link_hdmi_frl.h |   53 +
>  .../amd/display/dc/link/protocols/link_hpd.c  |    1 +
>  .../drm/amd/display/dc/opp/dcn10/dcn10_opp.c  |    1 +
>  .../amd/display/dc/optc/dcn10/dcn10_optc.h    |    5 +-
>  .../amd/display/dc/optc/dcn30/dcn30_optc.c    |    8 +-
>  .../amd/display/dc/optc/dcn30/dcn30_optc.h    |    8 +-
>  .../amd/display/dc/optc/dcn31/dcn31_optc.c    |    2 +
>  .../amd/display/dc/optc/dcn401/dcn401_optc.c  |    2 +
>  .../dc/resource/dce112/dce112_resource.c      |    3 +
>  .../dc/resource/dcn30/dcn30_resource.c        |  126 ++
>  .../dc/resource/dcn301/dcn301_resource.c      |    1 +
>  .../dc/resource/dcn302/dcn302_resource.c      |  109 ++
>  .../dc/resource/dcn303/dcn303_resource.c      |  109 ++
>  .../dc/resource/dcn31/dcn31_resource.c        |  127 ++
>  .../dc/resource/dcn314/dcn314_resource.c      |  127 ++
>  .../dc/resource/dcn315/dcn315_resource.c      |  128 ++
>  .../dc/resource/dcn316/dcn316_resource.c      |  126 ++
>  .../dc/resource/dcn32/dcn32_resource.c        |  131 ++
>  .../dc/resource/dcn32/dcn32_resource.h        |   79 +-
>  .../dc/resource/dcn321/dcn321_resource.c      |  132 ++
>  .../dc/resource/dcn35/dcn35_resource.c        |  121 ++
>  .../dc/resource/dcn351/dcn351_resource.c      |  121 ++
>  .../dc/resource/dcn36/dcn36_resource.c        |  121 ++
>  .../dc/resource/dcn401/dcn401_resource.c      |  121 ++
>  .../dc/resource/dcn42/dcn42_resource.c        |  121 ++
>  .../gpu/drm/amd/display/dmub/inc/dmub_cmd.h   |    5 +-
>  .../gpu/drm/amd/display/include/audio_types.h |    1 +
>  .../amd/display/include/bios_parser_types.h   |   14 +-
>  .../drm/amd/display/include/logger_types.h    |    2 +
>  .../drm/amd/display/include/signal_types.h    |   12 +-
>  .../gpu/drm/amd/display/modules/hdcp/hdcp.c   |    2 +
>  .../gpu/drm/amd/display/modules/hdcp/hdcp.h   |    6 +
>  .../drm/amd/display/modules/hdcp/hdcp_psp.c   |    2 +
>  .../drm/amd/display/modules/hdcp/hdcp_psp.h   |    2 +
>  .../amd/display/modules/inc/mod_freesync.h    |    3 +
>  .../drm/amd/display/modules/inc/mod_hdcp.h    |    1 +
>  .../amd/display/modules/inc/mod_info_packet.h |    2 +-
>  .../display/modules/info_packet/info_packet.c |  122 +-
>  179 files changed, 15127 insertions(+), 113 deletions(-)  create mode 100644
> drivers/gpu/drm/amd/display/dc/dml/dml1_frl_cap_chk.c
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/dml/dml1_frl_cap_chk.h
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_standalone_librari
> es/lib_frl_cap_check.c
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_standalone_librari
> es/lib_frl_cap_check.h
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/dml2_0/dml_frl_cap_chk.c
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/dml2_0/dml_frl_cap_chk.h
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/hpo/dcn30/dcn30_hpo_frl_link_encoder.c
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/hpo/dcn30/dcn30_hpo_frl_link_encoder.h
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/hpo/dcn30/dcn30_hpo_frl_stream_encoder
> .c
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/hpo/dcn30/dcn30_hpo_frl_stream_encoder
> .h
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/hpo/dcn401/dcn401_hpo_frl_stream_enco
> der.c
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/hpo/dcn401/dcn401_hpo_frl_stream_enco
> der.h
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/hpo/dcn42/dcn42_hpo_frl_stream_encoder
> .c
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/hpo/dcn42/dcn42_hpo_frl_stream_encoder
> .h
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/link/hwss/link_hwss_hpo_frl.c
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/link/hwss/link_hwss_hpo_frl.h
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/link/protocols/link_hdmi_frl.c
>  create mode 100644
> drivers/gpu/drm/amd/display/dc/link/protocols/link_hdmi_frl.h
>
> --
> 2.54.0

Reply via email to