Move the helpers handling link configurations to intel_dp_link_caps.c.
Their functionality is part of the link capability logic and will be
updated to use the link capability state in follow-up changes.

Signed-off-by: Imre Deak <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_dp.c       | 101 -----------------
 drivers/gpu/drm/i915/display/intel_dp.h       |   2 -
 .../gpu/drm/i915/display/intel_dp_link_caps.c | 102 ++++++++++++++++++
 .../gpu/drm/i915/display/intel_dp_link_caps.h |   5 +
 4 files changed, 107 insertions(+), 103 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index c4ad386acc6db..c4b650431eff5 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -33,7 +33,6 @@
 #include <linux/notifier.h>
 #include <linux/seq_buf.h>
 #include <linux/slab.h>
-#include <linux/sort.h>
 #include <linux/string_helpers.h>
 #include <linux/timekeeping.h>
 #include <linux/types.h>
@@ -677,106 +676,6 @@ int intel_dp_rate_index(const int *rates, int len, int 
rate)
        return -1;
 }
 
-static int intel_dp_link_config_rate(struct intel_dp *intel_dp,
-                                    const struct intel_dp_link_config_entry 
*lc)
-{
-       return intel_dp_common_rate(intel_dp, lc->link_rate_idx);
-}
-
-static int intel_dp_link_config_lane_count(const struct 
intel_dp_link_config_entry *lc)
-{
-       return 1 << lc->lane_count_exp;
-}
-
-static int intel_dp_link_config_bw(struct intel_dp *intel_dp,
-                                  const struct intel_dp_link_config_entry *lc)
-{
-       return drm_dp_max_dprx_data_rate(intel_dp_link_config_rate(intel_dp, 
lc),
-                                        intel_dp_link_config_lane_count(lc));
-}
-
-static int link_config_cmp_by_bw(const void *a, const void *b, const void *p)
-{
-       struct intel_dp *intel_dp = (struct intel_dp *)p;       /* remove const 
*/
-       const struct intel_dp_link_config_entry *lc_a = a;
-       const struct intel_dp_link_config_entry *lc_b = b;
-       int bw_a = intel_dp_link_config_bw(intel_dp, lc_a);
-       int bw_b = intel_dp_link_config_bw(intel_dp, lc_b);
-
-       if (bw_a != bw_b)
-               return bw_a - bw_b;
-
-       return intel_dp_link_config_rate(intel_dp, lc_a) -
-              intel_dp_link_config_rate(intel_dp, lc_b);
-}
-
-static void intel_dp_link_config_init(struct intel_dp *intel_dp)
-{
-       struct intel_display *display = to_intel_display(intel_dp);
-       struct intel_dp_link_config_entry *lc;
-       int num_common_lane_configs;
-       int i;
-       int j;
-
-       if (drm_WARN_ON(display->drm, 
!is_power_of_2(intel_dp_max_common_lane_count(intel_dp))))
-               return;
-
-       num_common_lane_configs = 
ilog2(intel_dp_max_common_lane_count(intel_dp)) + 1;
-
-       if (drm_WARN_ON(display->drm, intel_dp->num_common_rates * 
num_common_lane_configs >
-                                   ARRAY_SIZE(intel_dp->link.configs)))
-               return;
-
-       intel_dp->link.num_configs = intel_dp->num_common_rates * 
num_common_lane_configs;
-
-       lc = &intel_dp->link.configs[0];
-       for (i = 0; i < intel_dp->num_common_rates; i++) {
-               for (j = 0; j < num_common_lane_configs; j++) {
-                       lc->lane_count_exp = j;
-                       lc->link_rate_idx = i;
-
-                       lc++;
-               }
-       }
-
-       sort_r(intel_dp->link.configs, intel_dp->link.num_configs,
-              sizeof(intel_dp->link.configs[0]),
-              link_config_cmp_by_bw, NULL,
-              intel_dp);
-}
-
-void intel_dp_link_config_get(struct intel_dp *intel_dp, int idx, int 
*link_rate, int *lane_count)
-{
-       struct intel_display *display = to_intel_display(intel_dp);
-       const struct intel_dp_link_config_entry *lc;
-
-       if (drm_WARN_ON(display->drm, idx < 0 || idx >= 
intel_dp->link.num_configs))
-               idx = 0;
-
-       lc = &intel_dp->link.configs[idx];
-
-       *link_rate = intel_dp_link_config_rate(intel_dp, lc);
-       *lane_count = intel_dp_link_config_lane_count(lc);
-}
-
-int intel_dp_link_config_index(struct intel_dp *intel_dp, int link_rate, int 
lane_count)
-{
-       int link_rate_idx = intel_dp_rate_index(intel_dp->common_rates, 
intel_dp->num_common_rates,
-                                               link_rate);
-       int lane_count_exp = ilog2(lane_count);
-       int i;
-
-       for (i = 0; i < intel_dp->link.num_configs; i++) {
-               const struct intel_dp_link_config_entry *lc = 
&intel_dp->link.configs[i];
-
-               if (lc->lane_count_exp == lane_count_exp &&
-                   lc->link_rate_idx == link_rate_idx)
-                       return i;
-       }
-
-       return -1;
-}
-
 /* Return %true if the common rates changed. */
 static bool intel_dp_set_common_rates(struct intel_dp *intel_dp)
 {
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h 
b/drivers/gpu/drm/i915/display/intel_dp.h
index 8cc6ea04e000c..fdf9bd88859e7 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -108,8 +108,6 @@ int intel_dp_config_required_rate(const struct 
intel_crtc_state *crtc_state);
 int intel_dp_rate_select(struct intel_dp *intel_dp, int rate);
 int intel_dp_max_common_lane_count(struct intel_dp *intel_dp);
 int intel_dp_rate_index(const int *rates, int len, int rate);
-int intel_dp_link_config_index(struct intel_dp *intel_dp, int link_rate, int 
lane_count);
-void intel_dp_link_config_get(struct intel_dp *intel_dp, int idx, int 
*link_rate, int *lane_count);
 void intel_dp_update_sink_caps(struct intel_dp *intel_dp);
 void intel_dp_reset_link_params(struct intel_dp *intel_dp);
 
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 8ecdc01af70eb..6a37ba8c35e27 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_caps.c
@@ -4,7 +4,9 @@
  */
 
 #include <linux/debugfs.h>
+#include <linux/log2.h>
 #include <linux/slab.h>
+#include <linux/sort.h>
 
 #include <drm/drm_print.h>
 
@@ -81,6 +83,106 @@ void intel_dp_link_caps_get_forced_params(struct 
intel_dp_link_caps *link_caps,
        forced_params->lane_count = forced_lane_count(link_caps->dp);
 }
 
+static int intel_dp_link_config_rate(struct intel_dp *intel_dp,
+                                    const struct intel_dp_link_config_entry 
*lc)
+{
+       return intel_dp_common_rate(intel_dp, lc->link_rate_idx);
+}
+
+static int intel_dp_link_config_lane_count(const struct 
intel_dp_link_config_entry *lc)
+{
+       return 1 << lc->lane_count_exp;
+}
+
+static int intel_dp_link_config_bw(struct intel_dp *intel_dp,
+                                  const struct intel_dp_link_config_entry *lc)
+{
+       return drm_dp_max_dprx_data_rate(intel_dp_link_config_rate(intel_dp, 
lc),
+                                        intel_dp_link_config_lane_count(lc));
+}
+
+static int link_config_cmp_by_bw(const void *a, const void *b, const void *p)
+{
+       struct intel_dp *intel_dp = (struct intel_dp *)p;       /* remove const 
*/
+       const struct intel_dp_link_config_entry *lc_a = a;
+       const struct intel_dp_link_config_entry *lc_b = b;
+       int bw_a = intel_dp_link_config_bw(intel_dp, lc_a);
+       int bw_b = intel_dp_link_config_bw(intel_dp, lc_b);
+
+       if (bw_a != bw_b)
+               return bw_a - bw_b;
+
+       return intel_dp_link_config_rate(intel_dp, lc_a) -
+              intel_dp_link_config_rate(intel_dp, lc_b);
+}
+
+void intel_dp_link_config_init(struct intel_dp *intel_dp)
+{
+       struct intel_display *display = to_intel_display(intel_dp);
+       struct intel_dp_link_config_entry *lc;
+       int num_common_lane_configs;
+       int i;
+       int j;
+
+       if (drm_WARN_ON(display->drm, 
!is_power_of_2(intel_dp_max_common_lane_count(intel_dp))))
+               return;
+
+       num_common_lane_configs = 
ilog2(intel_dp_max_common_lane_count(intel_dp)) + 1;
+
+       if (drm_WARN_ON(display->drm, intel_dp->num_common_rates * 
num_common_lane_configs >
+                                   ARRAY_SIZE(intel_dp->link.configs)))
+               return;
+
+       intel_dp->link.num_configs = intel_dp->num_common_rates * 
num_common_lane_configs;
+
+       lc = &intel_dp->link.configs[0];
+       for (i = 0; i < intel_dp->num_common_rates; i++) {
+               for (j = 0; j < num_common_lane_configs; j++) {
+                       lc->lane_count_exp = j;
+                       lc->link_rate_idx = i;
+
+                       lc++;
+               }
+       }
+
+       sort_r(intel_dp->link.configs, intel_dp->link.num_configs,
+              sizeof(intel_dp->link.configs[0]),
+              link_config_cmp_by_bw, NULL,
+              intel_dp);
+}
+
+void intel_dp_link_config_get(struct intel_dp *intel_dp, int idx, int 
*link_rate, int *lane_count)
+{
+       struct intel_display *display = to_intel_display(intel_dp);
+       const struct intel_dp_link_config_entry *lc;
+
+       if (drm_WARN_ON(display->drm, idx < 0 || idx >= 
intel_dp->link.num_configs))
+               idx = 0;
+
+       lc = &intel_dp->link.configs[idx];
+
+       *link_rate = intel_dp_link_config_rate(intel_dp, lc);
+       *lane_count = intel_dp_link_config_lane_count(lc);
+}
+
+int intel_dp_link_config_index(struct intel_dp *intel_dp, int link_rate, int 
lane_count)
+{
+       int link_rate_idx = intel_dp_rate_index(intel_dp->common_rates, 
intel_dp->num_common_rates,
+                                               link_rate);
+       int lane_count_exp = ilog2(lane_count);
+       int i;
+
+       for (i = 0; i < intel_dp->link.num_configs; i++) {
+               const struct intel_dp_link_config_entry *lc = 
&intel_dp->link.configs[i];
+
+               if (lc->lane_count_exp == lane_count_exp &&
+                   lc->link_rate_idx == link_rate_idx)
+                       return i;
+       }
+
+       return -1;
+}
+
 static int i915_dp_force_link_rate_show(struct seq_file *m, void *data)
 {
        struct intel_connector *connector = to_intel_connector(m->private);
diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_caps.h 
b/drivers/gpu/drm/i915/display/intel_dp_link_caps.h
index c6a84891db464..dab956e804b95 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_caps.h
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_caps.h
@@ -17,6 +17,11 @@ int intel_dp_max_common_rate(struct intel_dp *intel_dp);
 void intel_dp_link_caps_get_forced_params(struct intel_dp_link_caps *link_caps,
                                          struct intel_dp_link_config 
*forced_params);
 
+int intel_dp_link_config_index(struct intel_dp *intel_dp, int link_rate, int 
lane_count);
+void intel_dp_link_config_get(struct intel_dp *intel_dp, int idx, int 
*link_rate, int *lane_count);
+
+void intel_dp_link_config_init(struct intel_dp *intel_dp);
+
 void intel_dp_link_caps_debugfs_add(struct intel_connector *connector);
 
 struct intel_dp_link_caps *intel_dp_link_caps_init(struct intel_dp *intel_dp);
-- 
2.49.1

Reply via email to