Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amd/display: Fix incorrect HDCP caps for dongle

[Why]
Previously we used link signal type to get the caps. We should use the
sink signal type

[How]
Use sink signal type instead of link signal type

Signed-off-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Reviewed-by: Wenjing Liu <Wenjing.Liu@amd.com>
Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Bhawanpreet Lakha and committed by
Alex Deucher
0023b7ee b56e90ea

+8 -8
+2 -2
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
··· 859 859 860 860 seq_printf(m, "%s:%d HDCP version: ", connector->name, connector->base.id); 861 861 862 - hdcp_cap = dc_link_is_hdcp14(aconnector->dc_link); 863 - hdcp2_cap = dc_link_is_hdcp22(aconnector->dc_link); 862 + hdcp_cap = dc_link_is_hdcp14(aconnector->dc_link, aconnector->dc_sink->sink_signal); 863 + hdcp2_cap = dc_link_is_hdcp22(aconnector->dc_link, aconnector->dc_sink->sink_signal); 864 864 865 865 866 866 if (hdcp_cap)
+4 -4
drivers/gpu/drm/amd/display/dc/core/dc_link.c
··· 521 521 } 522 522 523 523 #if defined(CONFIG_DRM_AMD_DC_HDCP) 524 - bool dc_link_is_hdcp14(struct dc_link *link) 524 + bool dc_link_is_hdcp14(struct dc_link *link, enum signal_type signal) 525 525 { 526 526 bool ret = false; 527 527 528 - switch (link->connector_signal) { 528 + switch (signal) { 529 529 case SIGNAL_TYPE_DISPLAY_PORT: 530 530 case SIGNAL_TYPE_DISPLAY_PORT_MST: 531 531 ret = link->hdcp_caps.bcaps.bits.HDCP_CAPABLE; ··· 545 545 return ret; 546 546 } 547 547 548 - bool dc_link_is_hdcp22(struct dc_link *link) 548 + bool dc_link_is_hdcp22(struct dc_link *link, enum signal_type signal) 549 549 { 550 550 bool ret = false; 551 551 552 - switch (link->connector_signal) { 552 + switch (signal) { 553 553 case SIGNAL_TYPE_DISPLAY_PORT: 554 554 case SIGNAL_TYPE_DISPLAY_PORT_MST: 555 555 ret = (link->hdcp_caps.bcaps.bits.HDCP_CAPABLE &&
+2 -2
drivers/gpu/drm/amd/display/dc/dc_link.h
··· 312 312 */ 313 313 314 314 #ifdef CONFIG_DRM_AMD_DC_HDCP 315 - bool dc_link_is_hdcp14(struct dc_link *link); 316 - bool dc_link_is_hdcp22(struct dc_link *link); 315 + bool dc_link_is_hdcp14(struct dc_link *link, enum signal_type signal); 316 + bool dc_link_is_hdcp22(struct dc_link *link, enum signal_type signal); 317 317 #endif 318 318 void dc_link_set_drive_settings(struct dc *dc, 319 319 struct link_training_settings *lt_settings,