/** * enum hdcp_port_type - HDCP port implementation type defined by ME/GSC FW * @HDCP_PORT_TYPE_INVALID: Invalid hdcp port type * @HDCP_PORT_TYPE_INTEGRATED: In-Host HDCP2.x port * @HDCP_PORT_TYPE_LSPCON: HDCP2.2 discrete wired Tx port with LSPCON * (HDMI 2.0) solution * @HDCP_PORT_TYPE_CPDP: HDCP2.2 discrete wired Tx port using the CPDP (DP 1.3) * solution
*/ enum hdcp_port_type {
HDCP_PORT_TYPE_INVALID,
HDCP_PORT_TYPE_INTEGRATED,
HDCP_PORT_TYPE_LSPCON,
HDCP_PORT_TYPE_CPDP
};
/** * enum hdcp_wired_protocol - HDCP adaptation used on the port * @HDCP_PROTOCOL_INVALID: Invalid HDCP adaptation protocol * @HDCP_PROTOCOL_HDMI: HDMI adaptation of HDCP used on the port * @HDCP_PROTOCOL_DP: DP adaptation of HDCP used on the port
*/ enum hdcp_wired_protocol {
HDCP_PROTOCOL_INVALID,
HDCP_PROTOCOL_HDMI,
HDCP_PROTOCOL_DP
};
/** * enum hdcp_transcoder - ME/GSC Firmware defined index for transcoders * @HDCP_INVALID_TRANSCODER: Index for Invalid transcoder * @HDCP_TRANSCODER_EDP: Index for EDP Transcoder * @HDCP_TRANSCODER_DSI0: Index for DSI0 Transcoder * @HDCP_TRANSCODER_DSI1: Index for DSI1 Transcoder * @HDCP_TRANSCODER_A: Index for Transcoder A * @HDCP_TRANSCODER_B: Index for Transcoder B * @HDCP_TRANSCODER_C: Index for Transcoder C * @HDCP_TRANSCODER_D: Index for Transcoder D
*/ enum hdcp_transcoder {
HDCP_INVALID_TRANSCODER = 0x00,
HDCP_TRANSCODER_EDP,
HDCP_TRANSCODER_DSI0,
HDCP_TRANSCODER_DSI1,
HDCP_TRANSCODER_A = 0x10,
HDCP_TRANSCODER_B,
HDCP_TRANSCODER_C,
HDCP_TRANSCODER_D
};
/** * struct hdcp_port_data - intel specific HDCP port data * @hdcp_ddi: ddi index as per ME/GSC FW * @hdcp_transcoder: transcoder index as per ME/GSC FW * @port_type: HDCP port type as per ME/GSC FW classification * @protocol: HDCP adaptation as per ME/GSC FW * @k: No of streams transmitted on a port. Only on DP MST this is != 1 * @seq_num_m: Count of RepeaterAuth_Stream_Manage msg propagated. * Initialized to 0 on AKE_INIT. Incremented after every successful * transmission of RepeaterAuth_Stream_Manage message. When it rolls * over re-Auth has to be triggered. * @streams: struct hdcp2_streamid_type[k]. Defines the type and id for the * streams
*/ struct hdcp_port_data { enum hdcp_ddi hdcp_ddi; enum hdcp_transcoder hdcp_transcoder;
u8 port_type;
u8 protocol;
u16 k;
u32 seq_num_m; struct hdcp2_streamid_type *streams;
};
/** * struct i915_hdcp_ops- ops for HDCP2.2 services. * @owner: Module providing the ops * @initiate_hdcp2_session: Initiate a Wired HDCP2.2 Tx Session. * And Prepare AKE_Init. * @verify_receiver_cert_prepare_km: Verify the Receiver Certificate * AKE_Send_Cert and prepare * AKE_Stored_Km/AKE_No_Stored_Km * @verify_hprime: Verify AKE_Send_H_prime * @store_pairing_info: Store pairing info received * @initiate_locality_check: Prepare LC_Init * @verify_lprime: Verify lprime * @get_session_key: Prepare SKE_Send_Eks * @repeater_check_flow_prepare_ack: Validate the Downstream topology * and prepare rep_ack * @verify_mprime: Verify mprime * @enable_hdcp_authentication: Mark a port as authenticated. * @close_hdcp_session: Close the Wired HDCP Tx session per port. * This also disables the authenticated state of the port.
*/ struct i915_hdcp_ops { /** * @owner: hdcp module
*/ struct module *owner;
/** * struct i915_hdcp_arbiter - Used for communication between i915 * and hdcp drivers for the HDCP2.2 services
*/ struct i915_hdcp_arbiter { /** * @hdcp_dev: device that provides the HDCP2.2 service from MEI Bus.
*/ struct device *hdcp_dev;
/** * @ops: Ops implemented by hdcp driver or intel_hdcp_gsc, used by i915 * driver.
*/ conststruct i915_hdcp_ops *ops;
/** * @mutex: To protect the above members.
*/ struct mutex mutex;
};
/* fw_hdcp_status: Enumeration of all HDCP Status Codes */ enum fw_hdcp_status {
FW_HDCP_STATUS_SUCCESS = 0x0000,
/* HDCP HECI message header. All header values are little endian. */ struct hdcp_cmd_header {
u32 api_version;
u32 command_id; enum fw_hdcp_status status; /* Length of the HECI message (excluding the header) */
u32 buffer_len;
} __packed;
/* Empty command request or response. No data follows the header. */ struct hdcp_cmd_no_data { struct hdcp_cmd_header header;
} __packed;
/* Uniquely identifies the hdcp port being addressed for a given command. */ struct hdcp_port_id {
u8 integrated_port_type; /* physical_port is used until Gen11.5. Must be zero for Gen11.5+ */
u8 physical_port; /* attached_transcoder is for Gen11.5+. Set to zero for <Gen11.5 */
u8 attached_transcoder;
u8 reserved;
} __packed;
/* * Data structures for integrated wired HDCP2 Tx in * support of the AKE protocol
*/ /* HECI struct for integrated wired HDCP Tx session initiation. */ struct wired_cmd_initiate_hdcp2_session_in { struct hdcp_cmd_header header; struct hdcp_port_id port;
u8 protocol; /* for HDMI vs DP */
} __packed;
/* Data structures for integrated wired HDCP2 Tx in support of the LC protocol*/ /* * HECI struct for initiating locality check with an * integrated wired HDCP Tx session.
*/ struct wired_cmd_init_locality_check_in { struct hdcp_cmd_header header; struct hdcp_port_id port;
} __packed;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.