drm/amd/display: add helper for enabling mst stream features
[Why] Some MST devices uses different method to enable mst specific stream features. [How] Add dm_helpers_mst_enable_stream features. This can be modified later when we are ready to implement those features. Signed-off-by: Bing Guo <bing.guo@amd.com> Reviewed-by: Anthony Koo <Anthony.Koo@amd.com> Acked-by: Aurabindo Pillai <aurabindo.pillai@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
fdf7d4f547
commit
6016cd9dba
3 changed files with 44 additions and 11 deletions
|
@ -711,3 +711,28 @@ bool dm_helpers_dmub_outbox0_interrupt_control(struct dc_context *ctx, bool enab
|
||||||
enable ? "en" : "dis", ret);
|
enable ? "en" : "dis", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dm_helpers_mst_enable_stream_features(const struct dc_stream_state *stream)
|
||||||
|
{
|
||||||
|
/* TODO: virtual DPCD */
|
||||||
|
struct dc_link *link = stream->link;
|
||||||
|
union down_spread_ctrl old_downspread;
|
||||||
|
union down_spread_ctrl new_downspread;
|
||||||
|
|
||||||
|
if (link->aux_access_disabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!dm_helpers_dp_read_dpcd(link->ctx, link, DP_DOWNSPREAD_CTRL,
|
||||||
|
&old_downspread.raw,
|
||||||
|
sizeof(old_downspread)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
new_downspread.raw = old_downspread.raw;
|
||||||
|
new_downspread.bits.IGNORE_MSA_TIMING_PARAM =
|
||||||
|
(stream->ignore_msa_timing_param) ? 1 : 0;
|
||||||
|
|
||||||
|
if (new_downspread.raw != old_downspread.raw)
|
||||||
|
dm_helpers_dp_write_dpcd(link->ctx, link, DP_DOWNSPREAD_CTRL,
|
||||||
|
&new_downspread.raw,
|
||||||
|
sizeof(new_downspread));
|
||||||
|
}
|
||||||
|
|
|
@ -1679,6 +1679,8 @@ void link_destroy(struct dc_link **link)
|
||||||
static void enable_stream_features(struct pipe_ctx *pipe_ctx)
|
static void enable_stream_features(struct pipe_ctx *pipe_ctx)
|
||||||
{
|
{
|
||||||
struct dc_stream_state *stream = pipe_ctx->stream;
|
struct dc_stream_state *stream = pipe_ctx->stream;
|
||||||
|
|
||||||
|
if (pipe_ctx->stream->signal != SIGNAL_TYPE_DISPLAY_PORT_MST) {
|
||||||
struct dc_link *link = stream->link;
|
struct dc_link *link = stream->link;
|
||||||
union down_spread_ctrl old_downspread;
|
union down_spread_ctrl old_downspread;
|
||||||
union down_spread_ctrl new_downspread;
|
union down_spread_ctrl new_downspread;
|
||||||
|
@ -1695,6 +1697,10 @@ static void enable_stream_features(struct pipe_ctx *pipe_ctx)
|
||||||
core_link_write_dpcd(link, DP_DOWNSPREAD_CTRL,
|
core_link_write_dpcd(link, DP_DOWNSPREAD_CTRL,
|
||||||
&new_downspread.raw, sizeof(new_downspread));
|
&new_downspread.raw, sizeof(new_downspread));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
dm_helpers_mst_enable_stream_features(stream);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum dc_status enable_link_dp(struct dc_state *state,
|
static enum dc_status enable_link_dp(struct dc_state *state,
|
||||||
|
|
|
@ -147,6 +147,8 @@ bool dm_helpers_dp_write_dsc_enable(
|
||||||
bool dm_helpers_is_dp_sink_present(
|
bool dm_helpers_is_dp_sink_present(
|
||||||
struct dc_link *link);
|
struct dc_link *link);
|
||||||
|
|
||||||
|
void dm_helpers_mst_enable_stream_features(const struct dc_stream_state *stream);
|
||||||
|
|
||||||
enum dc_edid_status dm_helpers_read_local_edid(
|
enum dc_edid_status dm_helpers_read_local_edid(
|
||||||
struct dc_context *ctx,
|
struct dc_context *ctx,
|
||||||
struct dc_link *link,
|
struct dc_link *link,
|
||||||
|
|
Loading…
Add table
Reference in a new issue