/Linux-v6.1/drivers/gpu/drm/amd/display/modules/hdcp/ |
D | hdcp_ddc.c | 26 #include "hdcp.h" 38 /* HDCP 1.4 */ 56 /* HDCP 2.2 */ 150 static enum mod_hdcp_status read(struct mod_hdcp *hdcp, in read() argument 159 if (is_dp_hdcp(hdcp)) { in read() 162 success = hdcp->config.ddc.funcs.read_dpcd(hdcp->config.ddc.handle, in read() 174 success = hdcp->config.ddc.funcs.read_i2c( in read() 175 hdcp->config.ddc.handle, in read() 185 static enum mod_hdcp_status read_repeatedly(struct mod_hdcp *hdcp, in read_repeatedly() argument 197 status = read(hdcp, msg_id, buf + data_offset, cur_size); in read_repeatedly() [all …]
|
D | hdcp_log.h | 30 #define HDCP_LOG_ERR(hdcp, ...) DRM_DEBUG_KMS(__VA_ARGS__) argument 31 #define HDCP_LOG_VER(hdcp, ...) DRM_DEBUG_KMS(__VA_ARGS__) argument 32 #define HDCP_LOG_FSM(hdcp, ...) DRM_DEBUG_KMS(__VA_ARGS__) argument 33 #define HDCP_LOG_TOP(hdcp, ...) pr_debug("[HDCP_TOP]:"__VA_ARGS__) argument 34 #define HDCP_LOG_DDC(hdcp, ...) pr_debug("[HDCP_DDC]:"__VA_ARGS__) argument 38 #define HDCP_ERROR_TRACE(hdcp, status) \ argument 39 HDCP_LOG_ERR(hdcp, \ 41 hdcp->config.index, \ 43 mod_hdcp_state_id_to_str(hdcp->state.id), \ 44 hdcp->state.stay_count) [all …]
|
D | hdcp.c | 26 #include "hdcp.h" 28 static void push_error_status(struct mod_hdcp *hdcp, in push_error_status() argument 31 struct mod_hdcp_trace *trace = &hdcp->connection.trace; in push_error_status() 35 trace->errors[trace->error_count].state_id = hdcp->state.id; in push_error_status() 37 HDCP_ERROR_TRACE(hdcp, status); in push_error_status() 40 if (is_hdcp1(hdcp)) { in push_error_status() 41 hdcp->connection.hdcp1_retry_count++; in push_error_status() 42 if (hdcp->connection.hdcp1_retry_count == MAX_NUM_OF_ATTEMPTS) in push_error_status() 43 hdcp->connection.link.adjust.hdcp1.disable = 1; in push_error_status() 44 } else if (is_hdcp2(hdcp)) { in push_error_status() [all …]
|
D | hdcp2_execution.c | 28 #include "hdcp.h" 30 static inline enum mod_hdcp_status check_receiver_id_list_ready(struct mod_hdcp *hdcp) in check_receiver_id_list_ready() argument 34 if (is_dp_hdcp(hdcp)) in check_receiver_id_list_ready() 35 is_ready = HDCP_2_2_DP_RXSTATUS_READY(hdcp->auth.msg.hdcp2.rxstatus_dp) ? 1 : 0; in check_receiver_id_list_ready() 37 is_ready = (HDCP_2_2_HDMI_RXSTATUS_READY(hdcp->auth.msg.hdcp2.rxstatus[1]) && in check_receiver_id_list_ready() 38 (HDCP_2_2_HDMI_RXSTATUS_MSG_SZ_HI(hdcp->auth.msg.hdcp2.rxstatus[1]) << 8 | in check_receiver_id_list_ready() 39 hdcp->auth.msg.hdcp2.rxstatus[0])) ? 1 : 0; in check_receiver_id_list_ready() 44 static inline enum mod_hdcp_status check_hdcp2_capable(struct mod_hdcp *hdcp) in check_hdcp2_capable() argument 48 if (is_dp_hdcp(hdcp)) in check_hdcp2_capable() 49 status = (hdcp->auth.msg.hdcp2.rxcaps_dp[0] == HDCP_2_2_RX_CAPS_VERSION_VAL) && in check_hdcp2_capable() [all …]
|
D | hdcp.h | 289 typedef enum mod_hdcp_status (*mod_hdcp_action)(struct mod_hdcp *hdcp); 292 enum mod_hdcp_status *status, struct mod_hdcp *hdcp, char *str); 293 enum mod_hdcp_status mod_hdcp_hdcp1_execution(struct mod_hdcp *hdcp, 296 enum mod_hdcp_status mod_hdcp_hdcp1_dp_execution(struct mod_hdcp *hdcp, 299 enum mod_hdcp_status mod_hdcp_hdcp1_transition(struct mod_hdcp *hdcp, 303 enum mod_hdcp_status mod_hdcp_hdcp1_dp_transition(struct mod_hdcp *hdcp, 309 enum mod_hdcp_status mod_hdcp_hdcp2_execution(struct mod_hdcp *hdcp, 312 enum mod_hdcp_status mod_hdcp_hdcp2_dp_execution(struct mod_hdcp *hdcp, 315 enum mod_hdcp_status mod_hdcp_hdcp2_transition(struct mod_hdcp *hdcp, 319 enum mod_hdcp_status mod_hdcp_hdcp2_dp_transition(struct mod_hdcp *hdcp, [all …]
|
D | hdcp1_execution.c | 26 #include "hdcp.h" 28 static inline enum mod_hdcp_status validate_bksv(struct mod_hdcp *hdcp) in validate_bksv() argument 34 memcpy(bksv, hdcp->auth.msg.hdcp1.bksv, sizeof(hdcp->auth.msg.hdcp1.bksv)); in validate_bksv() 45 static inline enum mod_hdcp_status check_ksv_ready(struct mod_hdcp *hdcp) in check_ksv_ready() argument 47 if (is_dp_hdcp(hdcp)) in check_ksv_ready() 48 return (hdcp->auth.msg.hdcp1.bstatus & DP_BSTATUS_READY) ? in check_ksv_ready() 51 return (hdcp->auth.msg.hdcp1.bcaps & DRM_HDCP_DDC_BCAPS_KSV_FIFO_READY) ? in check_ksv_ready() 56 static inline enum mod_hdcp_status check_hdcp_capable_dp(struct mod_hdcp *hdcp) in check_hdcp_capable_dp() argument 58 return (hdcp->auth.msg.hdcp1.bcaps & DP_BCAPS_HDCP_CAPABLE) ? in check_hdcp_capable_dp() 63 static inline enum mod_hdcp_status check_r0p_available_dp(struct mod_hdcp *hdcp) in check_r0p_available_dp() argument [all …]
|
D | hdcp_log.c | 27 #include "hdcp.h" 54 void mod_hdcp_log_ddc_trace(struct mod_hdcp *hdcp) in mod_hdcp_log_ddc_trace() argument 56 if (is_hdcp1(hdcp)) { in mod_hdcp_log_ddc_trace() 57 HDCP_DDC_READ_TRACE(hdcp, "BKSV", hdcp->auth.msg.hdcp1.bksv, in mod_hdcp_log_ddc_trace() 58 sizeof(hdcp->auth.msg.hdcp1.bksv)); in mod_hdcp_log_ddc_trace() 59 HDCP_DDC_READ_TRACE(hdcp, "BCAPS", &hdcp->auth.msg.hdcp1.bcaps, in mod_hdcp_log_ddc_trace() 60 sizeof(hdcp->auth.msg.hdcp1.bcaps)); in mod_hdcp_log_ddc_trace() 61 HDCP_DDC_READ_TRACE(hdcp, "BSTATUS", in mod_hdcp_log_ddc_trace() 62 (uint8_t *)&hdcp->auth.msg.hdcp1.bstatus, in mod_hdcp_log_ddc_trace() 63 sizeof(hdcp->auth.msg.hdcp1.bstatus)); in mod_hdcp_log_ddc_trace() [all …]
|
D | hdcp_psp.c | 29 #include "hdcp.h" 34 static void hdcp2_message_init(struct mod_hdcp *hdcp, in hdcp2_message_init() argument 37 in->session_handle = hdcp->auth.id; in hdcp2_message_init() 49 struct mod_hdcp *hdcp, uint8_t index) in remove_display_from_topology_v2() argument 51 struct psp_context *psp = hdcp->config.psp.handle; in remove_display_from_topology_v2() 54 get_active_display_at_index(hdcp, index); in remove_display_from_topology_v2() 77 HDCP_TOP_REMOVE_DISPLAY_TRACE(hdcp, display->index); in remove_display_from_topology_v2() 85 struct mod_hdcp *hdcp, uint8_t index) in remove_display_from_topology_v3() argument 87 struct psp_context *psp = hdcp->config.psp.handle; in remove_display_from_topology_v3() 90 get_active_display_at_index(hdcp, index); in remove_display_from_topology_v3() [all …]
|
D | hdcp2_transition.c | 26 #include "hdcp.h" 28 enum mod_hdcp_status mod_hdcp_hdcp2_transition(struct mod_hdcp *hdcp, in mod_hdcp_hdcp2_transition() argument 34 struct mod_hdcp_connection *conn = &hdcp->connection; in mod_hdcp_hdcp2_transition() 35 struct mod_hdcp_link_adjustment *adjust = &hdcp->connection.link.adjust; in mod_hdcp_hdcp2_transition() 37 switch (current_state(hdcp)) { in mod_hdcp_hdcp2_transition() 43 set_state_id(hdcp, output, HDCP_INITIALIZED); in mod_hdcp_hdcp2_transition() 46 set_state_id(hdcp, output, H2_A1_SEND_AKE_INIT); in mod_hdcp_hdcp2_transition() 60 set_watchdog_in_ms(hdcp, 100, output); in mod_hdcp_hdcp2_transition() 62 set_state_id(hdcp, output, H2_A1_VALIDATE_AKE_CERT); in mod_hdcp_hdcp2_transition() 69 /* some hdmi receivers are not ready for HDCP in mod_hdcp_hdcp2_transition() [all …]
|
D | hdcp1_transition.c | 26 #include "hdcp.h" 28 enum mod_hdcp_status mod_hdcp_hdcp1_transition(struct mod_hdcp *hdcp, in mod_hdcp_hdcp1_transition() argument 34 struct mod_hdcp_connection *conn = &hdcp->connection; in mod_hdcp_hdcp1_transition() 35 struct mod_hdcp_link_adjustment *adjust = &hdcp->connection.link.adjust; in mod_hdcp_hdcp1_transition() 37 switch (current_state(hdcp)) { in mod_hdcp_hdcp1_transition() 42 increment_stay_counter(hdcp); in mod_hdcp_hdcp1_transition() 46 set_state_id(hdcp, output, H1_A1_EXCHANGE_KSVS); in mod_hdcp_hdcp1_transition() 64 set_state_id(hdcp, output, in mod_hdcp_hdcp1_transition() 87 set_watchdog_in_ms(hdcp, 5000, output); in mod_hdcp_hdcp1_transition() 88 set_state_id(hdcp, output, H1_A8_WAIT_FOR_READY); in mod_hdcp_hdcp1_transition() [all …]
|
D | Makefile | 23 # Makefile for the 'hdcp' sub-module of DAL. 26 HDCP = hdcp_ddc.o hdcp_log.o hdcp_psp.o hdcp.o \ macro 30 AMD_DAL_HDCP = $(addprefix $(AMDDALPATH)/modules/hdcp/,$(HDCP))
|
/Linux-v6.1/drivers/gpu/drm/i915/display/ |
D | intel_hdcp.c | 61 * intel_hdcp_required_content_stream selects the most highest common possible HDCP 66 * HDCP 2.2 capable sink because of other sink are not capable of HDCP 2.2 in 128 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_prepare_streams() local 133 data->streams[0].stream_type = hdcp->content_type; in intel_hdcp_prepare_streams() 163 /* HDCP spec states that we must retry the bksv if it is invalid */ in intel_hdcp_read_valid_bksv() 183 const struct intel_hdcp_shim *shim = connector->hdcp.shim; in intel_hdcp_capable() 205 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp2_capable() local 209 if (!hdcp->hdcp2_supported) in intel_hdcp2_capable() 213 mutex_lock(&dev_priv->display.hdcp.comp_mutex); in intel_hdcp2_capable() 214 if (!dev_priv->display.hdcp.comp_added || !dev_priv->display.hdcp.master) { in intel_hdcp2_capable() [all …]
|
D | intel_dp_hdcp.c | 46 static void intel_dp_hdcp_wait_for_cp_irq(struct intel_hdcp *hdcp, int timeout) in intel_dp_hdcp_wait_for_cp_irq() argument 50 #define C (hdcp->cp_irq_count_cached != atomic_read(&hdcp->cp_irq_count)) in intel_dp_hdcp_wait_for_cp_irq() 51 ret = wait_event_interruptible_timeout(hdcp->cp_irq_queue, C, in intel_dp_hdcp_wait_for_cp_irq() 117 * For some reason the HDMI and DP HDCP specs call this register in intel_dp_hdcp_read_bstatus() 398 struct intel_hdcp *hdcp = &dp->attached_connector->hdcp; in intel_dp_hdcp2_wait_for_msg() local 403 if (msg_id == HDCP_2_2_AKE_SEND_HPRIME && !hdcp->is_paired) in intel_dp_hdcp2_wait_for_msg() 420 intel_dp_hdcp_wait_for_cp_irq(hdcp, timeout); in intel_dp_hdcp2_wait_for_msg() 509 struct intel_hdcp *hdcp = &dp->attached_connector->hdcp; in intel_dp_hdcp2_read_msg() local 527 hdcp->cp_irq_count_cached = atomic_read(&hdcp->cp_irq_count); in intel_dp_hdcp2_read_msg() 678 struct intel_hdcp *hdcp = &connector->hdcp; in intel_dp_mst_toggle_hdcp_stream_select() local [all …]
|
/Linux-v6.1/drivers/gpu/drm/bridge/cadence/ |
D | cdns-mhdp8546-hdcp.c | 16 #include "cdns-mhdp8546-hdcp.h" 165 dev_dbg(mhdp->dev, "HDCP Error = %d", err); in cdns_mhdp_hdcp_handle_status() 339 dev_dbg(mhdp->dev, "HDCP: Start 2.2 Authentication\n"); in cdns_mhdp_hdcp_auth_22() 363 dev_dbg(mhdp->dev, "HDCP: Starting 1.4 Authentication\n"); in cdns_mhdp_hdcp_auth_14() 396 dev_dbg(mhdp->dev, "[%s:%d] HDCP is being disabled...\n", in _cdns_mhdp_hdcp_disable() 426 dev_err(mhdp->dev, "HDCP authentication failed (%d tries/%d)\n", in _cdns_mhdp_hdcp_enable() 437 mutex_lock(&mhdp->hdcp.mutex); in cdns_mhdp_hdcp_check_link() 438 if (mhdp->hdcp.value == DRM_MODE_CONTENT_PROTECTION_UNDESIRED) in cdns_mhdp_hdcp_check_link() 446 "[%s:%d] HDCP link failed, retrying authentication\n", in cdns_mhdp_hdcp_check_link() 451 mhdp->hdcp.value = DRM_MODE_CONTENT_PROTECTION_DESIRED; in cdns_mhdp_hdcp_check_link() [all …]
|
/Linux-v6.1/drivers/misc/mei/hdcp/ |
D | mei_hdcp.h | 14 /* me_hdcp_status: Enumeration of all HDCP Status Codes */ 51 /* New status for HDCP 2.1 */ 54 /* New status code for HDCP 2.2 Rx */ 84 /* hdcp capable bit is not set in rx_caps(error is unique to DP) */ 137 /* hdcp_command_id: Enumeration of all WIRED HDCP Command IDs */ 144 /* The wired HDCP Tx commands */ 170 /* HDCP HECI message header. All header values are little endian. */ 184 /* Uniquely identifies the hdcp port being addressed for a given command. */ 198 /* HECI struct for integrated wired HDCP Tx session initiation. */ 212 /* HECI struct for ending an integrated wired HDCP Tx session. */ [all …]
|
D | mei_hdcp.c | 5 * mei_hdcp.c: HDCP client driver for mei bus 14 * The mei_hdcp driver acts as a translation layer between HDCP 2.2 33 * @data: Intel HW specific hdcp data 96 * @data: Intel HW specific hdcp data 176 * @data: Intel HW specific hdcp data 233 * @data: Intel HW specific hdcp data 292 * @data: Intel HW specific hdcp data 348 * @data: Intel HW specific hdcp data 407 * @data: Intel HW specific hdcp data 466 * @data: Intel HW specific hdcp data [all …]
|
/Linux-v6.1/drivers/gpu/drm/msm/hdmi/ |
D | hdmi_hdcp.c | 21 /* QFPROM Registers for HDMI/HDCP */ 217 DBG("hdcp irq %x", hdcp_int_status); in msm_hdmi_hdcp_irq() 296 * Indicates that the last HDCP HW DDC transfer failed. in msm_reset_hdcp_ddc_failures() 297 * This occurs when a transfer is attempted with HDCP DDC in msm_reset_hdcp_ddc_failures() 316 pr_info("%s: Unable to clear HDCP DDC Failure\n", in msm_reset_hdcp_ddc_failures() 319 /* Re-Enable HDCP DDC */ in msm_reset_hdcp_ddc_failures() 404 DBG("HDCP REAUTH WORK"); in msm_hdmi_hdcp_reauth_work() 407 * This is needed to reset the HDCP cipher engine so that when we in msm_hdmi_hdcp_reauth_work() 416 /* Disable HDCP interrupts */ in msm_hdmi_hdcp_reauth_work() 429 /* Disable encryption and disable the HDCP block */ in msm_hdmi_hdcp_reauth_work() [all …]
|
/Linux-v6.1/drivers/gpu/drm/amd/display/amdgpu_dm/ |
D | amdgpu_dm_hdcp.c | 83 DRM_WARN("Failed to get hdcp srm. HDCP TA is not initialized."); in psp_get_srm() 109 DRM_WARN("Failed to get hdcp srm. HDCP TA is not initialized."); in psp_set_srm() 178 mod_hdcp_query_display(&hdcp_w->hdcp, aconnector->base.index, &query); in hdcp_update_display() 182 mod_hdcp_remove_display(&hdcp_w->hdcp, aconnector->base.index, &hdcp_w->output); in hdcp_update_display() 187 /* Explicitly set the saved SRM as sysfs call will be after we already enabled hdcp in hdcp_update_display() 191 psp_set_srm(hdcp_work->hdcp.config.psp.handle, hdcp_work->srm, hdcp_work->srm_size, in hdcp_update_display() 214 mod_hdcp_add_display(&hdcp_w->hdcp, link, display, &hdcp_w->output); in hdcp_update_display() 230 /* the removal of display will invoke auth reset -> hdcp destroy and in hdcp_remove_display() 242 mod_hdcp_remove_display(&hdcp_w->hdcp, aconnector->base.index, &hdcp_w->output); in hdcp_remove_display() 253 mod_hdcp_reset_connection(&hdcp_w->hdcp, &hdcp_w->output); in hdcp_reset_display() [all …]
|
/Linux-v6.1/drivers/gpu/drm/bridge/analogix/ |
D | analogix-i2c-dptx.h | 15 /* HDCP Status Register */ 20 /* HDCP Control Register 0 */ 29 /* HDCP Function Enabled */ 32 /* HDCP Receiver BSTATUS Register 0 */ 34 /* HDCP Receiver BSTATUS Register 1 */ 37 /* HDCP Embedded "Blue Screen" Content Registers */ 42 /* HDCP Wait R0 Timing Register */ 45 /* HDCP Link Integrity Check Timer Register */ 48 /* HDCP Repeater Ready Wait Timer Register */ 51 /* HDCP Auto Timer Register */ [all …]
|
/Linux-v6.1/include/drm/ |
D | i915_mei_hdcp_interface.h | 17 * enum hdcp_port_type - HDCP port implementation type defined by ME FW 18 * @HDCP_PORT_TYPE_INVALID: Invalid hdcp port type 33 * enum hdcp_wired_protocol - HDCP adaptation used on the port 34 * @HDCP_PROTOCOL_INVALID: Invalid HDCP adaptation protocol 35 * @HDCP_PROTOCOL_HDMI: HDMI adaptation of HDCP used on the port 36 * @HDCP_PROTOCOL_DP: DP adaptation of HDCP used on the port 79 * struct hdcp_port_data - intel specific HDCP port data 82 * @port_type: HDCP port type as per ME FW classification 83 * @protocol: HDCP adaptation as per ME FW 119 * @close_hdcp_session: Close the Wired HDCP Tx session per port.
|
/Linux-v6.1/drivers/gpu/drm/amd/display/modules/inc/ |
D | mod_hdcp.h | 214 /* per link events dm has to notify to hdcp module */ 262 /* a query structure for a display's hdcp information */ 281 enum mod_hdcp_status mod_hdcp_setup(struct mod_hdcp *hdcp, 285 enum mod_hdcp_status mod_hdcp_teardown(struct mod_hdcp *hdcp); 288 enum mod_hdcp_status mod_hdcp_add_display(struct mod_hdcp *hdcp, 293 enum mod_hdcp_status mod_hdcp_remove_display(struct mod_hdcp *hdcp, 297 enum mod_hdcp_status mod_hdcp_update_display(struct mod_hdcp *hdcp, 303 /* called to query hdcp information on a specific index */ 304 enum mod_hdcp_status mod_hdcp_query_display(struct mod_hdcp *hdcp, 308 enum mod_hdcp_status mod_hdcp_reset_connection(struct mod_hdcp *hdcp, [all …]
|
/Linux-v6.1/drivers/gpu/drm/display/ |
D | drm_hdcp_helper.c | 261 * @drm_dev: drm_device for which HDCP revocation check is requested 262 * @ksvs: List of KSVs (HDCP receiver IDs) 265 * This function reads the HDCP System renewability Message(SRM Table) 266 * from userspace as a firmware and parses it for the revoked HDCP 275 * 1. Renewability chapter on 55th page of HDCP 1.4 specification 276 …* https://www.digital-cp.com/sites/default/files/specifications/HDCP%20Specification%20Rev1_4_Secu… 277 * 2. Renewability chapter on 63rd page of HDCP 2.2 specification 278 …* https://www.digital-cp.com/sites/default/files/specifications/HDCP%20on%20HDMI%20Specification%2… 319 { DRM_MODE_HDCP_CONTENT_TYPE0, "HDCP Type0" }, 320 { DRM_MODE_HDCP_CONTENT_TYPE1, "HDCP Type1" }, [all …]
|
/Linux-v6.1/Documentation/driver-api/mei/ |
D | hdcp.rst | 3 HDCP: 11 according the HDCP 2.2 spec. The Intel graphics sends the created blob 19 the HDCP encryption keys to Intel graphics hardware. 24 .. kernel-doc:: drivers/misc/mei/hdcp/mei_hdcp.c 30 .. kernel-doc:: drivers/misc/mei/hdcp/mei_hdcp.c
|
/Linux-v6.1/Documentation/devicetree/bindings/display/ |
D | allwinner,sun8i-a83t-dw-hdmi.yaml | 54 - description: HDCP Clock 55 - description: HDCP Bus Clock 64 - const: hdcp 65 - const: hdcp-bus 71 - description: HDCP Reset 77 - const: hdcp 227 clock-names = "iahb", "isfr", "tmds", "cec", "hdcp", 228 "hdcp-bus"; 230 reset-names = "ctrl", "hdcp";
|
/Linux-v6.1/include/drm/display/ |
D | drm_hdcp.h | 14 /* Period of hdcp checks (to ensure we're still authenticated) */ 29 /* Slave address for the HDCP registers in the receiver */ 35 /* HDCP register offsets for HDMI/DVI devices */ 54 * - Type0: Can be transmitted with HDCP 1.4+ 55 * - Type1: Can be transmitted with HDCP 2.2+ 139 * The TxCaps field specified in the HDCP HDMI, DP specs 146 /* Reserved for HDCP and DP Spec. Read as Zero */ 257 * Helper functions to convert 24bit big endian hdcp sequence number to
|