mirror of https://gitee.com/openkylin/linux.git
drm/amd/display: determine is mst hdcp based on stream instead of sink signal
[why] It is possible even if sink signal is MST but driver enables SST stream. We should not determine if we should do MST authentication based on sink's capability. Instead we should determine whether to do MST authentication based on what we have enabled in stream. Signed-off-by: Wenjing Liu <Wenjing.Liu@amd.com> Reviewed-by: Ashley Thomas <Ashley.Thomas2@amd.com> Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
caa08c58cc
commit
b6a1a0e760
|
@ -412,6 +412,7 @@ static void update_config(void *handle, struct cp_psp_stream_config *config)
|
|||
link->dig_be = config->link_enc_inst;
|
||||
link->ddc_line = aconnector->dc_link->ddc_hw_inst + 1;
|
||||
link->dp.rev = aconnector->dc_link->dpcd_caps.dpcd_rev.raw;
|
||||
link->dp.mst_supported = config->mst_supported;
|
||||
display->adjust.disable = 1;
|
||||
link->adjust.auth_delay = 2;
|
||||
|
||||
|
|
|
@ -2959,6 +2959,8 @@ static void update_psp_stream_config(struct pipe_ctx *pipe_ctx, bool dpms_off)
|
|||
config.link_enc_inst = pipe_ctx->stream->link->link_enc_hw_inst;
|
||||
config.dpms_off = dpms_off;
|
||||
config.dm_stream_ctx = pipe_ctx->stream->dm_stream_context;
|
||||
config.mst_supported = (pipe_ctx->stream->signal ==
|
||||
SIGNAL_TYPE_DISPLAY_PORT_MST);
|
||||
cp_psp->funcs.update_stream_config(cp_psp->handle, &config);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ struct cp_psp_stream_config {
|
|||
uint8_t otg_inst;
|
||||
uint8_t link_enc_inst;
|
||||
uint8_t stream_enc_inst;
|
||||
uint8_t mst_supported;
|
||||
void *dm_stream_ctx;
|
||||
bool dpms_off;
|
||||
};
|
||||
|
|
|
@ -481,10 +481,8 @@ enum mod_hdcp_operation_mode mod_hdcp_signal_type_to_operation_mode(
|
|||
break;
|
||||
case SIGNAL_TYPE_EDP:
|
||||
case SIGNAL_TYPE_DISPLAY_PORT:
|
||||
mode = MOD_HDCP_MODE_DP;
|
||||
break;
|
||||
case SIGNAL_TYPE_DISPLAY_PORT_MST:
|
||||
mode = MOD_HDCP_MODE_DP_MST;
|
||||
mode = MOD_HDCP_MODE_DP;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -392,13 +392,13 @@ enum mod_hdcp_status mod_hdcp_write_content_type(struct mod_hdcp *hdcp);
|
|||
/* hdcp version helpers */
|
||||
static inline uint8_t is_dp_hdcp(struct mod_hdcp *hdcp)
|
||||
{
|
||||
return (hdcp->connection.link.mode == MOD_HDCP_MODE_DP ||
|
||||
hdcp->connection.link.mode == MOD_HDCP_MODE_DP_MST);
|
||||
return (hdcp->connection.link.mode == MOD_HDCP_MODE_DP);
|
||||
}
|
||||
|
||||
static inline uint8_t is_dp_mst_hdcp(struct mod_hdcp *hdcp)
|
||||
{
|
||||
return (hdcp->connection.link.mode == MOD_HDCP_MODE_DP_MST);
|
||||
return (hdcp->connection.link.mode == MOD_HDCP_MODE_DP &&
|
||||
hdcp->connection.link.dp.mst_supported);
|
||||
}
|
||||
|
||||
static inline uint8_t is_hdmi_dvi_sl_hdcp(struct mod_hdcp *hdcp)
|
||||
|
|
|
@ -102,6 +102,7 @@ enum mod_hdcp_status {
|
|||
struct mod_hdcp_displayport {
|
||||
uint8_t rev;
|
||||
uint8_t assr_supported;
|
||||
uint8_t mst_supported;
|
||||
};
|
||||
|
||||
struct mod_hdcp_hdmi {
|
||||
|
@ -110,8 +111,7 @@ struct mod_hdcp_hdmi {
|
|||
enum mod_hdcp_operation_mode {
|
||||
MOD_HDCP_MODE_OFF,
|
||||
MOD_HDCP_MODE_DEFAULT,
|
||||
MOD_HDCP_MODE_DP,
|
||||
MOD_HDCP_MODE_DP_MST
|
||||
MOD_HDCP_MODE_DP
|
||||
};
|
||||
|
||||
enum mod_hdcp_display_state {
|
||||
|
|
Loading…
Reference in New Issue