diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0719-drm-amd-dal-update-core-link-mst-stream-allocation-t.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0719-drm-amd-dal-update-core-link-mst-stream-allocation-t.patch | 499 |
1 files changed, 0 insertions, 499 deletions
diff --git a/common/recipes-kernel/linux/files/0719-drm-amd-dal-update-core-link-mst-stream-allocation-t.patch b/common/recipes-kernel/linux/files/0719-drm-amd-dal-update-core-link-mst-stream-allocation-t.patch deleted file mode 100644 index 841aadb1..00000000 --- a/common/recipes-kernel/linux/files/0719-drm-amd-dal-update-core-link-mst-stream-allocation-t.patch +++ /dev/null @@ -1,499 +0,0 @@ -From c02f297bf62cbfe4cda8955332780e5ebb0c3e90 Mon Sep 17 00:00:00 2001 -From: Hersen Wu <hersenxs.wu@amd.com> -Date: Mon, 11 Jan 2016 16:53:07 -0500 -Subject: [PATCH 0719/1110] drm/amd/dal: update core link mst stream allocation - table with stream encoder - -Signed-off-by: Hersen Wu <hersenxs.wu@amd.com> -Acked-by: Harry Wentland <harry.wentland@amd.com> ---- - .../gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c | 43 +------- - drivers/gpu/drm/amd/dal/dc/core/dc_link.c | 122 +++++++++++++-------- - drivers/gpu/drm/amd/dal/dc/core/dc_link_hwss.c | 2 +- - drivers/gpu/drm/amd/dal/dc/dc_helpers.h | 1 - - .../drm/amd/dal/dc/dce110/dce110_hw_sequencer.c | 5 +- - .../drm/amd/dal/dc/dce110/dce110_link_encoder.c | 12 +- - .../drm/amd/dal/dc/dce110/dce110_link_encoder.h | 2 +- - drivers/gpu/drm/amd/dal/dc/inc/core_types.h | 26 ++++- - drivers/gpu/drm/amd/dal/dc/inc/link_encoder.h | 2 +- - .../drm/amd/dal/dc/virtual/virtual_link_encoder.c | 2 +- - .../gpu/drm/amd/dal/include/link_service_types.h | 8 +- - 11 files changed, 113 insertions(+), 112 deletions(-) - -diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c -index 855f9f9..ab426e3 100644 ---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c -+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c -@@ -160,27 +160,8 @@ static struct amdgpu_connector *get_connector_for_link( - return aconnector; - } - --const struct dp_mst_stream_allocation *find_stream_with_matching_vcpi( -- const struct dp_mst_stream_allocation_table *table, -- uint32_t vcpi) --{ -- int i; -- -- for (i = 0; i < table->stream_count; i++) { -- const struct dp_mst_stream_allocation *sa = -- &table->stream_allocations[i]; -- if (sa->vcp_id == vcpi) -- return sa; -- } -- return NULL; --} -- -- - static void get_payload_table( -- struct drm_device *dev, - struct amdgpu_connector *aconnector, -- const struct dc_stream *stream, -- const struct dp_mst_stream_allocation_table *cur_table, - struct dp_mst_stream_allocation_table *proposed_table) - { - int i; -@@ -203,26 +184,13 @@ static void get_payload_table( - mst_mgr->payloads[i].payload_state == - DP_PAYLOAD_REMOTE) { - -- const struct dp_mst_stream_allocation *sa_src -- = find_stream_with_matching_vcpi( -- cur_table, -- mst_mgr->proposed_vcpis[i]->vcpi); -- -- if (sa_src) { -- proposed_table->stream_allocations[ -- proposed_table->stream_count] = *sa_src; -- proposed_table->stream_count++; -- } else { -- struct dp_mst_stream_allocation *sa = -+ struct dp_mst_stream_allocation *sa = - &proposed_table->stream_allocations[ - proposed_table->stream_count]; - -- sa->slot_count = -- mst_mgr->payloads[i].num_slots; -- sa->stream = stream; -- sa->vcp_id = mst_mgr->proposed_vcpis[i]->vcpi; -- proposed_table->stream_count++; -- } -+ sa->slot_count = mst_mgr->payloads[i].num_slots; -+ sa->vcp_id = mst_mgr->proposed_vcpis[i]->vcpi; -+ proposed_table->stream_count++; - } - } - -@@ -235,7 +203,6 @@ static void get_payload_table( - bool dc_helpers_dp_mst_write_payload_allocation_table( - struct dc_context *ctx, - const struct dc_stream *stream, -- const struct dp_mst_stream_allocation_table *cur_table, - struct dp_mst_stream_allocation_table *proposed_table, - bool enable) - { -@@ -312,7 +279,7 @@ bool dc_helpers_dp_mst_write_payload_allocation_table( - * stream. AMD ASIC stream slot allocation should follow the same - * sequence. copy DRM MST allocation to dc */ - -- get_payload_table(dev, aconnector, stream, cur_table, proposed_table); -+ get_payload_table(aconnector, proposed_table); - - if (ret) - return false; -diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c -index 912f3fe..caba06e 100644 ---- a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c -+++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c -@@ -1390,6 +1390,58 @@ static struct fixed31_32 get_pbn_from_timing(struct core_stream *stream) - return peak_kbps; - } - -+static void update_mst_stream_alloc_table( -+ struct core_link *link, -+ struct core_stream *stream, -+ const struct dp_mst_stream_allocation_table *proposed_table) -+{ -+ struct link_mst_stream_allocation work_table[MAX_CONTROLLER_NUM] = { -+ { 0 } }; -+ struct link_mst_stream_allocation *dc_alloc; -+ -+ int i; -+ int j; -+ -+ /* if DRM proposed_table has more than one new payload */ -+ ASSERT(proposed_table->stream_count - -+ link->mst_stream_alloc_table.stream_count < 2); -+ -+ /* copy proposed_table to core_link, add stream encoder */ -+ for (i = 0; i < proposed_table->stream_count; i++) { -+ -+ for (j = 0; j < link->mst_stream_alloc_table.stream_count; j++) { -+ dc_alloc = -+ &link->mst_stream_alloc_table.stream_allocations[j]; -+ -+ if (dc_alloc->vcp_id == -+ proposed_table->stream_allocations[i].vcp_id) { -+ -+ work_table[i] = *dc_alloc; -+ break; /* exit j loop */ -+ } -+ } -+ -+ /* new vcp_id */ -+ if (j == link->mst_stream_alloc_table.stream_count) { -+ work_table[i].vcp_id = -+ proposed_table->stream_allocations[i].vcp_id; -+ work_table[i].slot_count = -+ proposed_table->stream_allocations[i].slot_count; -+ work_table[i].stream_enc = stream->stream_enc; -+ } -+ } -+ -+ /* update link->mst_stream_alloc_table with work_table */ -+ link->mst_stream_alloc_table.stream_count = -+ proposed_table->stream_count; -+ for (i = 0; i < MAX_CONTROLLER_NUM; i++) -+ link->mst_stream_alloc_table.stream_allocations[i] = -+ work_table[i]; -+} -+ -+/* convert link_mst_stream_alloc_table to dm dp_mst_stream_alloc_table -+ * because stream_encoder is not exposed to dm -+ */ - static enum dc_status allocate_mst_payload(struct core_stream *stream) - { - struct core_link *link = stream->sink->link; -@@ -1411,31 +1463,32 @@ static enum dc_status allocate_mst_payload(struct core_stream *stream) - dc_helpers_dp_mst_write_payload_allocation_table( - stream->ctx, - &stream->public, -- &link->stream_alloc_table, - &proposed_table, - true); - -+ update_mst_stream_alloc_table(link, stream, &proposed_table); -+ - dal_logger_write(link->ctx->logger, - LOG_MAJOR_MST, - LOG_MINOR_MST_PROGRAMMING, - "%s " - "stream_count: %d: \n ", - __func__, -- proposed_table.stream_count); -+ link->mst_stream_alloc_table.stream_count); - - for (i = 0; i < MAX_CONTROLLER_NUM; i++) { - dal_logger_write(link->ctx->logger, - LOG_MAJOR_MST, - LOG_MINOR_MST_PROGRAMMING, -- "stream[%d]: 0x%x " -+ "stream_enc[%d]: 0x%x " - "stream[%d].vcp_id: %d " - "stream[%d].slot_count: %d\n", - i, -- proposed_table.stream_allocations[i].stream, -+ link->mst_stream_alloc_table.stream_allocations[i].stream_enc, - i, -- proposed_table.stream_allocations[i].vcp_id, -+ link->mst_stream_alloc_table.stream_allocations[i].vcp_id, - i, -- proposed_table.stream_allocations[i].slot_count); -+ link->mst_stream_alloc_table.stream_allocations[i].slot_count); - } - - ASSERT(proposed_table.stream_count > 0); -@@ -1453,9 +1506,7 @@ static enum dc_status allocate_mst_payload(struct core_stream *stream) - /* program DP source TX for payload */ - link_encoder->funcs->update_mst_stream_allocation_table( - link_encoder, -- &proposed_table); -- -- link->stream_alloc_table = proposed_table; -+ &link->mst_stream_alloc_table); - - /* send down message */ - dc_helpers_dp_mst_poll_for_allocation_change_trigger( -@@ -1509,9 +1560,15 @@ static enum dc_status deallocate_mst_payload(struct core_stream *stream) - dc_helpers_dp_mst_write_payload_allocation_table( - stream->ctx, - &stream->public, -- &link->stream_alloc_table, - &proposed_table, - false); -+ dc_helpers_dp_mst_write_payload_allocation_table( -+ stream->ctx, -+ &stream->public, -+ &proposed_table, -+ false); -+ -+ update_mst_stream_alloc_table(link, stream, &proposed_table); - - dal_logger_write(link->ctx->logger, - LOG_MAJOR_MST, -@@ -1519,28 +1576,26 @@ static enum dc_status deallocate_mst_payload(struct core_stream *stream) - "%s" - "stream_count: %d: ", - __func__, -- proposed_table.stream_count); -+ link->mst_stream_alloc_table.stream_count); - - for (i = 0; i < MAX_CONTROLLER_NUM; i++) { - dal_logger_write(link->ctx->logger, - LOG_MAJOR_MST, - LOG_MINOR_MST_PROGRAMMING, -- "stream[%d]: 0x%x" -- "stream[%d].vcp_id: %d" -- "stream[%d].slot_count: %d", -+ "stream_enc[%d]: 0x%x " -+ "stream[%d].vcp_id: %d " -+ "stream[%d].slot_count: %d\n", - i, -- proposed_table.stream_allocations[i].stream, -+ link->mst_stream_alloc_table.stream_allocations[i].stream_enc, - i, -- proposed_table.stream_allocations[i].vcp_id, -+ link->mst_stream_alloc_table.stream_allocations[i].vcp_id, - i, -- proposed_table.stream_allocations[i].slot_count); -+ link->mst_stream_alloc_table.stream_allocations[i].slot_count); - } - - link_encoder->funcs->update_mst_stream_allocation_table( - link_encoder, -- &proposed_table); -- -- link->stream_alloc_table = proposed_table; -+ &link->mst_stream_alloc_table); - - if (mst_mode) { - dc_helpers_dp_mst_poll_for_allocation_change_trigger( -@@ -1589,31 +1644,4 @@ void core_link_disable_stream( - - } - --void core_link_update_stream( -- struct core_link *link, -- struct core_stream *stream) --{ -- if (stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST) { -- uint32_t i; - -- for (i = 0; i < link->stream_alloc_table.stream_count; i++) { -- const struct core_stream *s; -- -- s = DC_STREAM_TO_CORE( -- link->stream_alloc_table. -- stream_allocations[i].stream); -- -- if (stream->stream_enc == s->stream_enc) { -- link->stream_alloc_table.stream_allocations[i].stream = -- &stream->public; -- -- dal_logger_write(link->ctx->logger, -- LOG_MAJOR_MST, -- LOG_MINOR_MST_PROGRAMMING, -- "%s ", -- __func__); -- break; -- } -- } -- } --} -diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link_hwss.c b/drivers/gpu/drm/amd/dal/dc/core/dc_link_hwss.c -index 8f1b869..2ed9eb8 100644 ---- a/drivers/gpu/drm/amd/dal/dc/core/dc_link_hwss.c -+++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link_hwss.c -@@ -96,7 +96,7 @@ void dp_disable_link_phy(struct core_link *link, enum signal_type signal) - void dp_disable_link_phy_mst(struct core_link *link, struct core_stream *stream) - { - /* MST disable link only when no stream use the link */ -- if (link->stream_alloc_table.stream_count > 0) -+ if (link->mst_stream_alloc_table.stream_count > 0) - return; - - dp_disable_link_phy(link, stream->signal); -diff --git a/drivers/gpu/drm/amd/dal/dc/dc_helpers.h b/drivers/gpu/drm/amd/dal/dc/dc_helpers.h -index bd082d8..6bb1160 100644 ---- a/drivers/gpu/drm/amd/dal/dc/dc_helpers.h -+++ b/drivers/gpu/drm/amd/dal/dc/dc_helpers.h -@@ -46,7 +46,6 @@ enum dc_edid_status dc_helpers_parse_edid_caps( - bool dc_helpers_dp_mst_write_payload_allocation_table( - struct dc_context *ctx, - const struct dc_stream *stream, -- const struct dp_mst_stream_allocation_table *cur_table, - struct dp_mst_stream_allocation_table *proposed_table, - bool enable); - -diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c -index 44ad5a2..74d437e 100644 ---- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c -+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c -@@ -898,11 +898,8 @@ static enum dc_status apply_single_controller_ctx_to_hw(uint8_t controller_idx, - context->res_ctx.pool.timing_generators[controller_idx], - color_space); - -- if (timing_changed) { -+ if (timing_changed) - core_link_enable_stream(stream->sink->link, stream); -- } else { -- core_link_update_stream(stream->sink->link, stream); -- } - - if (dc_is_dp_signal(stream->signal)) - unblank_stream(stream, &stream->sink->link->cur_link_settings); -diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_link_encoder.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_link_encoder.c -index 780c3a6..4a83e25 100644 ---- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_link_encoder.c -+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_link_encoder.c -@@ -1592,16 +1592,14 @@ void dce110_link_encoder_dp_set_phy_pattern( - } - - static void fill_stream_allocation_row_info( -- const struct dp_mst_stream_allocation *stream_allocation, -+ const struct link_mst_stream_allocation *stream_allocation, - uint32_t *src, - uint32_t *slots) - { -- const struct dc_stream *dc_stream = stream_allocation->stream; -- struct core_stream *core_stream; -+ const struct stream_encoder *stream_enc = stream_allocation->stream_enc; - -- if (dc_stream) { -- core_stream = DC_STREAM_TO_CORE(dc_stream); -- *src = core_stream->stream_enc->id; -+ if (stream_enc) { -+ *src = stream_enc->id; - *slots = stream_allocation->slot_count; - } else { - *src = 0; -@@ -1612,7 +1610,7 @@ static void fill_stream_allocation_row_info( - /* programs DP MST VC payload allocation */ - void dce110_link_encoder_update_mst_stream_allocation_table( - struct link_encoder *enc, -- const struct dp_mst_stream_allocation_table *table) -+ const struct link_mst_stream_allocation_table *table) - { - struct dce110_link_encoder *enc110 = TO_DCE110_LINK_ENC(enc); - struct dc_context *ctx = enc110->base.ctx; -diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_link_encoder.h b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_link_encoder.h -index 31a33a8..46e2971 100644 ---- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_link_encoder.h -+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_link_encoder.h -@@ -133,7 +133,7 @@ void dce110_link_encoder_dp_set_phy_pattern( - /* programs DP MST VC payload allocation */ - void dce110_link_encoder_update_mst_stream_allocation_table( - struct link_encoder *enc, -- const struct dp_mst_stream_allocation_table *table); -+ const struct link_mst_stream_allocation_table *table); - - void dce110_link_encoder_set_lcd_backlight_level( - struct link_encoder *enc, -diff --git a/drivers/gpu/drm/amd/dal/dc/inc/core_types.h b/drivers/gpu/drm/amd/dal/dc/inc/core_types.h -index f31ee42..1597b33 100644 ---- a/drivers/gpu/drm/amd/dal/dc/inc/core_types.h -+++ b/drivers/gpu/drm/amd/dal/dc/inc/core_types.h -@@ -196,6 +196,25 @@ union dp_wa { - uint32_t raw; - }; - -+/* DP MST stream allocation (payload bandwidth number) */ -+struct link_mst_stream_allocation { -+ /* DIG front */ -+ const struct stream_encoder *stream_enc; -+ /* associate DRM payload table with DC stream encoder */ -+ uint8_t vcp_id; -+ /* number of slots required for the DP stream in transport packet */ -+ uint8_t slot_count; -+}; -+ -+/* DP MST stream allocation table */ -+struct link_mst_stream_allocation_table { -+ /* number of DP video streams */ -+ int stream_count; -+ /* array of stream allocations */ -+ struct link_mst_stream_allocation -+ stream_allocations[MAX_CONTROLLER_NUM]; -+}; -+ - struct core_link { - struct dc_link public; - const struct dc *dc; -@@ -221,11 +240,10 @@ struct core_link { - enum edp_revision edp_revision; - - /* MST record stream using this link */ -- struct dp_mst_stream_allocation_table stream_alloc_table; -- - struct link_flags { - bool dp_keep_receiver_powered; - } wa_flags; -+ struct link_mst_stream_allocation_table mst_stream_alloc_table; - }; - - #define DC_LINK_TO_LINK(dc_link) container_of(dc_link, struct core_link, public) -@@ -248,10 +266,6 @@ void core_link_disable_stream( - struct core_link *link, - struct core_stream *stream); - --void core_link_update_stream( -- struct core_link *link, -- struct core_stream *stream); -- - /********** DAL Core*********************/ - #include "display_clock_interface.h" - -diff --git a/drivers/gpu/drm/amd/dal/dc/inc/link_encoder.h b/drivers/gpu/drm/amd/dal/dc/inc/link_encoder.h -index f63c479..95defa8 100644 ---- a/drivers/gpu/drm/amd/dal/dc/inc/link_encoder.h -+++ b/drivers/gpu/drm/amd/dal/dc/inc/link_encoder.h -@@ -55,7 +55,7 @@ struct link_encoder_funcs { - const struct encoder_set_dp_phy_pattern_param *para); - void (*update_mst_stream_allocation_table)( - struct link_encoder *enc, -- const struct dp_mst_stream_allocation_table *table); -+ const struct link_mst_stream_allocation_table *table); - void (*set_lcd_backlight_level) (struct link_encoder *enc, - uint32_t level); - void (*backlight_control) (struct link_encoder *enc, -diff --git a/drivers/gpu/drm/amd/dal/dc/virtual/virtual_link_encoder.c b/drivers/gpu/drm/amd/dal/dc/virtual/virtual_link_encoder.c -index 5fa9af8..4d48daa 100644 ---- a/drivers/gpu/drm/amd/dal/dc/virtual/virtual_link_encoder.c -+++ b/drivers/gpu/drm/amd/dal/dc/virtual/virtual_link_encoder.c -@@ -69,7 +69,7 @@ static void virtual_link_encoder_dp_set_phy_pattern( - - static void virtual_link_encoder_update_mst_stream_allocation_table( - struct link_encoder *enc, -- const struct dp_mst_stream_allocation_table *table) {} -+ const struct link_mst_stream_allocation_table *table) {} - - static void virtual_link_encoder_set_lcd_backlight_level( - struct link_encoder *enc, -diff --git a/drivers/gpu/drm/amd/dal/include/link_service_types.h b/drivers/gpu/drm/amd/dal/include/link_service_types.h -index 573dd5c..30fc6f0 100644 ---- a/drivers/gpu/drm/amd/dal/include/link_service_types.h -+++ b/drivers/gpu/drm/amd/dal/include/link_service_types.h -@@ -391,18 +391,16 @@ struct mst_device_info { - - /* DP MST stream allocation (payload bandwidth number) */ - struct dp_mst_stream_allocation { -- /* stream engine id (DIG) */ -- const struct dc_stream *stream; -- uint32_t vcp_id; -+ uint8_t vcp_id; - /* number of slots required for the DP stream in - * transport packet */ -- uint32_t slot_count; -+ uint8_t slot_count; - }; - - /* DP MST stream allocation table */ - struct dp_mst_stream_allocation_table { - /* number of DP video streams */ -- uint8_t stream_count; -+ int stream_count; - /* array of stream allocations */ - struct dp_mst_stream_allocation stream_allocations[MAX_CONTROLLER_NUM]; - }; --- -2.7.4 - |