aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4896-drm-amd-display-Linux-Set-Read-link-rate-and-lane-co.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4896-drm-amd-display-Linux-Set-Read-link-rate-and-lane-co.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4896-drm-amd-display-Linux-Set-Read-link-rate-and-lane-co.patch124
1 files changed, 124 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4896-drm-amd-display-Linux-Set-Read-link-rate-and-lane-co.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4896-drm-amd-display-Linux-Set-Read-link-rate-and-lane-co.patch
new file mode 100644
index 00000000..553065d8
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4896-drm-amd-display-Linux-Set-Read-link-rate-and-lane-co.patch
@@ -0,0 +1,124 @@
+From f4eb6343eee75da91eca0cc8c6677b9282934a79 Mon Sep 17 00:00:00 2001
+From: Hersen Wu <hersenxs.wu@amd.com>
+Date: Fri, 15 Jun 2018 09:28:34 -0400
+Subject: [PATCH 4896/5725] drm/amd/display: Linux Set/Read link rate and lane
+ count through debugfs
+
+expose dc function to be called by linux dm
+
+Signed-off-by: Hersen Wu <hersenxs.wu@amd.com>
+Reviewed-by: Sun peng Li <Sunpeng.Li@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ 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 4e9bd55..b14741d 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 9404c6e..db92387 100644
+--- a/drivers/gpu/drm/amd/display/dc/dc_link.h
++++ b/drivers/gpu/drm/amd/display/dc/dc_link.h
+@@ -216,6 +216,23 @@ bool dc_link_detect_sink(struct dc_link *link, enum dc_connection_type *type);
+ * 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.7.4
+