diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1162-drm-amd-display-Poll-pending-down-rep-before-clear-p.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/1162-drm-amd-display-Poll-pending-down-rep-before-clear-p.patch | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1162-drm-amd-display-Poll-pending-down-rep-before-clear-p.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1162-drm-amd-display-Poll-pending-down-rep-before-clear-p.patch new file mode 100644 index 00000000..c455d46f --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1162-drm-amd-display-Poll-pending-down-rep-before-clear-p.patch @@ -0,0 +1,81 @@ +From eedd5ec026c2564964ce3481cd9f0997d6f3030a Mon Sep 17 00:00:00 2001 +From: Martin Tsai <martin.tsai@amd.com> +Date: Thu, 10 Jan 2019 13:05:15 +0800 +Subject: [PATCH 1162/2940] drm/amd/display: Poll pending down rep before clear + payload allocation table + +[Why] +On current design, driver cannot handle the interrupt for +down reply when link training is processing. The DOWN REQ +send before link training will keep in the pending DOWN REP +state in the queue. +It makes the next DOWN REQ be queued until time out. + +[How] +To add a polling sequence before clear payload allocation table +to make sure the pending DOWN REP can be handled. + +Signed-off-by: Martin Tsai <martin.tsai@amd.com> +Reviewed-by: Charlene Liu <Charlene.Liu@amd.com> +Acked-by: Leo Li <sunpeng.li@amd.com> +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 7 +++++++ + drivers/gpu/drm/amd/display/dc/core/dc_link.c | 5 +++++ + drivers/gpu/drm/amd/display/dc/dm_helpers.h | 7 +++++++ + 3 files changed, 19 insertions(+) + +diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c +index e6ab0186955c..cae16b6d2344 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c +@@ -263,6 +263,13 @@ bool dm_helpers_dp_mst_write_payload_allocation_table( + return true; + } + ++/* ++ * poll pending down reply before clear payload allocation table ++ */ ++void dm_helpers_dp_mst_poll_pending_down_reply( ++ struct dc_context *ctx, ++ const struct dc_link *link) ++{} + + /* + * Clear payload allocation table before enable MST DP link. +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c +index 4bd49aafb5bd..d25174d87f07 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c +@@ -1467,6 +1467,11 @@ static enum dc_status enable_link_dp_mst( + if (link->cur_link_settings.lane_count != LANE_COUNT_UNKNOWN) + return DC_OK; + ++ /* to make sure the pending down rep can be processed ++ * before clear payload table ++ */ ++ dm_helpers_dp_mst_poll_pending_down_reply(link->ctx, link); ++ + /* clear payload table */ + dm_helpers_dp_mst_clear_payload_allocation_table(link->ctx, link); + +diff --git a/drivers/gpu/drm/amd/display/dc/dm_helpers.h b/drivers/gpu/drm/amd/display/dc/dm_helpers.h +index 5d4527d03045..e81b24374bcb 100644 +--- a/drivers/gpu/drm/amd/display/dc/dm_helpers.h ++++ b/drivers/gpu/drm/amd/display/dc/dm_helpers.h +@@ -57,6 +57,13 @@ bool dm_helpers_dp_mst_write_payload_allocation_table( + struct dp_mst_stream_allocation_table *proposed_table, + bool enable); + ++/* ++ * poll pending down reply before clear payload allocation table ++ */ ++void dm_helpers_dp_mst_poll_pending_down_reply( ++ struct dc_context *ctx, ++ const struct dc_link *link); ++ + /* + * Clear payload allocation table before enable MST DP link. + */ +-- +2.17.1 + |