drm/amd/display: Poll pending DOWN_REP before enabling the link
authorMartin Tsai <martin.tsai@amd.com>
Mon, 11 Feb 2019 07:26:21 +0000 (15:26 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 19 Mar 2019 20:04:02 +0000 (15:04 -0500)
[Why]
With special monitor combination on MST, the UP_REQ could come
after clear payload table. It makes the pending DOWN_REP fail
to be handled after link training and the new DOWN_REQ will be queued
until time out .

[How]
To move the current polling pending DOWN_REP procedure to after
clear payload table to make sure the pending DOWN_REP can be
done before enabling the link.

Signed-off-by: Martin Tsai <martin.tsai@amd.com>
Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
drivers/gpu/drm/amd/display/dc/core/dc_link.c
drivers/gpu/drm/amd/display/dc/dm_helpers.h

index b39766bd28406707a7e374337ae1a483f94729f5..e6cd67342df814e315a23bca5e3e5a329031eff5 100644 (file)
@@ -264,7 +264,7 @@ bool dm_helpers_dp_mst_write_payload_allocation_table(
 }
 
 /*
- * poll pending down reply before clear payload allocation table
+ * poll pending down reply
  */
 void dm_helpers_dp_mst_poll_pending_down_reply(
        struct dc_context *ctx,
index 4eba3c4800b63bef00ec9fd532919aa84ca72126..4f4fa3791b5db8b675b6b21029f6330228511f54 100644 (file)
@@ -1466,14 +1466,14 @@ static enum dc_status enable_link_dp_mst(
        if (link->cur_link_settings.lane_count != LANE_COUNT_UNKNOWN)
                return DC_OK;
 
+       /* clear payload table */
+       dm_helpers_dp_mst_clear_payload_allocation_table(link->ctx, link);
+
        /* to make sure the pending down rep can be processed
-        * before clear payload table
+        * before enabling the link
         */
        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);
-
        /* set the sink to MST mode before enabling the link */
        dp_enable_mst_on_sink(link, true);
 
index e81b24374bcb0bae6aaa5bbbf345611d60d8369a..ccbfe9680d275a5ddea6de567526d71928d701bd 100644 (file)
@@ -58,7 +58,7 @@ bool dm_helpers_dp_mst_write_payload_allocation_table(
                bool enable);
 
 /*
- * poll pending down reply before clear payload allocation table
+ * poll pending down reply
  */
 void dm_helpers_dp_mst_poll_pending_down_reply(
        struct dc_context *ctx,