HDCP:

ME FW 作为安全引擎,提供了在 Intel 显卡设备和 HDC2.2 sink 之间设置 HDCP2.2 协议协商的功能。

ME FW 准备 HDCP2.2 协商参数,根据 HDCP 2.2 规范对其进行签名和加密。 Intel 显卡将创建的 blob 发送到 HDCP2.2 sink。

类似地,HDCP2.2 sink 的响应被传输到 ME FW 进行解密和验证。

一旦完成 HDCP2.2 协商的所有步骤,ME FW 将根据请求配置端口为已身份验证,并向 Intel 显卡硬件提供 HDCP 加密密钥。

mei_hdcp 驱动程序

mei_hdcp 驱动程序充当 HDCP 2.2 协议实现者 (I915) 和 ME FW 之间的翻译层,通过将 HDCP2.2 协商消息转换为 ME FW 命令负载,反之亦然。

mei_hdcp api

int mei_hdcp_initiate_session(struct device *dev, struct hdcp_port_data *data, struct hdcp2_ake_init *ake_data)

在 ME FW 中启动有线 HDCP2.2 Tx 会话

参数

struct device *dev

对应于 mei_cl_device 的设备

struct hdcp_port_data *data

Intel HW 特定 hdcp 数据

struct hdcp2_ake_init *ake_data

AKE_Init 消息输出。

返回

成功返回 0,失败返回 <0。

int mei_hdcp_verify_receiver_cert_prepare_km(struct device *dev, struct hdcp_port_data *data, struct hdcp2_ake_send_cert *rx_cert, bool *km_stored, struct hdcp2_ake_no_stored_km *ek_pub_km, size_t *msg_sz)

验证接收器证书 AKE_Send_Cert 并准备 AKE_Stored_Km/AKE_No_Stored_Km

参数

struct device *dev

对应于 mei_cl_device 的设备

struct hdcp_port_data *data

Intel HW 特定 hdcp 数据

struct hdcp2_ake_send_cert *rx_cert

用于验证的 AKE_Send_Cert

bool *km_stored

配对状态标志输出

struct hdcp2_ake_no_stored_km *ek_pub_km

AKE_Stored_Km/AKE_No_Stored_Km 输出消息

size_t *msg_sz

AKE_XXXXX_Km 输出消息的大小

返回

成功返回 0,失败返回 <0

int mei_hdcp_verify_hprime(struct device *dev, struct hdcp_port_data *data, struct hdcp2_ake_send_hprime *rx_hprime)

在 ME FW 验证 AKE_Send_H_prime。

参数

struct device *dev

对应于 mei_cl_device 的设备

struct hdcp_port_data *data

Intel HW 特定 hdcp 数据

struct hdcp2_ake_send_hprime *rx_hprime

用于 ME FW 验证的 AKE_Send_H_prime 消息

返回

成功返回 0,失败返回 <0

int mei_hdcp_store_pairing_info(struct device *dev, struct hdcp_port_data *data, struct hdcp2_ake_send_pairing_info *pairing_info)

存储在 ME FW 收到的配对信息

参数

struct device *dev

对应于 mei_cl_device 的设备

struct hdcp_port_data *data

Intel HW 特定 hdcp 数据

struct hdcp2_ake_send_pairing_info *pairing_info

输入到 ME FW 的 AKE_Send_Pairing_Info 消息

返回

成功返回 0,失败返回 <0

int mei_hdcp_initiate_locality_check(struct device *dev, struct hdcp_port_data *data, struct hdcp2_lc_init *lc_init_data)

准备 LC_Init

参数

struct device *dev

对应于 mei_cl_device 的设备

struct hdcp_port_data *data

Intel HW 特定 hdcp 数据

struct hdcp2_lc_init *lc_init_data

LC_Init 消息输出

返回

成功返回 0,失败返回 <0

int mei_hdcp_verify_lprime(struct device *dev, struct hdcp_port_data *data, struct hdcp2_lc_send_lprime *rx_lprime)

验证 lprime。

参数

struct device *dev

对应于 mei_cl_device 的设备

struct hdcp_port_data *data

Intel HW 特定 hdcp 数据

struct hdcp2_lc_send_lprime *rx_lprime

用于 ME FW 验证的 LC_Send_L_prime 消息

返回

成功返回 0,失败返回 <0

int mei_hdcp_get_session_key(struct device *dev, struct hdcp_port_data *data, struct hdcp2_ske_send_eks *ske_data)

准备 SKE_Send_Eks。

参数

struct device *dev

对应于 mei_cl_device 的设备

struct hdcp_port_data *data

Intel HW 特定 hdcp 数据

struct hdcp2_ske_send_eks *ske_data

来自 ME FW 的 SKE_Send_Eks 消息输出。

返回

成功返回 0,失败返回 <0

int mei_hdcp_repeater_check_flow_prepare_ack(struct device *dev, struct hdcp_port_data *data, struct hdcp2_rep_send_receiverid_list *rep_topology, struct hdcp2_rep_send_ack *rep_send_ack)

验证下游拓扑并准备 rep_ack。

参数

struct device *dev

对应于 mei_cl_device 的设备

struct hdcp_port_data *data

Intel HW 特定 hdcp 数据

struct hdcp2_rep_send_receiverid_list *rep_topology

要验证的接收器 ID 列表

struct hdcp2_rep_send_ack *rep_send_ack

来自 ME FW 的中继器确认。

返回

成功返回 0,失败返回 <0

int mei_hdcp_verify_mprime(struct device *dev, struct hdcp_port_data *data, struct hdcp2_rep_stream_ready *stream_ready)

验证 mprime。

参数

struct device *dev

对应于 mei_cl_device 的设备

struct hdcp_port_data *data

Intel HW 特定 hdcp 数据

struct hdcp2_rep_stream_ready *stream_ready

用于 ME FW 验证的 RepeaterAuth_Stream_Ready 消息。

返回

成功返回 0,失败返回 <0

int mei_hdcp_enable_authentication(struct device *dev, struct hdcp_port_data *data)

通过 ME FW 将端口标记为已验证

参数

struct device *dev

对应于 mei_cl_device 的设备

struct hdcp_port_data *data

Intel HW 特定 hdcp 数据

返回

成功返回 0,失败返回 <0

int mei_hdcp_close_session(struct device *dev, struct hdcp_port_data *data)

关闭每个端口的 ME FW 的有线 HDCP Tx 会话。 这也会禁用端口的已验证状态。

参数

struct device *dev

对应于 mei_cl_device 的设备

struct hdcp_port_data *data

Intel HW 特定 hdcp 数据

返回

成功返回 0,失败返回 <0

int mei_hdcp_component_match(struct device *dev, int subcomponent, void *data)

用于匹配 mei hdcp 的比较函数。

参数

struct device *dev

主设备

int subcomponent

要匹配的子组件 (I915_COMPONENT_HDCP)

void *data

比较数据 (mei hdcp 设备)

描述

该函数检查驱动程序是否为 i915,子组件是否为 HDCP,以及 hdcp 的祖父和 i915 的父是否为同一 PCH 设备。

返回

  • 1 - 如果组件匹配

  • 0 - 否则