Lines Matching full:hdcp

62  * intel_hdcp_required_content_stream selects the most highest common possible HDCP
67 * HDCP 2.2 capable sink because of other sink are not capable of HDCP 2.2 in
97 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_prepare_streams() local
100 data->streams[0].stream_type = hdcp->content_type; in intel_hdcp_prepare_streams()
126 /* HDCP spec states that we must retry the bksv if it is invalid */ in intel_hdcp_read_valid_bksv()
146 const struct intel_hdcp_shim *shim = connector->hdcp.shim; in intel_hdcp_capable()
168 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp2_capable() local
172 if (!hdcp->hdcp2_supported) in intel_hdcp2_capable()
188 mutex_lock(&i915->display.hdcp.hdcp_mutex); in intel_hdcp2_capable()
189 if (!i915->display.hdcp.comp_added || !i915->display.hdcp.arbiter) { in intel_hdcp2_capable()
190 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in intel_hdcp2_capable()
193 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in intel_hdcp2_capable()
196 hdcp->shim->hdcp_2_2_capable(dig_port, &capable); in intel_hdcp2_capable()
258 * Another req for hdcp key loadability is enabled state of pll for in hdcp_key_loadable()
291 * Initiate loading the HDCP key from fuses. in intel_hdcp_load_keys()
293 * BXT+ platforms, HDCP key needs to be loaded by SW. Only display in intel_hdcp_load_keys()
302 "Failed to initiate HDCP key load (%d)\n", in intel_hdcp_load_keys()
385 enum transcoder cpu_transcoder = connector->hdcp.cpu_transcoder; in intel_hdcp_validate_v_prime()
614 drm_dbg_kms(&i915->drm, "SHA-1 mismatch, HDCP failed\n"); in intel_hdcp_validate_v_prime()
621 /* Implements Part 2 of the HDCP authorization procedure */
627 const struct intel_hdcp_shim *shim = connector->hdcp.shim; in intel_hdcp_auth_downstream()
650 * the HDCP encryption. That implies that repeater can't have its own in intel_hdcp_auth_downstream()
697 drm_dbg_kms(&i915->drm, "HDCP is enabled (%d downstream devices)\n", in intel_hdcp_auth_downstream()
705 /* Implements Part 1 of the HDCP authorization procedure */
710 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_auth() local
711 const struct intel_hdcp_shim *shim = hdcp->shim; in intel_hdcp_auth()
712 enum transcoder cpu_transcoder = connector->hdcp.cpu_transcoder; in intel_hdcp_auth()
731 * Detects whether the display is HDCP capable. Although we check for in intel_hdcp_auth()
732 * valid Bksv below, the HDCP over DP spec requires that we check in intel_hdcp_auth()
733 * whether the display supports HDCP before we write An. For HDMI in intel_hdcp_auth()
742 "Panel is not HDCP capable\n"); in intel_hdcp_auth()
824 * DP HDCP Spec mandates the two more reattempt to read R0, incase in intel_hdcp_auth()
863 drm_err(&i915->drm, "[%s:%d] Failed to enable HDCP 1.4 stream enc\n", in intel_hdcp_auth()
867 drm_dbg_kms(&i915->drm, "HDCP 1.4 transcoder: %s stream encrypted\n", in intel_hdcp_auth()
868 transcoder_name(hdcp->stream_transcoder)); in intel_hdcp_auth()
874 drm_dbg_kms(&i915->drm, "HDCP is enabled (no repeater present)\n"); in intel_hdcp_auth()
882 struct intel_hdcp *hdcp = &connector->hdcp; in _intel_hdcp_disable() local
884 enum transcoder cpu_transcoder = hdcp->cpu_transcoder; in _intel_hdcp_disable()
888 drm_dbg_kms(&i915->drm, "[%s:%d] HDCP is being disabled...\n", in _intel_hdcp_disable()
891 if (hdcp->shim->stream_encryption) { in _intel_hdcp_disable()
892 ret = hdcp->shim->stream_encryption(connector, false); in _intel_hdcp_disable()
894 drm_err(&i915->drm, "[%s:%d] Failed to disable HDCP 1.4 stream enc\n", in _intel_hdcp_disable()
898 drm_dbg_kms(&i915->drm, "HDCP 1.4 transcoder: %s stream encryption disabled\n", in _intel_hdcp_disable()
899 transcoder_name(hdcp->stream_transcoder)); in _intel_hdcp_disable()
901 * If there are other connectors on this port using HDCP, in _intel_hdcp_disable()
902 * don't disable it until it disabled HDCP encryption for in _intel_hdcp_disable()
909 hdcp->hdcp_encrypted = false; in _intel_hdcp_disable()
915 "Failed to disable HDCP, timeout clearing status\n"); in _intel_hdcp_disable()
923 ret = hdcp->shim->toggle_signalling(dig_port, cpu_transcoder, false); in _intel_hdcp_disable()
925 drm_err(&i915->drm, "Failed to disable HDCP signalling\n"); in _intel_hdcp_disable()
929 drm_dbg_kms(&i915->drm, "HDCP is disabled\n"); in _intel_hdcp_disable()
936 struct intel_hdcp *hdcp = &connector->hdcp; in _intel_hdcp_enable() local
939 drm_dbg_kms(&i915->drm, "[%s:%d] HDCP is being enabled...\n", in _intel_hdcp_enable()
943 drm_err(&i915->drm, "HDCP key Load is not possible\n"); in _intel_hdcp_enable()
954 drm_err(&i915->drm, "Could not load HDCP keys, (%d)\n", in _intel_hdcp_enable()
959 /* Incase of authentication failures, HDCP spec expects reauth. */ in _intel_hdcp_enable()
963 hdcp->hdcp_encrypted = true; in _intel_hdcp_enable()
967 drm_dbg_kms(&i915->drm, "HDCP Auth failure (%d)\n", ret); in _intel_hdcp_enable()
969 /* Ensuring HDCP encryption and signalling are stopped. */ in _intel_hdcp_enable()
974 "HDCP authentication failed (%d tries/%d)\n", tries, ret); in _intel_hdcp_enable()
978 static struct intel_connector *intel_hdcp_to_connector(struct intel_hdcp *hdcp) in intel_hdcp_to_connector() argument
980 return container_of(hdcp, struct intel_connector, hdcp); in intel_hdcp_to_connector()
988 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_update_value() local
991 drm_WARN_ON(connector->base.dev, !mutex_is_locked(&hdcp->mutex)); in intel_hdcp_update_value()
993 if (hdcp->value == value) in intel_hdcp_update_value()
998 if (hdcp->value == DRM_MODE_CONTENT_PROTECTION_ENABLED) { in intel_hdcp_update_value()
1005 hdcp->value = value; in intel_hdcp_update_value()
1008 if (!queue_work(i915->unordered_wq, &hdcp->prop_work)) in intel_hdcp_update_value()
1013 /* Implements Part 3 of the HDCP authorization procedure */
1018 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_check_link() local
1023 mutex_lock(&hdcp->mutex); in intel_hdcp_check_link()
1026 cpu_transcoder = hdcp->cpu_transcoder; in intel_hdcp_check_link()
1029 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_ENABLED || in intel_hdcp_check_link()
1030 !hdcp->hdcp_encrypted) { in intel_hdcp_check_link()
1038 "%s:%d HDCP link stopped encryption,%x\n", in intel_hdcp_check_link()
1048 if (hdcp->shim->check_link(dig_port, connector)) { in intel_hdcp_check_link()
1049 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_UNDESIRED) { in intel_hdcp_check_link()
1057 "[%s:%d] HDCP link failed, retrying authentication\n", in intel_hdcp_check_link()
1062 drm_err(&i915->drm, "Failed to disable hdcp (%d)\n", ret); in intel_hdcp_check_link()
1071 drm_err(&i915->drm, "Failed to enable hdcp (%d)\n", ret); in intel_hdcp_check_link()
1080 mutex_unlock(&hdcp->mutex); in intel_hdcp_check_link()
1086 struct intel_hdcp *hdcp = container_of(work, struct intel_hdcp, in intel_hdcp_prop_work() local
1088 struct intel_connector *connector = intel_hdcp_to_connector(hdcp); in intel_hdcp_prop_work()
1092 mutex_lock(&hdcp->mutex); in intel_hdcp_prop_work()
1097 * we're running just after hdcp has been disabled, so just exit in intel_hdcp_prop_work()
1099 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_UNDESIRED) in intel_hdcp_prop_work()
1101 hdcp->value); in intel_hdcp_prop_work()
1103 mutex_unlock(&hdcp->mutex); in intel_hdcp_prop_work()
1125 mutex_lock(&i915->display.hdcp.hdcp_mutex); in hdcp2_prepare_ake_init()
1126 arbiter = i915->display.hdcp.arbiter; in hdcp2_prepare_ake_init()
1129 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_prepare_ake_init()
1137 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_prepare_ake_init()
1155 mutex_lock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_rx_cert_prepare_km()
1156 arbiter = i915->display.hdcp.arbiter; in hdcp2_verify_rx_cert_prepare_km()
1159 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_rx_cert_prepare_km()
1169 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_rx_cert_prepare_km()
1183 mutex_lock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_hprime()
1184 arbiter = i915->display.hdcp.arbiter; in hdcp2_verify_hprime()
1187 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_hprime()
1194 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_hprime()
1209 mutex_lock(&i915->display.hdcp.hdcp_mutex); in hdcp2_store_pairing_info()
1210 arbiter = i915->display.hdcp.arbiter; in hdcp2_store_pairing_info()
1213 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_store_pairing_info()
1221 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_store_pairing_info()
1236 mutex_lock(&i915->display.hdcp.hdcp_mutex); in hdcp2_prepare_lc_init()
1237 arbiter = i915->display.hdcp.arbiter; in hdcp2_prepare_lc_init()
1240 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_prepare_lc_init()
1248 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_prepare_lc_init()
1263 mutex_lock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_lprime()
1264 arbiter = i915->display.hdcp.arbiter; in hdcp2_verify_lprime()
1267 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_lprime()
1275 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_lprime()
1289 mutex_lock(&i915->display.hdcp.hdcp_mutex); in hdcp2_prepare_skey()
1290 arbiter = i915->display.hdcp.arbiter; in hdcp2_prepare_skey()
1293 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_prepare_skey()
1301 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_prepare_skey()
1318 mutex_lock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_rep_topology_prepare_ack()
1319 arbiter = i915->display.hdcp.arbiter; in hdcp2_verify_rep_topology_prepare_ack()
1322 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_rep_topology_prepare_ack()
1333 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_rep_topology_prepare_ack()
1348 mutex_lock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_mprime()
1349 arbiter = i915->display.hdcp.arbiter; in hdcp2_verify_mprime()
1352 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_mprime()
1359 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_verify_mprime()
1372 mutex_lock(&i915->display.hdcp.hdcp_mutex); in hdcp2_authenticate_port()
1373 arbiter = i915->display.hdcp.arbiter; in hdcp2_authenticate_port()
1376 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_authenticate_port()
1382 drm_dbg_kms(&i915->drm, "Enable hdcp auth failed. %d\n", in hdcp2_authenticate_port()
1384 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_authenticate_port()
1396 mutex_lock(&i915->display.hdcp.hdcp_mutex); in hdcp2_close_session()
1397 arbiter = i915->display.hdcp.arbiter; in hdcp2_close_session()
1400 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_close_session()
1406 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in hdcp2_close_session()
1421 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_authentication_key_exchange() local
1429 const struct intel_hdcp_shim *shim = hdcp->shim; in hdcp2_authentication_key_exchange()
1434 hdcp->seq_num_v = 0; in hdcp2_authentication_key_exchange()
1435 hdcp->seq_num_m = 0; in hdcp2_authentication_key_exchange()
1456 hdcp->is_repeater = HDCP_2_2_RX_REPEATER(msgs.send_cert.rx_caps[2]); in hdcp2_authentication_key_exchange()
1470 &hdcp->is_paired, in hdcp2_authentication_key_exchange()
1488 if (!hdcp->is_paired) { in hdcp2_authentication_key_exchange()
1500 hdcp->is_paired = true; in hdcp2_authentication_key_exchange()
1509 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_locality_check() local
1514 const struct intel_hdcp_shim *shim = hdcp->shim; in hdcp2_locality_check()
1545 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_session_key_exchange() local
1553 ret = hdcp->shim->write_2_2_msg(dig_port, &send_eks, in hdcp2_session_key_exchange()
1566 struct intel_hdcp *hdcp = &connector->hdcp; in _hdcp2_propagate_stream_management_info() local
1571 const struct intel_hdcp_shim *shim = hdcp->shim; in _hdcp2_propagate_stream_management_info()
1574 if (connector->hdcp.seq_num_m > HDCP_2_2_SEQ_NUM_MAX) in _hdcp2_propagate_stream_management_info()
1579 drm_hdcp_cpu_to_be24(msgs.stream_manage.seq_num_m, hdcp->seq_num_m); in _hdcp2_propagate_stream_management_info()
1601 data->seq_num_m = hdcp->seq_num_m; in _hdcp2_propagate_stream_management_info()
1606 hdcp->seq_num_m++; in _hdcp2_propagate_stream_management_info()
1616 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_authenticate_repeater_topology() local
1621 const struct intel_hdcp_shim *shim = hdcp->shim; in hdcp2_authenticate_repeater_topology()
1641 * device that is only HDCP 1.x or Legacy HDCP 2.0/2.1 compliant. in hdcp2_authenticate_repeater_topology()
1651 if (!hdcp->hdcp2_encrypted && seq_num_v) { in hdcp2_authenticate_repeater_topology()
1657 if (seq_num_v < hdcp->seq_num_v) { in hdcp2_authenticate_repeater_topology()
1678 hdcp->seq_num_v = seq_num_v; in hdcp2_authenticate_repeater_topology()
1691 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_authenticate_sink() local
1692 const struct intel_hdcp_shim *shim = hdcp->shim; in hdcp2_authenticate_sink()
1716 hdcp->is_repeater, in hdcp2_authenticate_sink()
1717 hdcp->content_type); in hdcp2_authenticate_sink()
1722 if (hdcp->is_repeater) { in hdcp2_authenticate_sink()
1739 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_enable_stream_encryption() local
1740 enum transcoder cpu_transcoder = hdcp->cpu_transcoder; in hdcp2_enable_stream_encryption()
1746 drm_err(&i915->drm, "[%s:%d] HDCP 2.2 Link is not encrypted\n", in hdcp2_enable_stream_encryption()
1752 if (hdcp->shim->stream_2_2_encryption) { in hdcp2_enable_stream_encryption()
1753 ret = hdcp->shim->stream_2_2_encryption(connector, true); in hdcp2_enable_stream_encryption()
1755 drm_err(&i915->drm, "[%s:%d] Failed to enable HDCP 2.2 stream enc\n", in hdcp2_enable_stream_encryption()
1759 drm_dbg_kms(&i915->drm, "HDCP 2.2 transcoder: %s stream encrypted\n", in hdcp2_enable_stream_encryption()
1760 transcoder_name(hdcp->stream_transcoder)); in hdcp2_enable_stream_encryption()
1779 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_enable_encryption() local
1781 enum transcoder cpu_transcoder = hdcp->cpu_transcoder; in hdcp2_enable_encryption()
1787 if (hdcp->shim->toggle_signalling) { in hdcp2_enable_encryption()
1788 ret = hdcp->shim->toggle_signalling(dig_port, cpu_transcoder, in hdcp2_enable_encryption()
1792 "Failed to enable HDCP signalling. %d\n", in hdcp2_enable_encryption()
1818 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_disable_encryption() local
1820 enum transcoder cpu_transcoder = hdcp->cpu_transcoder; in hdcp2_disable_encryption()
1837 if (hdcp->shim->toggle_signalling) { in hdcp2_disable_encryption()
1838 ret = hdcp->shim->toggle_signalling(dig_port, cpu_transcoder, in hdcp2_disable_encryption()
1842 "Failed to disable HDCP signalling. %d\n", in hdcp2_disable_encryption()
1857 if (!connector->hdcp.is_repeater) in hdcp2_propagate_stream_management_info()
1866 if (connector->hdcp.seq_num_m > HDCP_2_2_SEQ_NUM_MAX) { in hdcp2_propagate_stream_management_info()
1906 /* Clearing the mei hdcp session */ in hdcp2_authenticate_and_encrypt()
1937 struct intel_hdcp *hdcp = &connector->hdcp; in _intel_hdcp2_enable() local
1942 hdcp->content_type); in _intel_hdcp2_enable()
1947 hdcp->content_type, ret); in _intel_hdcp2_enable()
1953 hdcp->content_type); in _intel_hdcp2_enable()
1955 hdcp->hdcp2_encrypted = true; in _intel_hdcp2_enable()
1965 struct intel_hdcp *hdcp = &connector->hdcp; in _intel_hdcp2_disable() local
1971 if (hdcp->shim->stream_2_2_encryption) { in _intel_hdcp2_disable()
1972 ret = hdcp->shim->stream_2_2_encryption(connector, false); in _intel_hdcp2_disable()
1974 drm_err(&i915->drm, "[%s:%d] Failed to disable HDCP 2.2 stream enc\n", in _intel_hdcp2_disable()
1978 drm_dbg_kms(&i915->drm, "HDCP 2.2 transcoder: %s stream encryption disabled\n", in _intel_hdcp2_disable()
1979 transcoder_name(hdcp->stream_transcoder)); in _intel_hdcp2_disable()
1990 connector->hdcp.hdcp2_encrypted = false; in _intel_hdcp2_disable()
2002 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp2_check_link() local
2007 mutex_lock(&hdcp->mutex); in intel_hdcp2_check_link()
2009 cpu_transcoder = hdcp->cpu_transcoder; in intel_hdcp2_check_link()
2012 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_ENABLED || in intel_hdcp2_check_link()
2013 !hdcp->hdcp2_encrypted) { in intel_hdcp2_check_link()
2031 ret = hdcp->shim->check_2_2_link(dig_port, connector); in intel_hdcp2_check_link()
2033 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_UNDESIRED) { in intel_hdcp2_check_link()
2042 if (hdcp->value == DRM_MODE_CONTENT_PROTECTION_UNDESIRED) in intel_hdcp2_check_link()
2088 mutex_unlock(&hdcp->mutex); in intel_hdcp2_check_link()
2094 struct intel_hdcp *hdcp = container_of(to_delayed_work(work), in intel_hdcp_check_work() local
2097 struct intel_connector *connector = intel_hdcp_to_connector(hdcp); in intel_hdcp_check_work()
2104 queue_delayed_work(i915->unordered_wq, &hdcp->check_work, in intel_hdcp_check_work()
2107 queue_delayed_work(i915->unordered_wq, &hdcp->check_work, in intel_hdcp_check_work()
2116 drm_dbg(&i915->drm, "I915 HDCP comp bind\n"); in i915_hdcp_component_bind()
2117 mutex_lock(&i915->display.hdcp.hdcp_mutex); in i915_hdcp_component_bind()
2118 i915->display.hdcp.arbiter = (struct i915_hdcp_arbiter *)data; in i915_hdcp_component_bind()
2119 i915->display.hdcp.arbiter->hdcp_dev = mei_kdev; in i915_hdcp_component_bind()
2120 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in i915_hdcp_component_bind()
2130 drm_dbg(&i915->drm, "I915 HDCP comp unbind\n"); in i915_hdcp_component_unbind()
2131 mutex_lock(&i915->display.hdcp.hdcp_mutex); in i915_hdcp_component_unbind()
2132 i915->display.hdcp.arbiter = NULL; in i915_hdcp_component_unbind()
2133 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in i915_hdcp_component_unbind()
2158 default: /* eDP, DSI TRANSCODERS are non HDCP capable */ in intel_get_hdcp_transcoder()
2223 mutex_lock(&i915->display.hdcp.hdcp_mutex); in intel_hdcp_component_init()
2224 drm_WARN_ON(&i915->drm, i915->display.hdcp.comp_added); in intel_hdcp_component_init()
2226 i915->display.hdcp.comp_added = true; in intel_hdcp_component_init()
2227 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in intel_hdcp_component_init()
2237 mutex_lock(&i915->display.hdcp.hdcp_mutex); in intel_hdcp_component_init()
2238 i915->display.hdcp.comp_added = false; in intel_hdcp_component_init()
2239 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in intel_hdcp_component_init()
2249 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp2_init() local
2254 drm_dbg_kms(&i915->drm, "Mei hdcp data init failed\n"); in intel_hdcp2_init()
2258 hdcp->hdcp2_supported = true; in intel_hdcp2_init()
2266 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_init() local
2277 hdcp->hdcp2_supported); in intel_hdcp_init()
2279 hdcp->hdcp2_supported = false; in intel_hdcp_init()
2284 hdcp->shim = shim; in intel_hdcp_init()
2285 mutex_init(&hdcp->mutex); in intel_hdcp_init()
2286 INIT_DELAYED_WORK(&hdcp->check_work, intel_hdcp_check_work); in intel_hdcp_init()
2287 INIT_WORK(&hdcp->prop_work, intel_hdcp_prop_work); in intel_hdcp_init()
2288 init_waitqueue_head(&hdcp->cp_irq_queue); in intel_hdcp_init()
2348 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_enable() local
2352 if (!hdcp->shim) in intel_hdcp_enable()
2361 mutex_lock(&hdcp->mutex); in intel_hdcp_enable()
2364 hdcp->value == DRM_MODE_CONTENT_PROTECTION_ENABLED); in intel_hdcp_enable()
2365 hdcp->content_type = (u8)conn_state->hdcp_content_type; in intel_hdcp_enable()
2368 hdcp->cpu_transcoder = pipe_config->mst_master_transcoder; in intel_hdcp_enable()
2369 hdcp->stream_transcoder = pipe_config->cpu_transcoder; in intel_hdcp_enable()
2371 hdcp->cpu_transcoder = pipe_config->cpu_transcoder; in intel_hdcp_enable()
2372 hdcp->stream_transcoder = INVALID_TRANSCODER; in intel_hdcp_enable()
2377 intel_get_hdcp_transcoder(hdcp->cpu_transcoder); in intel_hdcp_enable()
2402 hdcp->content_type != DRM_MODE_HDCP_CONTENT_TYPE1) { in intel_hdcp_enable()
2407 queue_delayed_work(i915->unordered_wq, &hdcp->check_work, in intel_hdcp_enable()
2415 mutex_unlock(&hdcp->mutex); in intel_hdcp_enable()
2422 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_disable() local
2425 if (!hdcp->shim) in intel_hdcp_disable()
2428 mutex_lock(&hdcp->mutex); in intel_hdcp_disable()
2431 if (hdcp->value == DRM_MODE_CONTENT_PROTECTION_UNDESIRED) in intel_hdcp_disable()
2436 if (hdcp->hdcp2_encrypted) in intel_hdcp_disable()
2438 else if (hdcp->hdcp_encrypted) in intel_hdcp_disable()
2443 mutex_unlock(&hdcp->mutex); in intel_hdcp_disable()
2444 cancel_delayed_work_sync(&hdcp->check_work); in intel_hdcp_disable()
2455 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_update_pipe() local
2459 if (!connector->hdcp.shim) in intel_hdcp_update_pipe()
2463 (conn_state->hdcp_content_type != hdcp->content_type && in intel_hdcp_update_pipe()
2468 * During the HDCP encryption session if Type change is requested, in intel_hdcp_update_pipe()
2469 * disable the HDCP and reenable it with new TYPE value. in intel_hdcp_update_pipe()
2477 * Mark the hdcp state as DESIRED after the hdcp disable of type in intel_hdcp_update_pipe()
2481 mutex_lock(&hdcp->mutex); in intel_hdcp_update_pipe()
2482 hdcp->value = DRM_MODE_CONTENT_PROTECTION_DESIRED; in intel_hdcp_update_pipe()
2484 if (!queue_work(i915->unordered_wq, &hdcp->prop_work)) in intel_hdcp_update_pipe()
2486 mutex_unlock(&hdcp->mutex); in intel_hdcp_update_pipe()
2491 mutex_lock(&hdcp->mutex); in intel_hdcp_update_pipe()
2492 /* Avoid enabling hdcp, if it already ENABLED */ in intel_hdcp_update_pipe()
2494 hdcp->value != DRM_MODE_CONTENT_PROTECTION_ENABLED; in intel_hdcp_update_pipe()
2495 mutex_unlock(&hdcp->mutex); in intel_hdcp_update_pipe()
2497 * If HDCP already ENABLED and CP property is DESIRED, schedule in intel_hdcp_update_pipe()
2502 if (!queue_work(i915->unordered_wq, &hdcp->prop_work)) in intel_hdcp_update_pipe()
2514 mutex_lock(&i915->display.hdcp.hdcp_mutex); in intel_hdcp_component_fini()
2515 if (!i915->display.hdcp.comp_added) { in intel_hdcp_component_fini()
2516 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in intel_hdcp_component_fini()
2520 i915->display.hdcp.comp_added = false; in intel_hdcp_component_fini()
2521 mutex_unlock(&i915->display.hdcp.hdcp_mutex); in intel_hdcp_component_fini()
2531 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_cleanup() local
2533 if (!hdcp->shim) in intel_hdcp_cleanup()
2538 * off another HDCP enable, which would re-spawn the workers. in intel_hdcp_cleanup()
2547 cancel_delayed_work_sync(&hdcp->check_work); in intel_hdcp_cleanup()
2558 drm_WARN_ON(connector->base.dev, work_pending(&hdcp->prop_work)); in intel_hdcp_cleanup()
2560 mutex_lock(&hdcp->mutex); in intel_hdcp_cleanup()
2561 hdcp->shim = NULL; in intel_hdcp_cleanup()
2562 mutex_unlock(&hdcp->mutex); in intel_hdcp_cleanup()
2587 * Fix the HDCP uapi content protection state in case of modeset. in intel_hdcp_atomic_check()
2588 * FIXME: As per HDCP content protection property uapi doc, an uevent() in intel_hdcp_atomic_check()
2598 * Nothing to do if the state didn't change, or HDCP was activated since in intel_hdcp_atomic_check()
2599 * the last commit. And also no change in hdcp content type. in intel_hdcp_atomic_check()
2612 /* Handles the CP_IRQ raised from the DP HDCP sink */
2615 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_handle_cp_irq() local
2618 if (!hdcp->shim) in intel_hdcp_handle_cp_irq()
2621 atomic_inc(&connector->hdcp.cp_irq_count); in intel_hdcp_handle_cp_irq()
2622 wake_up_all(&connector->hdcp.cp_irq_queue); in intel_hdcp_handle_cp_irq()
2624 queue_delayed_work(i915->unordered_wq, &hdcp->check_work, 0); in intel_hdcp_handle_cp_irq()