Move tracking of the forced link parameters from struct intel_dp to
struct intel_dp_link_caps.

Previous changes made all users access these parameters through the link
caps helpers, so the state can now be kept internal to the link caps
module.

Signed-off-by: Imre Deak <[email protected]>
---
 .../drm/i915/display/intel_display_types.h    |  2 --
 .../gpu/drm/i915/display/intel_dp_link_caps.c | 30 ++++++++++++++-----
 2 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
b/drivers/gpu/drm/i915/display/intel_display_types.h
index 10933ccdeb31e..c84ef29529373 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1865,8 +1865,6 @@ struct intel_dp {
                 */
                int mst_probed_lane_count;
                int mst_probed_rate;
-               int force_lane_count;
-               int force_rate;
                struct intel_dp_link_training *training;
                struct intel_dp_link_caps *caps;
        } link;
diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_caps.c 
b/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
index ea90e84500a89..8ecdc01af70eb 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
@@ -15,6 +15,12 @@
 
 struct intel_dp_link_caps {
        struct intel_dp *dp;
+
+       /*
+        * Forced parameters requested via debugfs. Remains set across sink
+        * disconnects.
+        */
+       struct intel_dp_link_config forced_params;
 };
 
 /* Get length of common rates array potentially limited by max_rate. */
@@ -44,20 +50,24 @@ int intel_dp_max_common_rate(struct intel_dp *intel_dp)
 
 static int forced_lane_count(struct intel_dp *intel_dp)
 {
-       if (!intel_dp->link.force_lane_count)
+       struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
+
+       if (!link_caps->forced_params.lane_count)
                return 0;
 
-       return clamp(intel_dp->link.force_lane_count, 1, 
intel_dp_max_common_lane_count(intel_dp));
+       return clamp(link_caps->forced_params.lane_count,
+                    1, intel_dp_max_common_lane_count(intel_dp));
 }
 
 static int forced_link_rate(struct intel_dp *intel_dp)
 {
+       struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
        int len;
 
-       if (!intel_dp->link.force_rate)
+       if (!link_caps->forced_params.rate)
                return 0;
 
-       len = intel_dp_common_len_rate_limit(intel_dp, 
intel_dp->link.force_rate);
+       len = intel_dp_common_len_rate_limit(intel_dp, 
link_caps->forced_params.rate);
        if (len == 0)
                return intel_dp_common_rate(intel_dp, 0);
 
@@ -76,6 +86,7 @@ static int i915_dp_force_link_rate_show(struct seq_file *m, 
void *data)
        struct intel_connector *connector = to_intel_connector(m->private);
        struct intel_display *display = to_intel_display(connector);
        struct intel_dp *intel_dp = intel_attached_dp(connector);
+       struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
        int current_rate = -1;
        int force_rate;
        int err;
@@ -90,7 +101,7 @@ static int i915_dp_force_link_rate_show(struct seq_file *m, 
void *data)
        if (intel_dp->link.active)
                current_rate = intel_dp->link_rate;
 
-       force_rate = intel_dp->link.force_rate;
+       force_rate = link_caps->forced_params.rate;
 
        drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
 
@@ -150,6 +161,7 @@ static ssize_t i915_dp_force_link_rate_write(struct file 
*file,
        struct intel_connector *connector = to_intel_connector(m->private);
        struct intel_display *display = to_intel_display(connector);
        struct intel_dp *intel_dp = intel_attached_dp(connector);
+       struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
        int rate;
        int err;
 
@@ -164,7 +176,7 @@ static ssize_t i915_dp_force_link_rate_write(struct file 
*file,
        intel_dp_flush_connector_commits(connector);
 
        intel_dp_reset_link_params(intel_dp);
-       intel_dp->link.force_rate = rate;
+       link_caps->forced_params.rate = rate;
 
        drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
 
@@ -179,6 +191,7 @@ static int i915_dp_force_lane_count_show(struct seq_file 
*m, void *data)
        struct intel_connector *connector = to_intel_connector(m->private);
        struct intel_display *display = to_intel_display(connector);
        struct intel_dp *intel_dp = intel_attached_dp(connector);
+       struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
        int current_lane_count = -1;
        int force_lane_count;
        int err;
@@ -192,7 +205,7 @@ static int i915_dp_force_lane_count_show(struct seq_file 
*m, void *data)
 
        if (intel_dp->link.active)
                current_lane_count = intel_dp->lane_count;
-       force_lane_count = intel_dp->link.force_lane_count;
+       force_lane_count = link_caps->forced_params.lane_count;
 
        drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
 
@@ -256,6 +269,7 @@ static ssize_t i915_dp_force_lane_count_write(struct file 
*file,
        struct intel_connector *connector = to_intel_connector(m->private);
        struct intel_display *display = to_intel_display(connector);
        struct intel_dp *intel_dp = intel_attached_dp(connector);
+       struct intel_dp_link_caps *link_caps = intel_dp->link.caps;
        int lane_count;
        int err;
 
@@ -270,7 +284,7 @@ static ssize_t i915_dp_force_lane_count_write(struct file 
*file,
        intel_dp_flush_connector_commits(connector);
 
        intel_dp_reset_link_params(intel_dp);
-       intel_dp->link.force_lane_count = lane_count;
+       link_caps->forced_params.lane_count = lane_count;
 
        drm_modeset_unlock(&display->drm->mode_config.connection_mutex);
 
-- 
2.49.1

Reply via email to