Home
last modified time | relevance | path

Searched full:hdcp (Results 1 – 25 of 129) sorted by relevance

123456

/linux/drivers/gpu/drm/amd/display/modules/hdcp/
H A Dhdcp_ddc.c26 #include "hdcp.h"
40 /* HDCP 1.4 */
58 /* HDCP 2.2 */
152 static enum mod_hdcp_status read(struct mod_hdcp *hdcp, in read() argument
165 if (is_dp_hdcp(hdcp)) { in read()
172 success = hdcp->config.ddc.funcs.read_dpcd(hdcp->config.ddc.handle, in read()
188 success = hdcp->config.ddc.funcs.read_i2c( in read()
189 hdcp->config.ddc.handle, in read()
199 static enum mod_hdcp_status read_repeatedly(struct mod_hdcp *hdcp, in read_repeatedly() argument
211 status = read(hdcp, msg_id, buf + data_offset, cur_size); in read_repeatedly()
[all …]
H A Dhdcp_log.h29 #define HDCP_LOG_ERR(hdcp, ...) DRM_DEBUG_KMS(__VA_ARGS__) argument
30 #define HDCP_LOG_VER(hdcp, ...) DRM_DEBUG_KMS(__VA_ARGS__) argument
31 #define HDCP_LOG_FSM(hdcp, ...) DRM_DEBUG_KMS(__VA_ARGS__) argument
32 #define HDCP_LOG_TOP(hdcp, ...) pr_debug("[HDCP_TOP]:"__VA_ARGS__) argument
33 #define HDCP_LOG_DDC(hdcp, ...) pr_debug("[HDCP_DDC]:"__VA_ARGS__) argument
36 #define HDCP_ERROR_TRACE(hdcp, status) \ argument
37 HDCP_LOG_ERR(hdcp, \
39 hdcp->config.index, \
41 mod_hdcp_state_id_to_str(hdcp->state.id), \
42 hdcp->state.stay_count)
[all …]
H A Dhdcp.c26 #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 …]
H A Dhdcp.h289 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 …]
H A Dhdcp1_execution.c26 #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 …]
H A Dhdcp_log.c27 #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 …]
H A Dhdcp_psp.c29 #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 …]
H A Dhdcp2_transition.c26 #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 …]
H A Dhdcp1_transition.c26 #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 …]
H A DMakefile23 # 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/drivers/gpu/drm/i915/display/
H A Dintel_hdcp.c36 struct intel_hdcp *hdcp, in intel_hdcp_adjust_hdcp_line_rekeying() argument
48 rekey_reg = TRANS_DDI_FUNC_CTL(display, hdcp->cpu_transcoder); in intel_hdcp_adjust_hdcp_line_rekeying()
52 rekey_reg = TRANS_DDI_FUNC_CTL(display, hdcp->cpu_transcoder); in intel_hdcp_adjust_hdcp_line_rekeying()
55 rekey_reg = CHICKEN_TRANS(display, hdcp->cpu_transcoder); in intel_hdcp_adjust_hdcp_line_rekeying()
92 * intel_hdcp_required_content_stream selects the most highest common possible HDCP
97 * HDCP 2.2 capable sink because of other sink are not capable of HDCP 2.2 in
162 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_prepare_streams() local
169 data->streams[0].stream_type = hdcp->content_type; in intel_hdcp_prepare_streams()
194 /* HDCP spec states that we must retry the bksv if it is invalid */ in intel_hdcp_read_valid_bksv()
214 const struct intel_hdcp_shim *shim = connector->hdcp.shim; in intel_hdcp_get_capability()
[all …]
H A Dintel_dp_hdcp.c45 struct intel_hdcp *hdcp = &dp->attached_connector->hdcp; in intel_dp_hdcp_wait_for_cp_irq() local
48 #define C (hdcp->cp_irq_count_cached != atomic_read(&hdcp->cp_irq_count)) in intel_dp_hdcp_wait_for_cp_irq()
49 ret = wait_event_interruptible_timeout(hdcp->cp_irq_queue, C, in intel_dp_hdcp_wait_for_cp_irq()
116 * For some reason the HDMI and DP HDCP specs call this register in intel_dp_hdcp_read_bstatus()
404 struct intel_hdcp *hdcp = &dp->attached_connector->hdcp; in intel_dp_hdcp2_wait_for_msg() local
409 if (msg_id == HDCP_2_2_AKE_SEND_HPRIME && !hdcp->is_paired) in intel_dp_hdcp2_wait_for_msg()
522 struct intel_hdcp *hdcp = &dp->attached_connector->hdcp; in intel_dp_hdcp2_read_msg() local
540 hdcp->cp_irq_count_cached = atomic_read(&hdcp->cp_irq_count); in intel_dp_hdcp2_read_msg()
657 * Some HDCP monitors act really shady by not giving the correct hdcp in _intel_dp_hdcp2_get_capability()
660 * declare a monitor not capable of HDCP 2.2. in _intel_dp_hdcp2_get_capability()
[all …]
/linux/drivers/gpu/drm/bridge/cadence/
H A Dcdns-mhdp8546-hdcp.c16 #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()
427 dev_err(mhdp->dev, "HDCP authentication failed (%d tries/%d)\n", in _cdns_mhdp_hdcp_enable()
438 mutex_lock(&mhdp->hdcp.mutex); in cdns_mhdp_hdcp_check_link()
439 if (mhdp->hdcp.value == DRM_MODE_CONTENT_PROTECTION_UNDESIRED) in cdns_mhdp_hdcp_check_link()
447 "[%s:%d] HDCP link failed, retrying authentication\n", in cdns_mhdp_hdcp_check_link()
452 mhdp->hdcp.value = DRM_MODE_CONTENT_PROTECTION_DESIRED; in cdns_mhdp_hdcp_check_link()
[all …]
/linux/include/drm/intel/
H A Di915_hdcp_interface.h17 * enum hdcp_port_type - HDCP port implementation type defined by ME/GSC 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/GSC FW classification
83 * @protocol: HDCP adaptation as per ME/GSC FW
119 * @close_hdcp_session: Close the Wired HDCP Tx session per port.
[all …]
/linux/drivers/gpu/drm/msm/hdmi/
H A Dhdmi_hdcp.c21 /* 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/drivers/gpu/drm/xe/display/
H A Dxe_hdcp_gsc.c80 /* allocate object of two page for HDCP command memory and store it */ in intel_hdcp_gsc_initialize_message()
87 drm_err(display->drm, "Failed to allocate bo for HDCP streaming command!\n"); in intel_hdcp_gsc_initialize_message()
124 display->hdcp.hdcp_message = hdcp_message; in intel_hdcp_gsc_hdcp2_init()
153 mutex_lock(&display->hdcp.hdcp_mutex); in intel_hdcp_gsc_init()
154 display->hdcp.arbiter = data; in intel_hdcp_gsc_init()
155 display->hdcp.arbiter->hdcp_dev = display->drm->dev; in intel_hdcp_gsc_init()
156 display->hdcp.arbiter->ops = &gsc_hdcp_ops; in intel_hdcp_gsc_init()
161 mutex_unlock(&display->hdcp.hdcp_mutex); in intel_hdcp_gsc_init()
169 display->hdcp.hdcp_message; in intel_hdcp_gsc_fini()
170 struct i915_hdcp_arbiter *arb = display->hdcp.arbiter; in intel_hdcp_gsc_fini()
[all …]
/linux/drivers/gpu/drm/bridge/analogix/
H A Danalogix-i2c-dptx.h15 /* 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/drivers/gpu/drm/amd/display/amdgpu_dm/
H A Damdgpu_dm_hdcp.c84 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()
182 /* Explicitly set the saved SRM as sysfs call will be after we already enabled hdcp in hdcp_update_display()
186 psp_set_srm(hdcp_work->hdcp.config.psp.handle, hdcp_work->srm, in hdcp_update_display()
209 mod_hdcp_update_display(&hdcp_w->hdcp, conn_index, &link_adjust, &display_adjust, &hdcp_w->output); in hdcp_update_display()
226 /* the removal of display will invoke auth reset -> hdcp destroy and in hdcp_remove_display()
239 mod_hdcp_remove_display(&hdcp_w->hdcp, aconnector->base.index, &hdcp_w->output); in hdcp_remove_display()
252 mod_hdcp_reset_connection(&hdcp_w->hdcp, &hdcp_w->output); in hdcp_reset_display()
284 mod_hdcp_process_event(&hdcp_work->hdcp, MOD_HDCP_EVENT_CALLBACK, in event_callback()
332 DRM_ERROR("HDCP state unknown! Setting it to DESIRED\n"); in event_property_update()
[all …]
H A Damdgpu_dm_hdcp.h30 #include "hdcp.h"
49 struct mod_hdcp hdcp; member
57 * hdcp perperties, like type, undesired, desired, enabled,
58 * will be lost. So, save hdcp properties into hdcp_work within
60 * plugged back with same display index, its hdcp properties
/linux/drivers/gpu/drm/amd/display/modules/inc/
H A Dmod_hdcp.h215 /* per link events dm has to notify to hdcp module */
263 /* a query structure for a display's hdcp information */
282 enum mod_hdcp_status mod_hdcp_setup(struct mod_hdcp *hdcp,
286 enum mod_hdcp_status mod_hdcp_teardown(struct mod_hdcp *hdcp);
289 enum mod_hdcp_status mod_hdcp_add_display(struct mod_hdcp *hdcp,
294 enum mod_hdcp_status mod_hdcp_remove_display(struct mod_hdcp *hdcp,
298 enum mod_hdcp_status mod_hdcp_update_display(struct mod_hdcp *hdcp,
304 /* called to query hdcp information on a specific index */
305 enum mod_hdcp_status mod_hdcp_query_display(struct mod_hdcp *hdcp,
309 enum mod_hdcp_status mod_hdcp_reset_connection(struct mod_hdcp *hdcp,
[all …]
/linux/drivers/gpu/drm/display/
H A Ddrm_hdcp_helper.c261 * @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/Documentation/devicetree/bindings/display/
H A Dallwinner,sun8i-a83t-dw-hdmi.yaml54 - 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/Documentation/driver-api/mei/
H A Dhdcp.rst3 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/include/drm/display/
H A Ddrm_hdcp.h14 /* 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
/linux/drivers/misc/mei/hdcp/
H A Dmei_hdcp.c5 * mei_hdcp.c: HDCP client driver for mei bus
14 * The mei_hdcp driver acts as a translation layer between HDCP 2.2
34 * @data: Intel HW specific hdcp data
97 * @data: Intel HW specific hdcp data
177 * @data: Intel HW specific hdcp data
234 * @data: Intel HW specific hdcp data
293 * @data: Intel HW specific hdcp data
349 * @data: Intel HW specific hdcp data
408 * @data: Intel HW specific hdcp data
467 * @data: Intel HW specific hdcp data
[all …]

123456