1/* SPDX-License-Identifier: MIT */
2/*
3 * Copyright �� 2023 Intel Corporation
4 */
5
6#ifndef __INTEL_HDCP_GSC_MESSAGE_H__
7#define __INTEL_HDCP_GSC_MESSAGE_H__
8
9#include <linux/types.h>
10
11struct device;
12struct drm_i915_private;
13struct hdcp_port_data;
14struct hdcp2_ake_init;
15struct hdcp2_ake_send_cert;
16struct hdcp2_ake_no_stored_km;
17struct hdcp2_ake_send_hprime;
18struct hdcp2_ake_send_pairing_info;
19struct hdcp2_lc_init;
20struct hdcp2_lc_send_lprime;
21struct hdcp2_ske_send_eks;
22struct hdcp2_rep_send_receiverid_list;
23struct hdcp2_rep_send_ack;
24struct hdcp2_rep_stream_ready;
25
26ssize_t intel_hdcp_gsc_msg_send(struct drm_i915_private *i915, u8 *msg_in,
27				size_t msg_in_len, u8 *msg_out,
28				size_t msg_out_len);
29bool intel_hdcp_gsc_check_status(struct drm_i915_private *i915);
30int
31intel_hdcp_gsc_initiate_session(struct device *dev, struct hdcp_port_data *data,
32				struct hdcp2_ake_init *ake_data);
33int
34intel_hdcp_gsc_verify_receiver_cert_prepare_km(struct device *dev,
35					       struct hdcp_port_data *data,
36					       struct hdcp2_ake_send_cert *rx_cert,
37					       bool *km_stored,
38					       struct hdcp2_ake_no_stored_km
39					       *ek_pub_km,
40					       size_t *msg_sz);
41int
42intel_hdcp_gsc_verify_hprime(struct device *dev, struct hdcp_port_data *data,
43			     struct hdcp2_ake_send_hprime *rx_hprime);
44int
45intel_hdcp_gsc_store_pairing_info(struct device *dev, struct hdcp_port_data *data,
46				  struct hdcp2_ake_send_pairing_info *pairing_info);
47int
48intel_hdcp_gsc_initiate_locality_check(struct device *dev,
49				       struct hdcp_port_data *data,
50				       struct hdcp2_lc_init *lc_init_data);
51int
52intel_hdcp_gsc_verify_lprime(struct device *dev, struct hdcp_port_data *data,
53			     struct hdcp2_lc_send_lprime *rx_lprime);
54int intel_hdcp_gsc_get_session_key(struct device *dev,
55				   struct hdcp_port_data *data,
56				   struct hdcp2_ske_send_eks *ske_data);
57int
58intel_hdcp_gsc_repeater_check_flow_prepare_ack(struct device *dev,
59					       struct hdcp_port_data *data,
60					       struct hdcp2_rep_send_receiverid_list
61					       *rep_topology,
62					       struct hdcp2_rep_send_ack
63					       *rep_send_ack);
64int intel_hdcp_gsc_verify_mprime(struct device *dev,
65				 struct hdcp_port_data *data,
66				 struct hdcp2_rep_stream_ready *stream_ready);
67int intel_hdcp_gsc_enable_authentication(struct device *dev,
68					 struct hdcp_port_data *data);
69int
70intel_hdcp_gsc_close_session(struct device *dev, struct hdcp_port_data *data);
71
72#endif /* __INTEL_HDCP_GSC_MESSAGE_H__ */
73