This DC patchset brings improvements in multiple areas. In summary, we highlight:
- Expand amdgpu_dm KUnit coverage across connector init, sink stream creation, FreeSync caps, forced atomic commit, plane modifiers, cursor updates, panic flush, MST connector creation, AUX transfers, link bandwidth readback and MST DSC configuration. - Refactor RMCM into a separate module. - Decouple cursor offload hwss executors from pipe context. - Decouple HUBP_UPDATE_PLANE_ADDR from pipe_ctx. - Rename lock_and_validation_needed to needs_dc_state_realloc. - Drop the dead update_type param from update_planes_and_stream_adapter. - Attach only plane updates and stream updates that actually changed. - Unify fast update classification paths. - Request DMUB HW cursor offload. - Program DCC as part of address update. - Update LLS and UPSP programming paths. - Add lock-free memory pool. - Add instance field to struct mpc and struct dccg. - Cleanup DMUB command submission interfaces. - Add inbox0 HW lock helpers for DCN35. - Atomize IRQ register read/modify/write ops. - Add Replay cumulative residency query. - Add urgent assertion counter probe. - Add debug option to force optional UCLK support. - Force DSC to 8bpp for SST and MST DP tunneling over USB4. - Honor forced RGB pixel encoding. - Add option for certain panels to disable FEC. - Cap DML2.1 vmin ODM combine at 2:1 for eDP. - Add is_odm_enabled callback to skip init_odm on active ODM pipes. - Remove MALL capabilities from DCN42B. - Skip MALL calculations when there is no MALL. - Enable power gating on dcn42b. - Remove SDPIF_PORT_CONTROL programming for DCN31/35/42. - Enable back alt-ch. - Flush ISM work before releasing the stream. - Fix HDMI FRL audio enable. - Fix peak bandwidth measurement sequence. - Bound the DSC power gating loop by num_dsc. - Cast DP DTO pixel clock math to avoid overflow and narrowing. - Use unsigned types for FRL cap check params and HPO read_state. - Return success status from check_mode_supported. - Add SPDX license identifier to dcn30_dpp_cm.c. Cc: Daniel Wheeler <[email protected]> Alex Hung (25): drm/amd/display: Test sink stream creation drm/amd/display: Test connector init helper drm/amd/display: Test HDMI connector init drm/amd/display: Test FreeSync caps update drm/amd/display: Test connector init drm/amd/display: Test forced atomic commit drm/amd/display: Test DCC reject for multi-plane format drm/amd/display: Test modifier list growth failure drm/amd/display: Test pre-GFX9 plane buffer attributes drm/amd/display: Test accepted plane atomic check drm/amd/display: Test cursor update without DC stream drm/amd/display: Test panic flush DCC teardown drm/amd/display: Test optional plane property creation drm/amd/display: Build MST DSC helpers for KUnit drm/amd/display: Test oversized AUX transfer drm/amd/display: Test MST connector creation drm/amd/display: Test link bandwidth readback drm/amd/display: Test cascaded Panamera check drm/amd/display: Test DSC caps validation drm/amd/display: Test MST port mode support drm/amd/display: Test FRL bandwidth lookup drm/amd/display: Test DSC precompute helpers drm/amd/display: Test DSC recompute check drm/amd/display: Test DSC config computation drm/amd/display: Test per-link DSC configs Alvin Lee (5): drm/amd/display: Update LLS and UPSP programming paths drm/amd/display: Add debug option to force optional UCLK support drm/amd/display: Enable back alt-ch drm/amd/display: Program DCC as part of address update drm/amd/display: Return success status from check_mode_supported Chenyu Chen (1): drm/amd/display: Use unsigned types for FRL cap check params and HPO read_state Dillon Varone (1): drm/amd/display: Cleanup DMUB command submission interfaces Dominik Kaszewski (1): drm/amd/display: Add lock-free memory pool Fangzhi Zuo (2): drm/amd/display: Force DSC to 8bpp for MST DP tunneling over USB4 drm/amd/display: Force DSC to 8bpp for SST DP tunneling over USB4 Gabe Teeger (4): drm/amd/display: Enable power gating on dcn42b drm/amd/display: Bound DSC power gating loop by num_dsc drm/amd/display: Remove MALL capabilities from DCN42B drm/amd/display: Remove MALL capabilities from DCN42B bounding box Ilya Bakoulin (1): drm/amd/display: Fix HDMI FRL audio enable Ivan Lipski (1): drm/amd/display: Honor forced RGB pixel encoding James Lin (6): drm/amd/display: Rename lock_and_validation_needed to needs_dc_state_realloc drm/amd/display: Attach only plane updates that actually changed drm/amd/display: Request DMUB HW cursor offload drm/amd/display: Send stream_update to DC only when it changed drm/amd/display: Drop dead update_type param from update_planes_and_stream_adapter drm/amd/display: Cast DP DTO pixel clock math to avoid overflow and narrowing Leo Chen (1): drm/amd/display: Cap DML2.1 vmin ODM combine at 2:1 for eDP Leo Li (1): drm/amd/display: Atomize IRQ register read/modify/write ops Ovidiu Bunea (2): drm/amd/display: Remove SDPIF_PORT_CONTROL programming for DCN31/35/42 drm/amd/display: Add condition to skip MALL calculations if there is no MALL Rafal Ostrowski (2): drm/amd/display: Refactor RMCM into a separate module drm/amd/display: Unify fast update classification paths Ray Wu (1): drm/amd/display: Flush ISM work before releasing the stream Taimur Hassan (1): drm/amd/display: Promote DC to 3.2.398 Tom Chung (1): drm/amd/display: Add inbox0 HW lock helpers for DCN35 Tomasz Siemek (2): drm/amd/display: Decouple cursor offload hwss executors from pipe context drm/amd/display: Decouple HUBP_UPDATE_PLANE_ADDR from pipe_ctx Tony Cheng (3): drm/amd/display: Add instance field to struct mpc drm/amd/display: Add instance field to struct dccg drm/amd/display: Add SPDX license identifier to dcn30_dpp_cm.c Wang, Sung-huai (1): drm/amd/display: Add is_odm_enabled callback to skip init_odm on active ODM pipes Wei-Guang Li (1): drm/amd/display: Add Replay cumulative residency query Wenjing Liu (2): drm/amd/display: Add urgent assertion counter probe drm/amd/display: Fix peak bandwidth measurement sequence Yi-Ling Chen (1): drm/amd/display: Add option for certain panels to disable FEC drivers/gpu/drm/amd/display/Makefile | 1 + .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 113 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 27 +- .../display/amdgpu_dm/amdgpu_dm_connector.c | 19 +- .../display/amdgpu_dm/amdgpu_dm_connector.h | 1 + .../amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 9 +- .../amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 3 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c | 64 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_irq.h | 28 + .../drm/amd/display/amdgpu_dm/amdgpu_dm_ism.c | 21 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_ism.h | 2 +- .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 61 +- .../display/amdgpu_dm/amdgpu_dm_mst_types.h | 19 + .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 33 + .../tests/amdgpu_dm_connector_test.c | 1345 +++++++++++ .../amdgpu_dm/tests/amdgpu_dm_crtc_test.c | 16 +- .../amdgpu_dm/tests/amdgpu_dm_helpers_test.c | 8 +- .../amdgpu_dm/tests/amdgpu_dm_irq_test.c | 34 +- .../amdgpu_dm/tests/amdgpu_dm_ism_test.c | 83 +- .../tests/amdgpu_dm_mst_types_test.c | 2041 ++++++++++++++++- .../amdgpu_dm/tests/amdgpu_dm_plane_test.c | 357 ++- .../display/amdgpu_dm/tests/amdgpu_dm_test.c | 4 +- drivers/gpu/drm/amd/display/dc/Makefile | 3 +- drivers/gpu/drm/amd/display/dc/core/dc.c | 254 +- .../drm/amd/display/dc/core/dc_hw_sequencer.c | 246 +- .../gpu/drm/amd/display/dc/core/dc_resource.c | 147 +- .../gpu/drm/amd/display/dc/core/dc_state.c | 2 - .../gpu/drm/amd/display/dc/core/dc_stream.c | 124 +- drivers/gpu/drm/amd/display/dc/dc.h | 48 +- drivers/gpu/drm/amd/display/dc/dc_dmub_srv.c | 50 +- drivers/gpu/drm/amd/display/dc/dc_dmub_srv.h | 12 +- .../gpu/drm/amd/display/dc/dc_memory_pool.c | 277 +++ .../gpu/drm/amd/display/dc/dc_memory_pool.h | 107 + drivers/gpu/drm/amd/display/dc/dc_stream.h | 14 +- .../amd/display/dc/dccg/dcn20/dcn20_dccg.c | 1 + .../amd/display/dc/dccg/dcn201/dcn201_dccg.c | 1 + .../amd/display/dc/dccg/dcn21/dcn21_dccg.c | 1 + .../amd/display/dc/dccg/dcn30/dcn30_dccg.c | 2 + .../amd/display/dc/dccg/dcn301/dcn301_dccg.c | 1 + .../amd/display/dc/dccg/dcn31/dcn31_dccg.c | 1 + .../amd/display/dc/dccg/dcn314/dcn314_dccg.c | 1 + .../amd/display/dc/dccg/dcn32/dcn32_dccg.c | 1 + .../amd/display/dc/dccg/dcn35/dcn35_dccg.c | 1 + .../amd/display/dc/dccg/dcn401/dcn401_dccg.c | 1 + .../amd/display/dc/dccg/dcn42/dcn42_dccg.c | 1 + .../amd/display/dc/dccg/dcn60/dcn60_dccg.c | 1 + .../drm/amd/display/dc/dce/dce_clock_source.c | 6 +- .../gpu/drm/amd/display/dc/dce/dmub_replay.c | 25 + .../gpu/drm/amd/display/dc/dce/dmub_replay.h | 2 + .../dml21/inc/bounding_boxes/dcn42b_soc_bb.h | 2 +- .../src/dml2_core/dml2_core_dcn4_calcs.c | 4 + .../dml21/src/dml2_pmo/dml2_pmo_dcn4_fams2.c | 11 +- .../dml2_0/dml21/src/dml2_top/dml2_top_utm.c | 2 +- .../dml21_wrapper/dml21_translation_helper.c | 1 + .../amd/display/dc/dpp/dcn30/dcn30_dpp_cm.c | 2 + .../drm/amd/display/dc/dpp/dcn50/dcn50_dpp.c | 20 +- .../drm/amd/display/dc/dpp/dcn50/dcn50_dpp.h | 3 +- .../hpo/dcn30/dcn30_hpo_frl_stream_encoder.c | 6 +- .../hpo/dcn42/dcn42_hpo_frl_stream_encoder.c | 9 +- .../hpo/dcn60/dcn60_hpo_frl_stream_encoder.c | 9 +- .../display/dc/hubbub/dcn31/dcn31_hubbub.c | 5 - .../display/dc/hubbub/dcn35/dcn35_hubbub.c | 7 +- .../display/dc/hubbub/dcn42/dcn42_hubbub.c | 13 +- .../display/dc/hubbub/dcn60/dcn60_hubbub.c | 44 +- .../amd/display/dc/hubp/dcn10/dcn10_hubp.c | 4 +- .../amd/display/dc/hubp/dcn10/dcn10_hubp.h | 3 +- .../amd/display/dc/hubp/dcn20/dcn20_hubp.c | 5 +- .../amd/display/dc/hubp/dcn20/dcn20_hubp.h | 3 +- .../amd/display/dc/hubp/dcn21/dcn21_hubp.c | 5 +- .../amd/display/dc/hubp/dcn30/dcn30_hubp.c | 5 +- .../amd/display/dc/hubp/dcn30/dcn30_hubp.h | 3 +- .../amd/display/dc/hubp/dcn401/dcn401_hubp.c | 9 +- .../amd/display/dc/hubp/dcn401/dcn401_hubp.h | 3 +- .../amd/display/dc/hubp/dcn42/dcn42_hubp.c | 6 +- .../amd/display/dc/hubp/dcn50/dcn50_hubp.c | 28 +- .../amd/display/dc/hubp/dcn50/dcn50_hubp.h | 3 +- .../amd/display/dc/hwss/dcn10/dcn10_hwseq.c | 108 +- .../amd/display/dc/hwss/dcn10/dcn10_hwseq.h | 2 + .../amd/display/dc/hwss/dcn10/dcn10_init.c | 1 + .../amd/display/dc/hwss/dcn20/dcn20_hwseq.c | 40 +- .../amd/display/dc/hwss/dcn20/dcn20_hwseq.h | 2 + .../amd/display/dc/hwss/dcn20/dcn20_init.c | 1 + .../amd/display/dc/hwss/dcn201/dcn201_hwseq.c | 27 +- .../amd/display/dc/hwss/dcn201/dcn201_hwseq.h | 2 + .../amd/display/dc/hwss/dcn201/dcn201_init.c | 1 + .../amd/display/dc/hwss/dcn21/dcn21_init.c | 1 + .../amd/display/dc/hwss/dcn30/dcn30_init.c | 1 + .../amd/display/dc/hwss/dcn301/dcn301_init.c | 1 + .../amd/display/dc/hwss/dcn31/dcn31_init.c | 1 + .../amd/display/dc/hwss/dcn314/dcn314_init.c | 1 + .../amd/display/dc/hwss/dcn32/dcn32_hwseq.c | 43 +- .../amd/display/dc/hwss/dcn32/dcn32_init.c | 1 + .../amd/display/dc/hwss/dcn35/dcn35_hwseq.c | 117 +- .../amd/display/dc/hwss/dcn35/dcn35_hwseq.h | 14 +- .../amd/display/dc/hwss/dcn35/dcn35_init.c | 1 + .../amd/display/dc/hwss/dcn351/dcn351_init.c | 1 + .../amd/display/dc/hwss/dcn401/dcn401_hwseq.c | 39 +- .../amd/display/dc/hwss/dcn401/dcn401_hwseq.h | 5 +- .../amd/display/dc/hwss/dcn401/dcn401_init.c | 1 + .../amd/display/dc/hwss/dcn42/dcn42_hwseq.c | 283 ++- .../amd/display/dc/hwss/dcn42/dcn42_hwseq.h | 17 +- .../amd/display/dc/hwss/dcn42/dcn42_init.c | 6 +- .../amd/display/dc/hwss/dcn50/dcn50_hwseq.c | 10 +- .../amd/display/dc/hwss/dcn60/dcn60_hwseq.c | 194 +- .../amd/display/dc/hwss/dcn60/dcn60_hwseq.h | 5 +- .../amd/display/dc/hwss/dcn60/dcn60_init.c | 8 +- .../drm/amd/display/dc/hwss/hw_sequencer.h | 70 +- .../display/dc/hwss/hw_sequencer_private.h | 4 + .../gpu/drm/amd/display/dc/inc/core_types.h | 4 +- drivers/gpu/drm/amd/display/dc/inc/hw/dccg.h | 1 + drivers/gpu/drm/amd/display/dc/inc/hw/dpp.h | 3 +- drivers/gpu/drm/amd/display/dc/inc/hw/hubp.h | 4 +- drivers/gpu/drm/amd/display/dc/inc/hw/mpc.h | 65 +- drivers/gpu/drm/amd/display/dc/inc/hw/rmcm.h | 140 ++ .../amd/display/dc/inc/hw/timing_generator.h | 1 + .../gpu/drm/amd/display/dc/inc/link_service.h | 2 + drivers/gpu/drm/amd/display/dc/inc/resource.h | 18 +- .../drm/amd/display/dc/link/link_factory.c | 1 + .../link/protocols/link_edp_panel_control.c | 22 + .../link/protocols/link_edp_panel_control.h | 2 + .../drm/amd/display/dc/mpc/dcn10/dcn10_mpc.c | 1 + .../drm/amd/display/dc/mpc/dcn20/dcn20_mpc.c | 1 + .../drm/amd/display/dc/mpc/dcn30/dcn30_mpc.c | 1 + .../drm/amd/display/dc/mpc/dcn32/dcn32_mpc.c | 1 + .../amd/display/dc/mpc/dcn401/dcn401_mpc.c | 1 + .../drm/amd/display/dc/mpc/dcn42/dcn42_mpc.c | 680 +----- .../drm/amd/display/dc/mpc/dcn42/dcn42_mpc.h | 714 +----- .../drm/amd/display/dc/mpc/dcn60/dcn60_mpc.c | 41 +- .../drm/amd/display/dc/mpc/dcn60/dcn60_mpc.h | 238 -- .../amd/display/dc/optc/dcn31/dcn31_optc.c | 10 + .../amd/display/dc/optc/dcn31/dcn31_optc.h | 1 + .../amd/display/dc/optc/dcn314/dcn314_optc.c | 1 + .../amd/display/dc/optc/dcn35/dcn35_optc.c | 1 + .../amd/display/dc/optc/dcn42/dcn42_optc.c | 1 + drivers/gpu/drm/amd/display/dc/os_types.h | 1 + .../amd/display/dc/pg/dcn42/dcn42_pg_cntl.c | 4 + .../dc/resource/dcn42/dcn42_resource.c | 56 +- .../dc/resource/dcn42b/dcn42b_resource.c | 123 +- .../dc/resource/dcn60/dcn60_resource.c | 20 +- drivers/gpu/drm/amd/display/dc/rmcm/Makefile | 44 + .../amd/display/dc/rmcm/dcn42/dcn42_rmcm.c | 867 +++++++ .../amd/display/dc/rmcm/dcn42/dcn42_rmcm.h | 717 ++++++ .../amd/display/dc/rmcm/dcn60/dcn60_rmcm.c | 251 ++ .../amd/display/dc/rmcm/dcn60/dcn60_rmcm.h | 35 + drivers/gpu/drm/amd/display/dmub/dmub_srv.h | 2 +- .../gpu/drm/amd/display/dmub/src/dmub_srv.c | 7 +- .../drm/amd/display/modules/inc/mod_power.h | 3 + .../amd/display/modules/power/power_replay.c | 13 + 148 files changed, 8132 insertions(+), 2808 deletions(-) create mode 100644 drivers/gpu/drm/amd/display/dc/dc_memory_pool.c create mode 100644 drivers/gpu/drm/amd/display/dc/dc_memory_pool.h create mode 100644 drivers/gpu/drm/amd/display/dc/inc/hw/rmcm.h create mode 100644 drivers/gpu/drm/amd/display/dc/rmcm/Makefile create mode 100644 drivers/gpu/drm/amd/display/dc/rmcm/dcn42/dcn42_rmcm.c create mode 100644 drivers/gpu/drm/amd/display/dc/rmcm/dcn42/dcn42_rmcm.h create mode 100644 drivers/gpu/drm/amd/display/dc/rmcm/dcn60/dcn60_rmcm.c create mode 100644 drivers/gpu/drm/amd/display/dc/rmcm/dcn60/dcn60_rmcm.h -- 2.43.0
