drm/amd/display: Move link functions from dc to dc_link
authorChris Park <Chris.Park@amd.com>
Fri, 10 May 2019 17:34:30 +0000 (13:34 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 31 May 2019 15:39:31 +0000 (10:39 -0500)
[Why]
link-specific functions should reside in dc_link.c

[How]
Move them there.

Signed-off-by: Chris Park <Chris.Park@amd.com>
Reviewed-by: Charlene Liu <Charlene.Liu@amd.com>
Acked-by: Leo Li <sunpeng.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc.c
drivers/gpu/drm/amd/display/dc/core/dc_link.c

index 5012b6755dc898df9bcb4c3425bfea8030c4bf5a..49be32863044df3896b63ab48735361ab6e4bb9f 100644 (file)
@@ -490,128 +490,6 @@ void dc_stream_set_static_screen_events(struct dc *dc,
        dc->hwss.set_static_screen_control(pipes_affected, num_pipes_affected, events);
 }
 
-void dc_link_set_drive_settings(struct dc *dc,
-                               struct link_training_settings *lt_settings,
-                               const struct dc_link *link)
-{
-
-       int i;
-
-       for (i = 0; i < dc->link_count; i++) {
-               if (dc->links[i] == link)
-                       break;
-       }
-
-       if (i >= dc->link_count)
-               ASSERT_CRITICAL(false);
-
-       dc_link_dp_set_drive_settings(dc->links[i], lt_settings);
-}
-
-void dc_link_perform_link_training(struct dc *dc,
-                                  struct dc_link_settings *link_setting,
-                                  bool skip_video_pattern)
-{
-       int i;
-
-       for (i = 0; i < dc->link_count; i++)
-               dc_link_dp_perform_link_training(
-                       dc->links[i],
-                       link_setting,
-                       skip_video_pattern);
-}
-
-void dc_link_set_preferred_link_settings(struct dc *dc,
-                                        struct dc_link_settings *link_setting,
-                                        struct dc_link *link)
-{
-       int i;
-       struct pipe_ctx *pipe;
-       struct dc_stream_state *link_stream;
-       struct dc_link_settings store_settings = *link_setting;
-
-       link->preferred_link_setting = store_settings;
-
-       /* Retrain with preferred link settings only relevant for
-        * DP signal type
-        */
-       if (!dc_is_dp_signal(link->connector_signal))
-               return;
-
-       for (i = 0; i < MAX_PIPES; i++) {
-               pipe = &dc->current_state->res_ctx.pipe_ctx[i];
-               if (pipe->stream && pipe->stream->link) {
-                       if (pipe->stream->link == link)
-                               break;
-               }
-       }
-
-       /* Stream not found */
-       if (i == MAX_PIPES)
-               return;
-
-       link_stream = link->dc->current_state->res_ctx.pipe_ctx[i].stream;
-
-       /* Cannot retrain link if backend is off */
-       if (link_stream->dpms_off)
-               return;
-
-       if (link_stream)
-               decide_link_settings(link_stream, &store_settings);
-
-       if ((store_settings.lane_count != LANE_COUNT_UNKNOWN) &&
-               (store_settings.link_rate != LINK_RATE_UNKNOWN))
-               dp_retrain_link_dp_test(link, &store_settings, false);
-}
-
-void dc_link_enable_hpd(const struct dc_link *link)
-{
-       dc_link_dp_enable_hpd(link);
-}
-
-void dc_link_disable_hpd(const struct dc_link *link)
-{
-       dc_link_dp_disable_hpd(link);
-}
-
-
-void dc_link_set_test_pattern(struct dc_link *link,
-                             enum dp_test_pattern test_pattern,
-                             const struct link_training_settings *p_link_settings,
-                             const unsigned char *p_custom_pattern,
-                             unsigned int cust_pattern_size)
-{
-       if (link != NULL)
-               dc_link_dp_set_test_pattern(
-                       link,
-                       test_pattern,
-                       p_link_settings,
-                       p_custom_pattern,
-                       cust_pattern_size);
-}
-
-uint32_t dc_link_bandwidth_kbps(
-       const struct dc_link *link,
-       const struct dc_link_settings *link_setting)
-{
-       uint32_t link_bw_kbps = link_setting->link_rate * LINK_RATE_REF_FREQ_IN_KHZ; /* bytes per sec */
-
-       link_bw_kbps *= 8;   /* 8 bits per byte*/
-       link_bw_kbps *= link_setting->lane_count;
-
-       return link_bw_kbps;
-
-}
-
-const struct dc_link_settings *dc_link_get_link_cap(
-               const struct dc_link *link)
-{
-       if (link->preferred_link_setting.lane_count != LANE_COUNT_UNKNOWN &&
-                       link->preferred_link_setting.link_rate != LINK_RATE_UNKNOWN)
-               return &link->preferred_link_setting;
-       return &link->verified_link_cap;
-}
-
 static void destruct(struct dc *dc)
 {
        dc_release_state(dc->current_state);
index 90a1cdc26d23c0c564e9b8ca6bab018c09835454..c9e0b126777b914ac4f8d0c1c88b18b8136f341c 100644 (file)
@@ -2339,7 +2339,8 @@ void core_link_resume(struct dc_link *link)
 static struct fixed31_32 get_pbn_per_slot(struct dc_stream_state *stream)
 {
        struct fixed31_32 mbytes_per_sec;
-       uint32_t link_rate_in_mbytes_per_sec = dc_link_bandwidth_kbps(stream->link, &stream->link->cur_link_settings);
+       uint32_t link_rate_in_mbytes_per_sec = dc_link_bandwidth_kbps(stream->link,
+                       &stream->link->cur_link_settings);
        link_rate_in_mbytes_per_sec /= 8000; /* Kbits to MBytes */
 
        mbytes_per_sec = dc_fixpt_from_int(link_rate_in_mbytes_per_sec);
@@ -2858,3 +2859,127 @@ uint32_t dc_bandwidth_in_kbps_from_timing(
        return kbps;
 
 }
+
+void dc_link_set_drive_settings(struct dc *dc,
+                               struct link_training_settings *lt_settings,
+                               const struct dc_link *link)
+{
+
+       int i;
+
+       for (i = 0; i < dc->link_count; i++) {
+               if (dc->links[i] == link)
+                       break;
+       }
+
+       if (i >= dc->link_count)
+               ASSERT_CRITICAL(false);
+
+       dc_link_dp_set_drive_settings(dc->links[i], lt_settings);
+}
+
+void dc_link_perform_link_training(struct dc *dc,
+                                  struct dc_link_settings *link_setting,
+                                  bool skip_video_pattern)
+{
+       int i;
+
+       for (i = 0; i < dc->link_count; i++)
+               dc_link_dp_perform_link_training(
+                       dc->links[i],
+                       link_setting,
+                       skip_video_pattern);
+}
+
+void dc_link_set_preferred_link_settings(struct dc *dc,
+                                        struct dc_link_settings *link_setting,
+                                        struct dc_link *link)
+{
+       int i;
+       struct pipe_ctx *pipe;
+       struct dc_stream_state *link_stream;
+       struct dc_link_settings store_settings = *link_setting;
+
+       link->preferred_link_setting = store_settings;
+
+       /* Retrain with preferred link settings only relevant for
+        * DP signal type
+        */
+       if (!dc_is_dp_signal(link->connector_signal))
+               return;
+
+       for (i = 0; i < MAX_PIPES; i++) {
+               pipe = &dc->current_state->res_ctx.pipe_ctx[i];
+               if (pipe->stream && pipe->stream->link) {
+                       if (pipe->stream->link == link)
+                               break;
+               }
+       }
+
+       /* Stream not found */
+       if (i == MAX_PIPES)
+               return;
+
+       link_stream = link->dc->current_state->res_ctx.pipe_ctx[i].stream;
+
+       /* Cannot retrain link if backend is off */
+       if (link_stream->dpms_off)
+               return;
+
+       if (link_stream)
+               decide_link_settings(link_stream, &store_settings);
+
+       if ((store_settings.lane_count != LANE_COUNT_UNKNOWN) &&
+               (store_settings.link_rate != LINK_RATE_UNKNOWN))
+               dp_retrain_link_dp_test(link, &store_settings, false);
+}
+
+void dc_link_enable_hpd(const struct dc_link *link)
+{
+       dc_link_dp_enable_hpd(link);
+}
+
+void dc_link_disable_hpd(const struct dc_link *link)
+{
+       dc_link_dp_disable_hpd(link);
+}
+
+
+void dc_link_set_test_pattern(struct dc_link *link,
+                             enum dp_test_pattern test_pattern,
+                             const struct link_training_settings *p_link_settings,
+                             const unsigned char *p_custom_pattern,
+                             unsigned int cust_pattern_size)
+{
+       if (link != NULL)
+               dc_link_dp_set_test_pattern(
+                       link,
+                       test_pattern,
+                       p_link_settings,
+                       p_custom_pattern,
+                       cust_pattern_size);
+}
+
+uint32_t dc_link_bandwidth_kbps(
+       const struct dc_link *link,
+       const struct dc_link_settings *link_setting)
+{
+       uint32_t link_bw_kbps =
+               link_setting->link_rate * LINK_RATE_REF_FREQ_IN_KHZ; /* bytes per sec */
+
+       link_bw_kbps *= 8;   /* 8 bits per byte*/
+       link_bw_kbps *= link_setting->lane_count;
+
+       return link_bw_kbps;
+
+}
+
+const struct dc_link_settings *dc_link_get_link_cap(
+               const struct dc_link *link)
+{
+       if (link->preferred_link_setting.lane_count != LANE_COUNT_UNKNOWN &&
+                       link->preferred_link_setting.link_rate != LINK_RATE_UNKNOWN)
+               return &link->preferred_link_setting;
+       return &link->verified_link_cap;
+}
+