diff options
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.patch | 124 |
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 + |