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