Add support for detecting DP tunnels on (Thunderbolt) display links and enabling the Bandwidth Allocation mode on the link. This helps in enabling the maximum resolution in any scenario on displays sharing the BW on such links. Kudos to all Cc'd for advices, co-development and testing. Cc: Mika Westerberg <notifications@xxxxxxxxxx> Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Cc: Saranya Gopal <saranya.gopal@xxxxxxxxx> Cc: Rajaram Regupathy <rajaram.regupathy@xxxxxxxxx> Cc: Gil Fine <gil.fine@xxxxxxxxx> Cc: Naama Shachar <naamax.shachar@xxxxxxxxx> Cc: Pengfei Xu <pengfei.xu@xxxxxxxxx> Imre Deak (19): drm/dp: Add drm_dp_max_dprx_data_rate() drm/dp: Add support for DP tunneling drm/i915/dp: Add support to notify MST connectors to retry modesets drm/i915/dp: Use drm_dp_max_dprx_data_rate() drm/i915/dp: Factor out intel_dp_config_required_rate() drm/i915/dp: Export intel_dp_max_common_rate/lane_count() drm/i915/dp: Factor out intel_dp_update_sink_caps() drm/i915/dp: Factor out intel_dp_read_dprx_caps() drm/i915/dp: Add intel_dp_max_link_data_rate() drm/i915/dp: Add way to get active pipes with syncing commits drm/i915/dp: Add support for DP tunnel BW allocation drm/i915/dp: Add DP tunnel atomic state and check BW limit drm/i915/dp: Account for tunnel BW limit in intel_dp_max_link_data_rate() drm/i915/dp: Compute DP tunel BW during encoder state computation drm/i915/dp: Allocate/free DP tunnel BW in the encoder enable/disable hooks drm/i915/dp: Handle DP tunnel IRQs drm/i915/dp: Call intel_dp_sync_state() always for DDI DP encoders drm/i915/dp: Suspend/resume DP tunnels drm/i915/dp: Enable DP tunnel BW allocation mode drivers/gpu/drm/display/Kconfig | 17 + drivers/gpu/drm/display/Makefile | 2 + drivers/gpu/drm/display/drm_dp_helper.c | 58 + drivers/gpu/drm/display/drm_dp_tunnel.c | 1715 +++++++++++++++++ drivers/gpu/drm/i915/Kconfig | 13 + drivers/gpu/drm/i915/Kconfig.debug | 1 + drivers/gpu/drm/i915/Makefile | 3 + drivers/gpu/drm/i915/display/g4x_dp.c | 28 + drivers/gpu/drm/i915/display/intel_atomic.c | 10 + drivers/gpu/drm/i915/display/intel_ddi.c | 9 +- drivers/gpu/drm/i915/display/intel_display.c | 26 +- .../gpu/drm/i915/display/intel_display_core.h | 1 + .../drm/i915/display/intel_display_driver.c | 20 +- .../drm/i915/display/intel_display_types.h | 9 + drivers/gpu/drm/i915/display/intel_dp.c | 309 ++- drivers/gpu/drm/i915/display/intel_dp.h | 21 +- .../drm/i915/display/intel_dp_link_training.c | 33 +- .../drm/i915/display/intel_dp_link_training.h | 1 + drivers/gpu/drm/i915/display/intel_dp_mst.c | 18 +- .../gpu/drm/i915/display/intel_dp_tunnel.c | 642 ++++++ .../gpu/drm/i915/display/intel_dp_tunnel.h | 131 ++ drivers/gpu/drm/i915/display/intel_link_bw.c | 5 + drivers/gpu/drm/i915/display/intel_tc.c | 4 +- include/drm/display/drm_dp.h | 61 + include/drm/display/drm_dp_helper.h | 2 + include/drm/display/drm_dp_tunnel.h | 270 +++ 26 files changed, 3292 insertions(+), 117 deletions(-) create mode 100644 drivers/gpu/drm/display/drm_dp_tunnel.c create mode 100644 drivers/gpu/drm/i915/display/intel_dp_tunnel.c create mode 100644 drivers/gpu/drm/i915/display/intel_dp_tunnel.h create mode 100644 include/drm/display/drm_dp_tunnel.h -- 2.39.2