/* Public domain. */ #ifndef _I915_MEI_HDCP_INTERFACE_H_ #define _I915_MEI_HDCP_INTERFACE_H_ #include enum hdcp_wired_protocol { HDCP_PROTOCOL_INVALID, HDCP_PROTOCOL_HDMI, HDCP_PROTOCOL_DP }; enum hdcp_port_type { HDCP_PORT_TYPE_INVALID = 0, HDCP_PORT_TYPE_INTEGRATED = 1, HDCP_PORT_TYPE_LSPCON = 2, HDCP_PORT_TYPE_CPDP = 3, }; enum mei_fw_ddi { MEI_DDI_INVALID_PORT = 0, MEI_DDI_B = 1, MEI_DDI_C = 2, MEI_DDI_E = 3, MEI_DDI_F = 4, MEI_DDI_A = 7, }; enum mei_fw_tc { MEI_INVALID_TRANSCODER = 0, }; struct hdcp_port_data { struct hdcp2_streamid_type *streams; uint32_t seq_num_m; enum mei_fw_ddi fw_ddi; enum mei_fw_tc fw_tc; uint8_t port_type; uint8_t protocol; uint16_t k; }; struct i915_hdcp_component_ops { int (*initiate_hdcp2_session)(struct device *, struct hdcp_port_data *, struct hdcp2_ake_init *); int (*verify_receiver_cert_prepare_km)(struct device *, struct hdcp_port_data *, struct hdcp2_ake_send_cert *, bool *, struct hdcp2_ake_no_stored_km *, size_t *); int (*verify_hprime)(struct device *, struct hdcp_port_data *, struct hdcp2_ake_send_hprime *); int (*store_pairing_info)(struct device *, struct hdcp_port_data *, struct hdcp2_ake_send_pairing_info *); int (*initiate_locality_check)(struct device *, struct hdcp_port_data *, struct hdcp2_lc_init *); int (*verify_lprime)(struct device *, struct hdcp_port_data *, struct hdcp2_lc_send_lprime *); int (*get_session_key)(struct device *, struct hdcp_port_data *, struct hdcp2_ske_send_eks *); int (*repeater_check_flow_prepare_ack)(struct device *, struct hdcp_port_data *, struct hdcp2_rep_send_receiverid_list *, struct hdcp2_rep_send_ack *); int (*verify_mprime)(struct device *, struct hdcp_port_data *, struct hdcp2_rep_stream_ready *); int (*enable_hdcp_authentication)(struct device *, struct hdcp_port_data *); int (*close_hdcp_session)(struct device *, struct hdcp_port_data *); }; struct i915_hdcp_comp_master { void *mei_dev; const struct i915_hdcp_component_ops *ops; }; #endif