Add the debugfs entry to force a link bpp to all relevant connectors: all DP connectors and on an FDI link CRT/SDVO/LVDS/HDMI connectors.
Signed-off-by: Imre Deak <[email protected]> --- drivers/gpu/drm/i915/display/intel_crt.c | 20 ++++++++++++++++++- .../drm/i915/display/intel_display_device.h | 1 + drivers/gpu/drm/i915/display/intel_dp.c | 3 +++ drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 ++ drivers/gpu/drm/i915/display/intel_hdmi.c | 8 +++++++- drivers/gpu/drm/i915/display/intel_lvds.c | 20 ++++++++++++++++++- drivers/gpu/drm/i915/display/intel_sdvo.c | 20 ++++++++++++++++++- 7 files changed, 70 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_crt.c b/drivers/gpu/drm/i915/display/intel_crt.c index cca22d2402e88..69831d6f68912 100644 --- a/drivers/gpu/drm/i915/display/intel_crt.c +++ b/drivers/gpu/drm/i915/display/intel_crt.c @@ -43,6 +43,7 @@ #include "intel_ddi.h" #include "intel_ddi_buf_trans.h" #include "intel_de.h" +#include "intel_display_device.h" #include "intel_display_driver.h" #include "intel_display_types.h" #include "intel_fdi.h" @@ -51,6 +52,7 @@ #include "intel_gmbus.h" #include "intel_hotplug.h" #include "intel_hotplug_irq.h" +#include "intel_link_bw.h" #include "intel_load_detect.h" #include "intel_pch_display.h" #include "intel_pch_refclk.h" @@ -986,13 +988,29 @@ void intel_crt_reset(struct drm_encoder *encoder) } +static int intel_crt_connector_register(struct drm_connector *_connector) +{ + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); + int err; + + err = intel_connector_register(&connector->base); + if (err) + return err; + + if (HAS_FDI(display)) + intel_link_bw_connector_debugfs_add(connector); + + return 0; +} + /* * Routines for controlling stuff on the analog port */ static const struct drm_connector_funcs intel_crt_connector_funcs = { .fill_modes = drm_helper_probe_single_connector_modes, - .late_register = intel_connector_register, + .late_register = intel_crt_connector_register, .early_unregister = intel_connector_unregister, .destroy = intel_connector_destroy, .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h index 368b0d3417c26..a84bdc83417f1 100644 --- a/drivers/gpu/drm/i915/display/intel_display_device.h +++ b/drivers/gpu/drm/i915/display/intel_display_device.h @@ -171,6 +171,7 @@ struct intel_display_platforms { #define HAS_GMBUS_BURST_READ(__display) (DISPLAY_VER(__display) >= 10 || (__display)->platform.kabylake) #define HAS_GMBUS_IRQ(__display) (DISPLAY_VER(__display) >= 4) #define HAS_GMCH(__display) (DISPLAY_INFO(__display)->has_gmch) +#define HAS_FDI(__display) (IS_DISPLAY_VER((__display), 5, 8) && !HAS_GMCH(__display)) #define HAS_HOTPLUG(__display) (DISPLAY_INFO(__display)->has_hotplug) #define HAS_HW_SAGV_WM(__display) (DISPLAY_VER(__display) >= 13 && !(__display)->platform.dgfx) #define HAS_IPC(__display) (DISPLAY_INFO(__display)->has_ipc) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 8ca33ebedce27..0b19a9b5adda5 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -80,6 +80,7 @@ #include "intel_hdmi.h" #include "intel_hotplug.h" #include "intel_hotplug_irq.h" +#include "intel_link_bw.h" #include "intel_lspcon.h" #include "intel_lvds.h" #include "intel_modeset_lock.h" @@ -5890,6 +5891,8 @@ intel_dp_connector_register(struct drm_connector *_connector) if (ret) return ret; + intel_link_bw_connector_debugfs_add(connector); + drm_dbg_kms(display->drm, "registering %s bus for %s\n", intel_dp->aux.name, connector->base.kdev->kobj.name); diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index 35214d9a8c781..7508aa4e3695f 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -1445,6 +1445,8 @@ mst_connector_late_register(struct drm_connector *_connector) if (ret < 0) drm_dp_mst_connector_early_unregister(&connector->base, connector->mst.port); + intel_link_bw_connector_debugfs_add(connector); + return ret; } diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c index 8f2cef36bdf79..0747ef8d6c0ca 100644 --- a/drivers/gpu/drm/i915/display/intel_hdmi.c +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c @@ -52,6 +52,7 @@ #include "intel_cx0_phy.h" #include "intel_ddi.h" #include "intel_de.h" +#include "intel_display_device.h" #include "intel_display_driver.h" #include "intel_display_types.h" #include "intel_dp.h" @@ -60,6 +61,7 @@ #include "intel_hdcp_regs.h" #include "intel_hdcp_shim.h" #include "intel_hdmi.h" +#include "intel_link_bw.h" #include "intel_lspcon.h" #include "intel_panel.h" #include "intel_pfit.h" @@ -2611,13 +2613,17 @@ static int intel_hdmi_connector_register(struct drm_connector *_connector) { struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); int ret; ret = intel_connector_register(&connector->base); if (ret) return ret; - return ret; + if (HAS_FDI(display)) + intel_link_bw_connector_debugfs_add(connector); + + return 0; } static void intel_hdmi_connector_unregister(struct drm_connector *_connector) diff --git a/drivers/gpu/drm/i915/display/intel_lvds.c b/drivers/gpu/drm/i915/display/intel_lvds.c index 89d26913e2539..3ac6aaa025434 100644 --- a/drivers/gpu/drm/i915/display/intel_lvds.c +++ b/drivers/gpu/drm/i915/display/intel_lvds.c @@ -45,10 +45,12 @@ #include "intel_backlight.h" #include "intel_connector.h" #include "intel_de.h" +#include "intel_display_device.h" #include "intel_display_types.h" #include "intel_dpll.h" #include "intel_fdi.h" #include "intel_gmbus.h" +#include "intel_link_bw.h" #include "intel_lvds.h" #include "intel_lvds_regs.h" #include "intel_panel.h" @@ -501,6 +503,22 @@ static int intel_lvds_get_modes(struct drm_connector *_connector) return intel_panel_get_modes(connector); } +static int intel_lvds_connector_register(struct drm_connector *_connector) +{ + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); + int err; + + err = intel_connector_register(&connector->base); + if (err) + return err; + + if (HAS_FDI(display)) + intel_link_bw_connector_debugfs_add(connector); + + return 0; +} + static const struct drm_connector_helper_funcs intel_lvds_connector_helper_funcs = { .get_modes = intel_lvds_get_modes, .mode_valid = intel_lvds_mode_valid, @@ -512,7 +530,7 @@ static const struct drm_connector_funcs intel_lvds_connector_funcs = { .fill_modes = drm_helper_probe_single_connector_modes, .atomic_get_property = intel_digital_connector_atomic_get_property, .atomic_set_property = intel_digital_connector_atomic_set_property, - .late_register = intel_connector_register, + .late_register = intel_lvds_connector_register, .early_unregister = intel_connector_unregister, .destroy = intel_connector_destroy, .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c index 757b9ce7e3b1c..ab7caaa4f287f 100644 --- a/drivers/gpu/drm/i915/display/intel_sdvo.c +++ b/drivers/gpu/drm/i915/display/intel_sdvo.c @@ -45,6 +45,7 @@ #include "intel_connector.h" #include "intel_crtc.h" #include "intel_de.h" +#include "intel_display_device.h" #include "intel_display_driver.h" #include "intel_display_types.h" #include "intel_fdi.h" @@ -52,6 +53,7 @@ #include "intel_gmbus.h" #include "intel_hdmi.h" #include "intel_hotplug.h" +#include "intel_link_bw.h" #include "intel_panel.h" #include "intel_sdvo.h" #include "intel_sdvo_regs.h" @@ -2502,12 +2504,28 @@ intel_sdvo_connector_duplicate_state(struct drm_connector *connector) return &state->base.base; } +static int intel_sdvo_connector_register(struct drm_connector *_connector) +{ + struct intel_connector *connector = to_intel_connector(_connector); + struct intel_display *display = to_intel_display(connector); + int err; + + err = intel_connector_register(&connector->base); + if (err) + return err; + + if (HAS_FDI(display)) + intel_link_bw_connector_debugfs_add(connector); + + return 0; +} + static const struct drm_connector_funcs intel_sdvo_connector_funcs = { .detect = intel_sdvo_detect, .fill_modes = drm_helper_probe_single_connector_modes, .atomic_get_property = intel_sdvo_connector_atomic_get_property, .atomic_set_property = intel_sdvo_connector_atomic_set_property, - .late_register = intel_connector_register, + .late_register = intel_sdvo_connector_register, .early_unregister = intel_connector_unregister, .destroy = intel_connector_destroy, .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, -- 2.44.2
