From: Hersen Wu <[email protected]>

expose dc function to be called by linux dm

Signed-off-by: Hersen Wu <[email protected]>
Reviewed-by: Sun peng Li <[email protected]>
Acked-by: Harry Wentland <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/core/dc.c | 65 ++++++++++++++++++++++++
 drivers/gpu/drm/amd/display/dc/dc_link.h | 17 +++++++
 2 files changed, 82 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c 
b/drivers/gpu/drm/amd/display/dc/core/dc.c
index ffd4a423d8ff..03b3bd649712 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -382,6 +382,71 @@ 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)
+{
+       link->preferred_link_setting = *link_setting;
+       dp_retrain_link_dp_test(link, link_setting, 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);
+}
+
 static void destruct(struct dc *dc)
 {
        dc_release_state(dc->current_state);
diff --git a/drivers/gpu/drm/amd/display/dc/dc_link.h 
b/drivers/gpu/drm/amd/display/dc/dc_link.h
index 8a716baa1203..83eea42452b5 100644
--- a/drivers/gpu/drm/amd/display/dc/dc_link.h
+++ b/drivers/gpu/drm/amd/display/dc/dc_link.h
@@ -214,6 +214,23 @@ void dc_link_enable_hpd_filter(struct dc_link *link, bool 
enable);
  * DPCD access interfaces
  */
 
+void dc_link_set_drive_settings(struct dc *dc,
+                               struct link_training_settings *lt_settings,
+                               const struct dc_link *link);
+void dc_link_perform_link_training(struct dc *dc,
+                                  struct dc_link_settings *link_setting,
+                                  bool skip_video_pattern);
+void dc_link_set_preferred_link_settings(struct dc *dc,
+                                        struct dc_link_settings *link_setting,
+                                        struct dc_link *link);
+void dc_link_enable_hpd(const struct dc_link *link);
+void dc_link_disable_hpd(const struct dc_link *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);
+
 bool dc_submit_i2c(
                struct dc *dc,
                uint32_t link_index,
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to