Lines Matching defs:hdcp

34 #include "hdcp.h"
39 static void hdcp2_message_init(struct mod_hdcp *hdcp,
42 in->session_handle = hdcp->auth.id;
52 enum mod_hdcp_status mod_hdcp_remove_display_topology(struct mod_hdcp *hdcp)
55 struct psp_context *psp = hdcp->config.psp.handle;
63 if (is_display_added(&(hdcp->connection.displays[i]))) {
67 display = &hdcp->connection.displays[i];
80 HDCP_TOP_REMOVE_DISPLAY_TRACE(hdcp, display->index);
87 enum mod_hdcp_status mod_hdcp_add_display_topology(struct mod_hdcp *hdcp)
89 struct psp_context *psp = hdcp->config.psp.handle;
92 struct mod_hdcp_link *link = &hdcp->connection.link;
103 if (hdcp->connection.displays[i].state == MOD_HDCP_DISPLAY_ACTIVE) {
104 display = &hdcp->connection.displays[i];
126 HDCP_TOP_ADD_DISPLAY_TRACE(hdcp, display->index);
133 enum mod_hdcp_status mod_hdcp_hdcp1_create_session(struct mod_hdcp *hdcp)
136 struct psp_context *psp = hdcp->config.psp.handle;
137 struct mod_hdcp_display *display = get_first_added_display(hdcp);
141 DRM_ERROR("Failed to create hdcp session. HDCP TA is not initialized.");
153 hdcp->auth.id = hdcp_cmd->out_msg.hdcp1_create_session.session_handle;
158 hdcp->auth.msg.hdcp1.ainfo = hdcp_cmd->out_msg.hdcp1_create_session.ainfo_primary;
159 memcpy(hdcp->auth.msg.hdcp1.aksv, hdcp_cmd->out_msg.hdcp1_create_session.aksv_primary,
160 sizeof(hdcp->auth.msg.hdcp1.aksv));
161 memcpy(hdcp->auth.msg.hdcp1.an, hdcp_cmd->out_msg.hdcp1_create_session.an_primary,
162 sizeof(hdcp->auth.msg.hdcp1.an));
167 enum mod_hdcp_status mod_hdcp_hdcp1_destroy_session(struct mod_hdcp *hdcp)
170 struct psp_context *psp = hdcp->config.psp.handle;
176 hdcp_cmd->in_msg.hdcp1_destroy_session.session_handle = hdcp->auth.id;
184 HDCP_TOP_HDCP1_DESTROY_SESSION_TRACE(hdcp);
189 enum mod_hdcp_status mod_hdcp_hdcp1_validate_rx(struct mod_hdcp *hdcp)
191 struct psp_context *psp = hdcp->config.psp.handle;
197 hdcp_cmd->in_msg.hdcp1_first_part_authentication.session_handle = hdcp->auth.id;
199 memcpy(hdcp_cmd->in_msg.hdcp1_first_part_authentication.bksv_primary, hdcp->auth.msg.hdcp1.bksv,
202 hdcp_cmd->in_msg.hdcp1_first_part_authentication.r0_prime_primary = hdcp->auth.msg.hdcp1.r0p;
203 hdcp_cmd->in_msg.hdcp1_first_part_authentication.bcaps = hdcp->auth.msg.hdcp1.bcaps;
214 hdcp->connection.is_repeater = 1;
217 hdcp->connection.is_repeater = 0;
225 enum mod_hdcp_status mod_hdcp_hdcp1_enable_encryption(struct mod_hdcp *hdcp)
227 struct psp_context *psp = hdcp->config.psp.handle;
229 struct mod_hdcp_display *display = get_first_added_display(hdcp);
234 hdcp_cmd->in_msg.hdcp1_enable_encryption.session_handle = hdcp->auth.id;
242 if (!is_dp_mst_hdcp(hdcp)) {
244 HDCP_HDCP1_ENABLED_TRACE(hdcp, display->index);
249 enum mod_hdcp_status mod_hdcp_hdcp1_validate_ksvlist_vp(struct mod_hdcp *hdcp)
251 struct psp_context *psp = hdcp->config.psp.handle;
257 hdcp_cmd->in_msg.hdcp1_second_part_authentication.session_handle = hdcp->auth.id;
259 hdcp_cmd->in_msg.hdcp1_second_part_authentication.ksv_list_size = hdcp->auth.msg.hdcp1.ksvlist_size;
260 memcpy(hdcp_cmd->in_msg.hdcp1_second_part_authentication.ksv_list, hdcp->auth.msg.hdcp1.ksvlist,
261 hdcp->auth.msg.hdcp1.ksvlist_size);
263 memcpy(hdcp_cmd->in_msg.hdcp1_second_part_authentication.v_prime, hdcp->auth.msg.hdcp1.vp,
264 sizeof(hdcp->auth.msg.hdcp1.vp));
267 is_dp_hdcp(hdcp) ? hdcp->auth.msg.hdcp1.binfo_dp : hdcp->auth.msg.hdcp1.bstatus;
278 enum mod_hdcp_status mod_hdcp_hdcp1_enable_dp_stream_encryption(struct mod_hdcp *hdcp)
281 struct psp_context *psp = hdcp->config.psp.handle;
289 if (hdcp->connection.displays[i].state != MOD_HDCP_DISPLAY_ACTIVE_AND_ADDED ||
290 hdcp->connection.displays[i].adjust.disable)
295 hdcp_cmd->in_msg.hdcp1_enable_dp_stream_encryption.session_handle = hdcp->auth.id;
296 hdcp_cmd->in_msg.hdcp1_enable_dp_stream_encryption.display_handle = hdcp->connection.displays[i].index;
304 hdcp->connection.displays[i].state = MOD_HDCP_DISPLAY_ENCRYPTION_ENABLED;
305 HDCP_HDCP1_ENABLED_TRACE(hdcp, hdcp->connection.displays[i].index);
311 enum mod_hdcp_status mod_hdcp_hdcp1_link_maintenance(struct mod_hdcp *hdcp)
313 struct psp_context *psp = hdcp->config.psp.handle;
320 hdcp_cmd->in_msg.hdcp1_get_encryption_status.session_handle = hdcp->auth.id;
335 enum mod_hdcp_status mod_hdcp_hdcp1_get_link_encryption_status(struct mod_hdcp *hdcp,
340 if (mod_hdcp_hdcp1_link_maintenance(hdcp) != MOD_HDCP_STATUS_SUCCESS)
348 enum mod_hdcp_status mod_hdcp_hdcp2_create_session(struct mod_hdcp *hdcp)
350 struct psp_context *psp = hdcp->config.psp.handle;
352 struct mod_hdcp_display *display = get_first_added_display(hdcp);
355 DRM_ERROR("Failed to create hdcp session, HDCP TA is not initialized");
367 if (hdcp->connection.link.adjust.hdcp2.force_type == MOD_HDCP_FORCE_TYPE_0)
370 else if (hdcp->connection.link.adjust.hdcp2.force_type == MOD_HDCP_FORCE_TYPE_1)
373 else if (hdcp->connection.link.adjust.hdcp2.force_type == MOD_HDCP_FORCE_TYPE_MAX)
384 hdcp->auth.id = hdcp_cmd->out_msg.hdcp2_create_session_v2.session_handle;
389 enum mod_hdcp_status mod_hdcp_hdcp2_destroy_session(struct mod_hdcp *hdcp)
391 struct psp_context *psp = hdcp->config.psp.handle;
397 hdcp_cmd->in_msg.hdcp2_destroy_session.session_handle = hdcp->auth.id;
405 HDCP_TOP_HDCP2_DESTROY_SESSION_TRACE(hdcp);
410 enum mod_hdcp_status mod_hdcp_hdcp2_prepare_ake_init(struct mod_hdcp *hdcp)
412 struct psp_context *psp = hdcp->config.psp.handle;
423 hdcp2_message_init(hdcp, msg_in);
433 memcpy(&hdcp->auth.msg.hdcp2.ake_init[0], &msg_out->prepare.transmitter_message[0],
434 sizeof(hdcp->auth.msg.hdcp2.ake_init));
439 enum mod_hdcp_status mod_hdcp_hdcp2_validate_ake_cert(struct mod_hdcp *hdcp)
441 struct psp_context *psp = hdcp->config.psp.handle;
452 hdcp2_message_init(hdcp, msg_in);
457 memcpy(&msg_in->process.receiver_message[0], hdcp->auth.msg.hdcp2.ake_cert,
458 sizeof(hdcp->auth.msg.hdcp2.ake_cert));
470 memcpy(hdcp->auth.msg.hdcp2.ake_no_stored_km, &msg_out->prepare.transmitter_message[0],
471 sizeof(hdcp->auth.msg.hdcp2.ake_no_stored_km));
473 memcpy(hdcp->auth.msg.hdcp2.ake_stored_km,
474 &msg_out->prepare.transmitter_message[sizeof(hdcp->auth.msg.hdcp2.ake_no_stored_km)],
475 sizeof(hdcp->auth.msg.hdcp2.ake_stored_km));
478 hdcp->connection.is_km_stored = msg_out->process.is_km_stored ? 1 : 0;
479 hdcp->connection.is_repeater = msg_out->process.is_repeater ? 1 : 0;
486 enum mod_hdcp_status mod_hdcp_hdcp2_validate_h_prime(struct mod_hdcp *hdcp)
488 struct psp_context *psp = hdcp->config.psp.handle;
499 hdcp2_message_init(hdcp, msg_in);
504 memcpy(&msg_in->process.receiver_message[0], hdcp->auth.msg.hdcp2.ake_h_prime,
505 sizeof(hdcp->auth.msg.hdcp2.ake_h_prime));
507 if (!hdcp->connection.is_km_stored) {
510 memcpy(&msg_in->process.receiver_message[sizeof(hdcp->auth.msg.hdcp2.ake_h_prime)],
511 hdcp->auth.msg.hdcp2.ake_pairing_info, sizeof(hdcp->auth.msg.hdcp2.ake_pairing_info));
523 else if (!hdcp->connection.is_km_stored &&
531 enum mod_hdcp_status mod_hdcp_hdcp2_prepare_lc_init(struct mod_hdcp *hdcp)
533 struct psp_context *psp = hdcp->config.psp.handle;
544 hdcp2_message_init(hdcp, msg_in);
555 memcpy(hdcp->auth.msg.hdcp2.lc_init, &msg_out->prepare.transmitter_message[0],
556 sizeof(hdcp->auth.msg.hdcp2.lc_init));
561 enum mod_hdcp_status mod_hdcp_hdcp2_validate_l_prime(struct mod_hdcp *hdcp)
563 struct psp_context *psp = hdcp->config.psp.handle;
574 hdcp2_message_init(hdcp, msg_in);
579 memcpy(&msg_in->process.receiver_message[0], hdcp->auth.msg.hdcp2.lc_l_prime,
580 sizeof(hdcp->auth.msg.hdcp2.lc_l_prime));
595 enum mod_hdcp_status mod_hdcp_hdcp2_prepare_eks(struct mod_hdcp *hdcp)
597 struct psp_context *psp = hdcp->config.psp.handle;
608 hdcp2_message_init(hdcp, msg_in);
612 if (is_dp_hdcp(hdcp))
621 memcpy(hdcp->auth.msg.hdcp2.ske_eks, &msg_out->prepare.transmitter_message[0],
622 sizeof(hdcp->auth.msg.hdcp2.ske_eks));
623 msg_out->prepare.msg1_desc.msg_size = sizeof(hdcp->auth.msg.hdcp2.ske_eks);
625 if (is_dp_hdcp(hdcp)) {
626 memcpy(hdcp->auth.msg.hdcp2.content_stream_type_dp,
627 &msg_out->prepare.transmitter_message[sizeof(hdcp->auth.msg.hdcp2.ske_eks)],
628 sizeof(hdcp->auth.msg.hdcp2.content_stream_type_dp));
634 enum mod_hdcp_status mod_hdcp_hdcp2_enable_encryption(struct mod_hdcp *hdcp)
636 struct psp_context *psp = hdcp->config.psp.handle;
639 struct mod_hdcp_display *display = get_first_added_display(hdcp);
646 hdcp2_message_init(hdcp, msg_in);
651 hdcp_cmd->in_msg.hdcp1_enable_encryption.session_handle = hdcp->auth.id;
659 if (!is_dp_mst_hdcp(hdcp)) {
661 HDCP_HDCP2_ENABLED_TRACE(hdcp, display->index);
667 enum mod_hdcp_status mod_hdcp_hdcp2_validate_rx_id_list(struct mod_hdcp *hdcp)
669 struct psp_context *psp = hdcp->config.psp.handle;
680 hdcp2_message_init(hdcp, msg_in);
683 msg_in->process.msg1_desc.msg_size = sizeof(hdcp->auth.msg.hdcp2.rx_id_list);
684 memcpy(&msg_in->process.receiver_message[0], hdcp->auth.msg.hdcp2.rx_id_list,
685 sizeof(hdcp->auth.msg.hdcp2.rx_id_list));
696 memcpy(hdcp->auth.msg.hdcp2.repeater_auth_ack, &msg_out->prepare.transmitter_message[0],
697 sizeof(hdcp->auth.msg.hdcp2.repeater_auth_ack));
700 hdcp->connection.is_km_stored = msg_out->process.is_km_stored ? 1 : 0;
701 hdcp->connection.is_repeater = msg_out->process.is_repeater ? 1 : 0;
709 enum mod_hdcp_status mod_hdcp_hdcp2_enable_dp_stream_encryption(struct mod_hdcp *hdcp)
711 struct psp_context *psp = hdcp->config.psp.handle;
721 hdcp2_message_init(hdcp, msg_in);
725 if (hdcp->connection.displays[i].state != MOD_HDCP_DISPLAY_ACTIVE_AND_ADDED ||
726 hdcp->connection.displays[i].adjust.disable)
728 hdcp_cmd->in_msg.hdcp2_enable_dp_stream_encryption.display_handle = hdcp->connection.displays[i].index;
729 hdcp_cmd->in_msg.hdcp2_enable_dp_stream_encryption.session_handle = hdcp->auth.id;
737 hdcp->connection.displays[i].state = MOD_HDCP_DISPLAY_ENCRYPTION_ENABLED;
738 HDCP_HDCP2_ENABLED_TRACE(hdcp, hdcp->connection.displays[i].index);
745 enum mod_hdcp_status mod_hdcp_hdcp2_prepare_stream_management(struct mod_hdcp *hdcp)
748 struct psp_context *psp = hdcp->config.psp.handle;
759 hdcp2_message_init(hdcp, msg_in);
770 hdcp->auth.msg.hdcp2.stream_manage_size = msg_out->prepare.msg1_desc.msg_size;
772 memcpy(hdcp->auth.msg.hdcp2.repeater_auth_stream_manage, &msg_out->prepare.transmitter_message[0],
773 sizeof(hdcp->auth.msg.hdcp2.repeater_auth_stream_manage));
778 enum mod_hdcp_status mod_hdcp_hdcp2_validate_stream_ready(struct mod_hdcp *hdcp)
780 struct psp_context *psp = hdcp->config.psp.handle;
791 hdcp2_message_init(hdcp, msg_in);
795 msg_in->process.msg1_desc.msg_size = sizeof(hdcp->auth.msg.hdcp2.repeater_auth_stream_ready);
797 memcpy(&msg_in->process.receiver_message[0], hdcp->auth.msg.hdcp2.repeater_auth_stream_ready,
798 sizeof(hdcp->auth.msg.hdcp2.repeater_auth_stream_ready));
809 enum mod_hdcp_status mod_hdcp_hdcp2_get_link_encryption_status(struct mod_hdcp *hdcp,
812 struct psp_context *psp = hdcp->config.psp.handle;
819 hdcp_cmd->in_msg.hdcp2_get_encryption_status.session_handle = hdcp->auth.id;