Lines Matching full:hdcp
37 struct intel_hdcp *hdcp, in intel_hdcp_adjust_hdcp_line_rekeying() argument
49 rekey_reg = TRANS_DDI_FUNC_CTL(display, hdcp->cpu_transcoder); in intel_hdcp_adjust_hdcp_line_rekeying()
53 rekey_reg = TRANS_DDI_FUNC_CTL(display, hdcp->cpu_transcoder); in intel_hdcp_adjust_hdcp_line_rekeying()
56 rekey_reg = CHICKEN_TRANS(display, hdcp->cpu_transcoder); in intel_hdcp_adjust_hdcp_line_rekeying()
93 * intel_hdcp_required_content_stream selects the most highest common possible HDCP
98 * HDCP 2.2 capable sink because of other sink are not capable of HDCP 2.2 in
110 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in intel_hdcp_required_content_stream()
114 if (dig_port->hdcp.auth_status) in intel_hdcp_required_content_stream()
119 if (!dig_port->hdcp.mst_type1_capable) in intel_hdcp_required_content_stream()
162 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in intel_hdcp_prepare_streams()
163 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_prepare_streams() local
170 data->streams[0].stream_type = hdcp->content_type; in intel_hdcp_prepare_streams()
195 /* HDCP spec states that we must retry the bksv if it is invalid */ in intel_hdcp_read_valid_bksv()
215 const struct intel_hdcp_shim *shim = connector->hdcp.shim; in intel_hdcp_get_capability()
239 * HDCP 2.2 work
244 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp2_prerequisite() local
247 if (!hdcp->hdcp2_supported) in intel_hdcp2_prerequisite()
257 mutex_lock(&display->hdcp.hdcp_mutex); in intel_hdcp2_prerequisite()
258 if (!display->hdcp.comp_added || !display->hdcp.arbiter) { in intel_hdcp2_prerequisite()
259 mutex_unlock(&display->hdcp.hdcp_mutex); in intel_hdcp2_prerequisite()
262 mutex_unlock(&display->hdcp.hdcp_mutex); in intel_hdcp2_prerequisite()
270 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp2_get_capability() local
277 hdcp->shim->hdcp_2_2_get_capability(connector, &capable); in intel_hdcp2_get_capability()
286 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_get_remote_capability() local
288 if (!hdcp->shim->get_remote_hdcp_capability) in intel_hdcp_get_remote_capability()
291 hdcp->shim->get_remote_hdcp_capability(connector, hdcp_capable, in intel_hdcp_get_remote_capability()
356 * Another req for hdcp key loadability is enabled state of pll for in hdcp_key_loadable()
390 * Initiate loading the HDCP key from fuses. in intel_hdcp_load_keys()
392 * BXT+ platforms, HDCP key needs to be loaded by SW. Only display in intel_hdcp_load_keys()
401 "Failed to initiate HDCP key load (%d)\n", in intel_hdcp_load_keys()
484 enum transcoder cpu_transcoder = connector->hdcp.cpu_transcoder; in intel_hdcp_validate_v_prime()
713 drm_dbg_kms(display->drm, "SHA-1 mismatch, HDCP failed\n"); in intel_hdcp_validate_v_prime()
720 /* Implements Part 2 of the HDCP authorization procedure */
726 const struct intel_hdcp_shim *shim = connector->hdcp.shim; in intel_hdcp_auth_downstream()
749 * the HDCP encryption. That implies that repeater can't have its own in intel_hdcp_auth_downstream()
796 drm_dbg_kms(display->drm, "HDCP is enabled (%d downstream devices)\n", in intel_hdcp_auth_downstream()
804 /* Implements Part 1 of the HDCP authorization procedure */
809 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_auth() local
810 const struct intel_hdcp_shim *shim = hdcp->shim; in intel_hdcp_auth()
811 enum transcoder cpu_transcoder = connector->hdcp.cpu_transcoder; in intel_hdcp_auth()
830 * Detects whether the display is HDCP capable. Although we check for in intel_hdcp_auth()
831 * valid Bksv below, the HDCP over DP spec requires that we check in intel_hdcp_auth()
832 * whether the display supports HDCP before we write An. For HDMI in intel_hdcp_auth()
841 "Panel is not HDCP capable\n"); in intel_hdcp_auth()
923 * DP HDCP Spec mandates the two more reattempt to read R0, incase in intel_hdcp_auth()
962 drm_err(display->drm, "[CONNECTOR:%d:%s] Failed to enable HDCP 1.4 stream enc\n", in intel_hdcp_auth()
966 drm_dbg_kms(display->drm, "HDCP 1.4 transcoder: %s stream encrypted\n", in intel_hdcp_auth()
967 transcoder_name(hdcp->stream_transcoder)); in intel_hdcp_auth()
973 drm_dbg_kms(display->drm, "HDCP is enabled (no repeater present)\n"); in intel_hdcp_auth()
981 struct intel_hdcp *hdcp = &connector->hdcp; in _intel_hdcp_disable() local
983 enum transcoder cpu_transcoder = hdcp->cpu_transcoder; in _intel_hdcp_disable()
987 drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s] HDCP is being disabled...\n", in _intel_hdcp_disable()
990 if (hdcp->shim->stream_encryption) { in _intel_hdcp_disable()
991 ret = hdcp->shim->stream_encryption(connector, false); in _intel_hdcp_disable()
993 drm_err(display->drm, "[CONNECTOR:%d:%s] Failed to disable HDCP 1.4 stream enc\n", in _intel_hdcp_disable()
997 drm_dbg_kms(display->drm, "HDCP 1.4 transcoder: %s stream encryption disabled\n", in _intel_hdcp_disable()
998 transcoder_name(hdcp->stream_transcoder)); in _intel_hdcp_disable()
1000 * If there are other connectors on this port using HDCP, in _intel_hdcp_disable()
1001 * don't disable it until it disabled HDCP encryption for in _intel_hdcp_disable()
1004 if (dig_port->hdcp.num_streams > 0) in _intel_hdcp_disable()
1008 hdcp->hdcp_encrypted = false; in _intel_hdcp_disable()
1014 "Failed to disable HDCP, timeout clearing status\n"); in _intel_hdcp_disable()
1022 ret = hdcp->shim->toggle_signalling(dig_port, cpu_transcoder, false); in _intel_hdcp_disable()
1024 drm_err(display->drm, "Failed to disable HDCP signalling\n"); in _intel_hdcp_disable()
1028 drm_dbg_kms(display->drm, "HDCP is disabled\n"); in _intel_hdcp_disable()
1035 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp1_enable() local
1038 drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s] HDCP is being enabled...\n", in intel_hdcp1_enable()
1042 drm_err(display->drm, "HDCP key Load is not possible\n"); in intel_hdcp1_enable()
1053 drm_err(display->drm, "Could not load HDCP keys, (%d)\n", in intel_hdcp1_enable()
1058 intel_hdcp_adjust_hdcp_line_rekeying(connector->encoder, hdcp, true); in intel_hdcp1_enable()
1060 /* Incase of authentication failures, HDCP spec expects reauth. */ in intel_hdcp1_enable()
1064 hdcp->hdcp_encrypted = true; in intel_hdcp1_enable()
1068 drm_dbg_kms(display->drm, "HDCP Auth failure (%d)\n", ret); in intel_hdcp1_enable()
1070 /* Ensuring HDCP encryption and signalling are stopped. */ in intel_hdcp1_enable()
1075 "HDCP authentication failed (%d tries/%d)\n", tries, ret); in intel_hdcp1_enable()
1079 static struct intel_connector *intel_hdcp_to_connector(struct intel_hdcp *hdcp) in intel_hdcp_to_connector() argument
1081 return container_of(hdcp, struct intel_connector, hdcp); in intel_hdcp_to_connector()
1090 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_update_value() local
1092 drm_WARN_ON(display->drm, !mutex_is_locked(&hdcp->mutex)); in intel_hdcp_update_value()
1094 if (hdcp->value == value) in intel_hdcp_update_value()
1097 drm_WARN_ON(display->drm, !mutex_is_locked(&dig_port->hdcp.mutex)); in intel_hdcp_update_value()
1099 if (hdcp->value == DRM_MODE_CONTENT_PROTECTION_ENABLED) { in intel_hdcp_update_value()
1100 if (!drm_WARN_ON(display->drm, dig_port->hdcp.num_streams == 0)) in intel_hdcp_update_value()
1101 dig_port->hdcp.num_streams--; in intel_hdcp_update_value()
1103 dig_port->hdcp.num_streams++; in intel_hdcp_update_value()
1106 hdcp->value = value; in intel_hdcp_update_value()
1109 if (!queue_work(i915->unordered_wq, &hdcp->prop_work)) in intel_hdcp_update_value()
1114 /* Implements Part 3 of the HDCP authorization procedure */
1119 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_check_link() local
1124 mutex_lock(&hdcp->mutex); in intel_hdcp_check_link()
1125 mutex_lock(&dig_port->hdcp.mutex); in intel_hdcp_check_link()
1127 cpu_transcoder = hdcp->cpu_transcoder; in intel_hdcp_check_link()
1130 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_ENABLED || in intel_hdcp_check_link()
1131 !hdcp->hdcp_encrypted) { in intel_hdcp_check_link()
1139 "[CONNECTOR:%d:%s] HDCP link stopped encryption,%x\n", in intel_hdcp_check_link()
1149 if (hdcp->shim->check_link(dig_port, connector)) { in intel_hdcp_check_link()
1150 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_UNDESIRED) { in intel_hdcp_check_link()
1158 "[CONNECTOR:%d:%s] HDCP link failed, retrying authentication\n", in intel_hdcp_check_link()
1163 drm_err(display->drm, "Failed to disable hdcp (%d)\n", ret); in intel_hdcp_check_link()
1172 drm_err(display->drm, "Failed to enable hdcp (%d)\n", ret); in intel_hdcp_check_link()
1180 mutex_unlock(&dig_port->hdcp.mutex); in intel_hdcp_check_link()
1181 mutex_unlock(&hdcp->mutex); in intel_hdcp_check_link()
1187 struct intel_hdcp *hdcp = container_of(work, struct intel_hdcp, in intel_hdcp_prop_work() local
1189 struct intel_connector *connector = intel_hdcp_to_connector(hdcp); in intel_hdcp_prop_work()
1193 mutex_lock(&hdcp->mutex); in intel_hdcp_prop_work()
1198 * we're running just after hdcp has been disabled, so just exit in intel_hdcp_prop_work()
1200 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_UNDESIRED) in intel_hdcp_prop_work()
1202 hdcp->value); in intel_hdcp_prop_work()
1204 mutex_unlock(&hdcp->mutex); in intel_hdcp_prop_work()
1222 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in hdcp2_prepare_ake_init()
1226 mutex_lock(&display->hdcp.hdcp_mutex); in hdcp2_prepare_ake_init()
1227 arbiter = display->hdcp.arbiter; in hdcp2_prepare_ake_init()
1230 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_prepare_ake_init()
1238 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_prepare_ake_init()
1252 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in hdcp2_verify_rx_cert_prepare_km()
1256 mutex_lock(&display->hdcp.hdcp_mutex); in hdcp2_verify_rx_cert_prepare_km()
1257 arbiter = display->hdcp.arbiter; in hdcp2_verify_rx_cert_prepare_km()
1260 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_verify_rx_cert_prepare_km()
1270 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_verify_rx_cert_prepare_km()
1280 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in hdcp2_verify_hprime()
1284 mutex_lock(&display->hdcp.hdcp_mutex); in hdcp2_verify_hprime()
1285 arbiter = display->hdcp.arbiter; in hdcp2_verify_hprime()
1288 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_verify_hprime()
1295 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_verify_hprime()
1306 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in hdcp2_store_pairing_info()
1310 mutex_lock(&display->hdcp.hdcp_mutex); in hdcp2_store_pairing_info()
1311 arbiter = display->hdcp.arbiter; in hdcp2_store_pairing_info()
1314 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_store_pairing_info()
1322 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_store_pairing_info()
1333 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in hdcp2_prepare_lc_init()
1337 mutex_lock(&display->hdcp.hdcp_mutex); in hdcp2_prepare_lc_init()
1338 arbiter = display->hdcp.arbiter; in hdcp2_prepare_lc_init()
1341 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_prepare_lc_init()
1349 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_prepare_lc_init()
1360 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in hdcp2_verify_lprime()
1364 mutex_lock(&display->hdcp.hdcp_mutex); in hdcp2_verify_lprime()
1365 arbiter = display->hdcp.arbiter; in hdcp2_verify_lprime()
1368 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_verify_lprime()
1376 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_verify_lprime()
1386 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in hdcp2_prepare_skey()
1390 mutex_lock(&display->hdcp.hdcp_mutex); in hdcp2_prepare_skey()
1391 arbiter = display->hdcp.arbiter; in hdcp2_prepare_skey()
1394 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_prepare_skey()
1402 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_prepare_skey()
1415 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in hdcp2_verify_rep_topology_prepare_ack()
1419 mutex_lock(&display->hdcp.hdcp_mutex); in hdcp2_verify_rep_topology_prepare_ack()
1420 arbiter = display->hdcp.arbiter; in hdcp2_verify_rep_topology_prepare_ack()
1423 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_verify_rep_topology_prepare_ack()
1434 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_verify_rep_topology_prepare_ack()
1445 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in hdcp2_verify_mprime()
1449 mutex_lock(&display->hdcp.hdcp_mutex); in hdcp2_verify_mprime()
1450 arbiter = display->hdcp.arbiter; in hdcp2_verify_mprime()
1453 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_verify_mprime()
1460 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_verify_mprime()
1469 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in hdcp2_authenticate_port()
1473 mutex_lock(&display->hdcp.hdcp_mutex); in hdcp2_authenticate_port()
1474 arbiter = display->hdcp.arbiter; in hdcp2_authenticate_port()
1477 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_authenticate_port()
1483 drm_dbg_kms(display->drm, "Enable hdcp auth failed. %d\n", in hdcp2_authenticate_port()
1485 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_authenticate_port()
1497 mutex_lock(&display->hdcp.hdcp_mutex); in hdcp2_close_session()
1498 arbiter = display->hdcp.arbiter; in hdcp2_close_session()
1501 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_close_session()
1506 &dig_port->hdcp.port_data); in hdcp2_close_session()
1507 mutex_unlock(&display->hdcp.hdcp_mutex); in hdcp2_close_session()
1523 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_authentication_key_exchange() local
1531 const struct intel_hdcp_shim *shim = hdcp->shim; in hdcp2_authentication_key_exchange()
1536 hdcp->seq_num_v = 0; in hdcp2_authentication_key_exchange()
1537 hdcp->seq_num_m = 0; in hdcp2_authentication_key_exchange()
1559 * and then try HDCP authentication. The values of 10 and delay of 50ms in hdcp2_authentication_key_exchange()
1587 hdcp->is_repeater = HDCP_2_2_RX_REPEATER(msgs.send_cert.rx_caps[2]); in hdcp2_authentication_key_exchange()
1601 &hdcp->is_paired, in hdcp2_authentication_key_exchange()
1619 if (!hdcp->is_paired) { in hdcp2_authentication_key_exchange()
1631 hdcp->is_paired = true; in hdcp2_authentication_key_exchange()
1639 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_locality_check() local
1644 const struct intel_hdcp_shim *shim = hdcp->shim; in hdcp2_locality_check()
1674 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_session_key_exchange() local
1682 ret = hdcp->shim->write_2_2_msg(connector, &send_eks, in hdcp2_session_key_exchange()
1694 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in _hdcp2_propagate_stream_management_info()
1695 struct intel_hdcp *hdcp = &connector->hdcp; in _hdcp2_propagate_stream_management_info() local
1700 const struct intel_hdcp_shim *shim = hdcp->shim; in _hdcp2_propagate_stream_management_info()
1703 if (connector->hdcp.seq_num_m > HDCP_2_2_SEQ_NUM_MAX) in _hdcp2_propagate_stream_management_info()
1708 drm_hdcp_cpu_to_be24(msgs.stream_manage.seq_num_m, hdcp->seq_num_m); in _hdcp2_propagate_stream_management_info()
1730 data->seq_num_m = hdcp->seq_num_m; in _hdcp2_propagate_stream_management_info()
1735 hdcp->seq_num_m++; in _hdcp2_propagate_stream_management_info()
1745 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_authenticate_repeater_topology() local
1750 const struct intel_hdcp_shim *shim = hdcp->shim; in hdcp2_authenticate_repeater_topology()
1770 * device that is only HDCP 1.x or Legacy HDCP 2.0/2.1 compliant. in hdcp2_authenticate_repeater_topology()
1772 dig_port->hdcp.mst_type1_capable = in hdcp2_authenticate_repeater_topology()
1776 if (!dig_port->hdcp.mst_type1_capable && hdcp->content_type) { in hdcp2_authenticate_repeater_topology()
1786 if (!hdcp->hdcp2_encrypted && seq_num_v) { in hdcp2_authenticate_repeater_topology()
1792 if (seq_num_v < hdcp->seq_num_v) { in hdcp2_authenticate_repeater_topology()
1813 hdcp->seq_num_v = seq_num_v; in hdcp2_authenticate_repeater_topology()
1825 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_authenticate_sink() local
1826 const struct intel_hdcp_shim *shim = hdcp->shim; in hdcp2_authenticate_sink()
1850 hdcp->is_repeater, in hdcp2_authenticate_sink()
1851 hdcp->content_type); in hdcp2_authenticate_sink()
1856 if (hdcp->is_repeater) { in hdcp2_authenticate_sink()
1872 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in hdcp2_enable_stream_encryption()
1873 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_enable_stream_encryption() local
1874 enum transcoder cpu_transcoder = hdcp->cpu_transcoder; in hdcp2_enable_stream_encryption()
1880 drm_err(display->drm, "[CONNECTOR:%d:%s] HDCP 2.2 Link is not encrypted\n", in hdcp2_enable_stream_encryption()
1886 if (hdcp->shim->stream_2_2_encryption) { in hdcp2_enable_stream_encryption()
1887 ret = hdcp->shim->stream_2_2_encryption(connector, true); in hdcp2_enable_stream_encryption()
1889 drm_err(display->drm, "[CONNECTOR:%d:%s] Failed to enable HDCP 2.2 stream enc\n", in hdcp2_enable_stream_encryption()
1893 drm_dbg_kms(display->drm, "HDCP 2.2 transcoder: %s stream encrypted\n", in hdcp2_enable_stream_encryption()
1894 transcoder_name(hdcp->stream_transcoder)); in hdcp2_enable_stream_encryption()
1903 dig_port->hdcp.auth_status = false; in hdcp2_enable_stream_encryption()
1913 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_enable_encryption() local
1915 enum transcoder cpu_transcoder = hdcp->cpu_transcoder; in hdcp2_enable_encryption()
1921 if (hdcp->shim->toggle_signalling) { in hdcp2_enable_encryption()
1922 ret = hdcp->shim->toggle_signalling(dig_port, cpu_transcoder, in hdcp2_enable_encryption()
1926 "Failed to enable HDCP signalling. %d\n", in hdcp2_enable_encryption()
1943 dig_port->hdcp.auth_status = true; in hdcp2_enable_encryption()
1952 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_disable_encryption() local
1954 enum transcoder cpu_transcoder = hdcp->cpu_transcoder; in hdcp2_disable_encryption()
1972 if (hdcp->shim->toggle_signalling) { in hdcp2_disable_encryption()
1973 ret = hdcp->shim->toggle_signalling(dig_port, cpu_transcoder, in hdcp2_disable_encryption()
1977 "Failed to disable HDCP signalling. %d\n", in hdcp2_disable_encryption()
1992 if (!connector->hdcp.is_repeater) in hdcp2_propagate_stream_management_info()
2001 if (connector->hdcp.seq_num_m > HDCP_2_2_SEQ_NUM_MAX) { in hdcp2_propagate_stream_management_info()
2022 for (i = 0; i < tries && !dig_port->hdcp.auth_status; i++) { in hdcp2_authenticate_and_encrypt()
2048 /* Clearing the mei hdcp session */ in hdcp2_authenticate_and_encrypt()
2055 if (!ret && !dig_port->hdcp.auth_status) { in hdcp2_authenticate_and_encrypt()
2080 struct intel_hdcp *hdcp = &connector->hdcp; in _intel_hdcp2_enable() local
2085 hdcp->content_type); in _intel_hdcp2_enable()
2087 intel_hdcp_adjust_hdcp_line_rekeying(connector->encoder, hdcp, false); in _intel_hdcp2_enable()
2092 hdcp->content_type, ret); in _intel_hdcp2_enable()
2098 hdcp->content_type); in _intel_hdcp2_enable()
2100 hdcp->hdcp2_encrypted = true; in _intel_hdcp2_enable()
2109 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in _intel_hdcp2_disable()
2110 struct intel_hdcp *hdcp = &connector->hdcp; in _intel_hdcp2_disable() local
2116 if (hdcp->shim->stream_2_2_encryption) { in _intel_hdcp2_disable()
2117 ret = hdcp->shim->stream_2_2_encryption(connector, false); in _intel_hdcp2_disable()
2119 drm_err(display->drm, "[CONNECTOR:%d:%s] Failed to disable HDCP 2.2 stream enc\n", in _intel_hdcp2_disable()
2123 drm_dbg_kms(display->drm, "HDCP 2.2 transcoder: %s stream encryption disabled\n", in _intel_hdcp2_disable()
2124 transcoder_name(hdcp->stream_transcoder)); in _intel_hdcp2_disable()
2126 if (dig_port->hdcp.num_streams > 0 && !hdcp2_link_recovery) in _intel_hdcp2_disable()
2135 connector->hdcp.hdcp2_encrypted = false; in _intel_hdcp2_disable()
2136 dig_port->hdcp.auth_status = false; in _intel_hdcp2_disable()
2147 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp2_check_link() local
2152 mutex_lock(&hdcp->mutex); in intel_hdcp2_check_link()
2153 mutex_lock(&dig_port->hdcp.mutex); in intel_hdcp2_check_link()
2154 cpu_transcoder = hdcp->cpu_transcoder; in intel_hdcp2_check_link()
2157 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_ENABLED || in intel_hdcp2_check_link()
2158 !hdcp->hdcp2_encrypted) { in intel_hdcp2_check_link()
2176 ret = hdcp->shim->check_2_2_link(dig_port, connector); in intel_hdcp2_check_link()
2178 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_UNDESIRED) { in intel_hdcp2_check_link()
2187 if (hdcp->value == DRM_MODE_CONTENT_PROTECTION_UNDESIRED) in intel_hdcp2_check_link()
2224 mutex_unlock(&dig_port->hdcp.mutex); in intel_hdcp2_check_link()
2225 mutex_unlock(&hdcp->mutex); in intel_hdcp2_check_link()
2231 struct intel_hdcp *hdcp = container_of(to_delayed_work(work), in intel_hdcp_check_work() local
2234 struct intel_connector *connector = intel_hdcp_to_connector(hdcp); in intel_hdcp_check_work()
2242 queue_delayed_work(i915->unordered_wq, &hdcp->check_work, in intel_hdcp_check_work()
2245 queue_delayed_work(i915->unordered_wq, &hdcp->check_work, in intel_hdcp_check_work()
2254 drm_dbg(display->drm, "I915 HDCP comp bind\n"); in i915_hdcp_component_bind()
2255 mutex_lock(&display->hdcp.hdcp_mutex); in i915_hdcp_component_bind()
2256 display->hdcp.arbiter = (struct i915_hdcp_arbiter *)data; in i915_hdcp_component_bind()
2257 display->hdcp.arbiter->hdcp_dev = mei_kdev; in i915_hdcp_component_bind()
2258 mutex_unlock(&display->hdcp.hdcp_mutex); in i915_hdcp_component_bind()
2268 drm_dbg(display->drm, "I915 HDCP comp unbind\n"); in i915_hdcp_component_unbind()
2269 mutex_lock(&display->hdcp.hdcp_mutex); in i915_hdcp_component_unbind()
2270 display->hdcp.arbiter = NULL; in i915_hdcp_component_unbind()
2271 mutex_unlock(&display->hdcp.hdcp_mutex); in i915_hdcp_component_unbind()
2296 default: /* eDP, DSI TRANSCODERS are non HDCP capable */ in intel_get_hdcp_transcoder()
2306 struct hdcp_port_data *data = &dig_port->hdcp.port_data; in initialize_hdcp_port_data()
2361 mutex_lock(&display->hdcp.hdcp_mutex); in intel_hdcp_component_init()
2362 drm_WARN_ON(display->drm, display->hdcp.comp_added); in intel_hdcp_component_init()
2364 display->hdcp.comp_added = true; in intel_hdcp_component_init()
2365 mutex_unlock(&display->hdcp.hdcp_mutex); in intel_hdcp_component_init()
2375 mutex_lock(&display->hdcp.hdcp_mutex); in intel_hdcp_component_init()
2376 display->hdcp.comp_added = false; in intel_hdcp_component_init()
2377 mutex_unlock(&display->hdcp.hdcp_mutex); in intel_hdcp_component_init()
2387 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp2_init() local
2392 drm_dbg_kms(display->drm, "Mei hdcp data init failed\n"); in intel_hdcp2_init()
2396 hdcp->hdcp2_supported = true; in intel_hdcp2_init()
2404 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_init() local
2414 hdcp->hdcp2_supported); in intel_hdcp_init()
2416 hdcp->hdcp2_supported = false; in intel_hdcp_init()
2417 kfree(dig_port->hdcp.port_data.streams); in intel_hdcp_init()
2421 hdcp->shim = shim; in intel_hdcp_init()
2422 mutex_init(&hdcp->mutex); in intel_hdcp_init()
2423 INIT_DELAYED_WORK(&hdcp->check_work, intel_hdcp_check_work); in intel_hdcp_init()
2424 INIT_WORK(&hdcp->prop_work, intel_hdcp_prop_work); in intel_hdcp_init()
2425 init_waitqueue_head(&hdcp->cp_irq_queue); in intel_hdcp_init()
2440 struct intel_hdcp *hdcp = &connector->hdcp; in _intel_hdcp_enable() local
2444 if (!hdcp->shim) in _intel_hdcp_enable()
2453 mutex_lock(&hdcp->mutex); in _intel_hdcp_enable()
2454 mutex_lock(&dig_port->hdcp.mutex); in _intel_hdcp_enable()
2456 hdcp->value == DRM_MODE_CONTENT_PROTECTION_ENABLED); in _intel_hdcp_enable()
2457 hdcp->content_type = (u8)conn_state->hdcp_content_type; in _intel_hdcp_enable()
2460 hdcp->cpu_transcoder = pipe_config->mst_master_transcoder; in _intel_hdcp_enable()
2461 hdcp->stream_transcoder = pipe_config->cpu_transcoder; in _intel_hdcp_enable()
2463 hdcp->cpu_transcoder = pipe_config->cpu_transcoder; in _intel_hdcp_enable()
2464 hdcp->stream_transcoder = INVALID_TRANSCODER; in _intel_hdcp_enable()
2468 dig_port->hdcp.port_data.hdcp_transcoder = in _intel_hdcp_enable()
2469 intel_get_hdcp_transcoder(hdcp->cpu_transcoder); in _intel_hdcp_enable()
2475 if (!hdcp->force_hdcp14 && intel_hdcp2_get_capability(connector)) { in _intel_hdcp_enable()
2482 if (hdcp->force_hdcp14) in _intel_hdcp_enable()
2483 drm_dbg_kms(display->drm, "Forcing HDCP 1.4\n"); in _intel_hdcp_enable()
2490 hdcp->content_type != DRM_MODE_HDCP_CONTENT_TYPE1) { in _intel_hdcp_enable()
2495 queue_delayed_work(i915->unordered_wq, &hdcp->check_work, in _intel_hdcp_enable()
2502 mutex_unlock(&dig_port->hdcp.mutex); in _intel_hdcp_enable()
2503 mutex_unlock(&hdcp->mutex); in _intel_hdcp_enable()
2514 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_enable() local
2517 * Enable hdcp if it's desired or if userspace is enabled and in intel_hdcp_enable()
2523 DRM_MODE_CONTENT_PROTECTION_ENABLED && hdcp->value == in intel_hdcp_enable()
2531 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_disable() local
2534 if (!hdcp->shim) in intel_hdcp_disable()
2537 mutex_lock(&hdcp->mutex); in intel_hdcp_disable()
2538 mutex_lock(&dig_port->hdcp.mutex); in intel_hdcp_disable()
2540 if (hdcp->value == DRM_MODE_CONTENT_PROTECTION_UNDESIRED) in intel_hdcp_disable()
2545 if (hdcp->hdcp2_encrypted) in intel_hdcp_disable()
2547 else if (hdcp->hdcp_encrypted) in intel_hdcp_disable()
2551 mutex_unlock(&dig_port->hdcp.mutex); in intel_hdcp_disable()
2552 mutex_unlock(&hdcp->mutex); in intel_hdcp_disable()
2553 cancel_delayed_work_sync(&hdcp->check_work); in intel_hdcp_disable()
2564 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_update_pipe() local
2568 if (!connector->hdcp.shim) in intel_hdcp_update_pipe()
2572 (conn_state->hdcp_content_type != hdcp->content_type && in intel_hdcp_update_pipe()
2577 * During the HDCP encryption session if Type change is requested, in intel_hdcp_update_pipe()
2578 * disable the HDCP and re-enable it with new TYPE value. in intel_hdcp_update_pipe()
2586 * Mark the hdcp state as DESIRED after the hdcp disable of type in intel_hdcp_update_pipe()
2590 mutex_lock(&hdcp->mutex); in intel_hdcp_update_pipe()
2591 hdcp->value = DRM_MODE_CONTENT_PROTECTION_DESIRED; in intel_hdcp_update_pipe()
2593 if (!queue_work(i915->unordered_wq, &hdcp->prop_work)) in intel_hdcp_update_pipe()
2595 mutex_unlock(&hdcp->mutex); in intel_hdcp_update_pipe()
2600 mutex_lock(&hdcp->mutex); in intel_hdcp_update_pipe()
2601 /* Avoid enabling hdcp, if it already ENABLED */ in intel_hdcp_update_pipe()
2603 hdcp->value != DRM_MODE_CONTENT_PROTECTION_ENABLED; in intel_hdcp_update_pipe()
2604 mutex_unlock(&hdcp->mutex); in intel_hdcp_update_pipe()
2606 * If HDCP already ENABLED and CP property is DESIRED, schedule in intel_hdcp_update_pipe()
2611 if (!queue_work(i915->unordered_wq, &hdcp->prop_work)) in intel_hdcp_update_pipe()
2623 if (!connector->hdcp.shim) in intel_hdcp_cancel_works()
2626 cancel_delayed_work_sync(&connector->hdcp.check_work); in intel_hdcp_cancel_works()
2627 cancel_work_sync(&connector->hdcp.prop_work); in intel_hdcp_cancel_works()
2632 mutex_lock(&display->hdcp.hdcp_mutex); in intel_hdcp_component_fini()
2633 if (!display->hdcp.comp_added) { in intel_hdcp_component_fini()
2634 mutex_unlock(&display->hdcp.hdcp_mutex); in intel_hdcp_component_fini()
2638 display->hdcp.comp_added = false; in intel_hdcp_component_fini()
2639 mutex_unlock(&display->hdcp.hdcp_mutex); in intel_hdcp_component_fini()
2649 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_cleanup() local
2651 if (!hdcp->shim) in intel_hdcp_cleanup()
2656 * off another HDCP enable, which would re-spawn the workers. in intel_hdcp_cleanup()
2665 cancel_delayed_work_sync(&hdcp->check_work); in intel_hdcp_cleanup()
2676 drm_WARN_ON(connector->base.dev, work_pending(&hdcp->prop_work)); in intel_hdcp_cleanup()
2678 mutex_lock(&hdcp->mutex); in intel_hdcp_cleanup()
2679 hdcp->shim = NULL; in intel_hdcp_cleanup()
2680 mutex_unlock(&hdcp->mutex); in intel_hdcp_cleanup()
2705 * Fix the HDCP uapi content protection state in case of modeset. in intel_hdcp_atomic_check()
2706 * FIXME: As per HDCP content protection property uapi doc, an uevent() in intel_hdcp_atomic_check()
2716 * Nothing to do if the state didn't change, or HDCP was activated since in intel_hdcp_atomic_check()
2717 * the last commit. And also no change in hdcp content type. in intel_hdcp_atomic_check()
2730 /* Handles the CP_IRQ raised from the DP HDCP sink */
2733 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_handle_cp_irq() local
2737 if (!hdcp->shim) in intel_hdcp_handle_cp_irq()
2740 atomic_inc(&connector->hdcp.cp_irq_count); in intel_hdcp_handle_cp_irq()
2741 wake_up_all(&connector->hdcp.cp_irq_queue); in intel_hdcp_handle_cp_irq()
2743 queue_delayed_work(i915->unordered_wq, &hdcp->check_work, 0); in intel_hdcp_handle_cp_irq()
2751 if (!connector->hdcp.shim) { in __intel_hdcp_info()
2780 seq_puts(m, "\tMST Hub HDCP version: "); in intel_hdcp_info()
2801 seq_printf(m, "%s:%d HDCP version: ", connector->base.name, in intel_hdcp_sink_capability_show()
2818 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_force_14_write() local
2829 hdcp->force_hdcp14 = force_hdcp14; in intel_hdcp_force_14_write()
2840 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_force_14_show() local
2858 str_yes_no(hdcp->force_hdcp14)); in intel_hdcp_force_14_show()