xref: /openbsd-src/sys/dev/pci/drm/include/drm/i915_hdcp_interface.h (revision f005ef32267c16bdb134f0e9fa4477dbe07c263a)
1 /* Public domain. */
2 
3 #ifndef _I915_HDCP_INTERFACE_H_
4 #define _I915_HDCP_INTERFACE_H_
5 
6 #include <drm/display/drm_hdcp.h>
7 
8 enum hdcp_wired_protocol {
9 	HDCP_PROTOCOL_INVALID,
10 	HDCP_PROTOCOL_HDMI,
11 	HDCP_PROTOCOL_DP
12 };
13 
14 struct hdcp_port_data {
15 	struct hdcp2_streamid_type *streams;
16 	uint32_t seq_num_m;
17 	uint16_t k;
18 };
19 
20 struct i915_hdcp_ops {
21 	int (*initiate_hdcp2_session)(struct device *, struct hdcp_port_data *,
22 	    struct hdcp2_ake_init *);
23 	int (*verify_receiver_cert_prepare_km)(struct device *,
24 	    struct hdcp_port_data *, struct hdcp2_ake_send_cert *, bool *,
25 	    struct hdcp2_ake_no_stored_km *, size_t *);
26 	int (*verify_hprime)(struct device *, struct hdcp_port_data *,
27 	    struct hdcp2_ake_send_hprime *);
28 	int (*store_pairing_info)(struct device *, struct hdcp_port_data *,
29 	    struct hdcp2_ake_send_pairing_info *);
30 	int (*initiate_locality_check)(struct device *, struct hdcp_port_data *,
31 	    struct hdcp2_lc_init *);
32 	int (*verify_lprime)(struct device *, struct hdcp_port_data *,
33 	    struct hdcp2_lc_send_lprime *);
34 	int (*get_session_key)(struct device *, struct hdcp_port_data *,
35 	    struct hdcp2_ske_send_eks *);
36 	int (*repeater_check_flow_prepare_ack)(struct device *,
37 	    struct hdcp_port_data *, struct hdcp2_rep_send_receiverid_list *,
38 	    struct hdcp2_rep_send_ack *);
39 	int (*verify_mprime)(struct device *, struct hdcp_port_data *,
40 	    struct hdcp2_rep_stream_ready *);
41 	int (*enable_hdcp_authentication)(struct device *,
42 	    struct hdcp_port_data *);
43 	int (*close_hdcp_session)(struct device *, struct hdcp_port_data *);
44 };
45 
46 struct i915_hdcp_arbiter {
47 	void *hdcp_dev;
48 	const struct i915_hdcp_ops *ops;
49 };
50 
51 #endif
52