Lines Matching full:hdcp
49 /* HDCP spec states that we must retry the bksv if it is invalid */ in intel_hdcp_read_valid_bksv()
69 const struct intel_hdcp_shim *shim = connector->hdcp.shim; in intel_hdcp_capable()
91 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp2_capable() local
95 if (!hdcp->hdcp2_supported) in intel_hdcp2_capable()
107 hdcp->shim->hdcp_2_2_capable(dig_port, &capable); in intel_hdcp2_capable()
169 * Another req for hdcp key loadability is enabled state of pll for in hdcp_key_loadable()
202 * Initiate loading the HDCP key from fuses. in intel_hdcp_load_keys()
204 * BXT+ platforms, HDCP key needs to be loaded by SW. Only Gen 9 in intel_hdcp_load_keys()
213 "Failed to initiate HDCP key load (%d)\n", in intel_hdcp_load_keys()
296 enum transcoder cpu_transcoder = connector->hdcp.cpu_transcoder; in intel_hdcp_validate_v_prime()
525 drm_dbg_kms(&dev_priv->drm, "SHA-1 mismatch, HDCP failed\n"); in intel_hdcp_validate_v_prime()
532 /* Implements Part 2 of the HDCP authorization procedure */
538 const struct intel_hdcp_shim *shim = connector->hdcp.shim; in intel_hdcp_auth_downstream()
561 * the HDCP encryption. That implies that repeater can't have its own in intel_hdcp_auth_downstream()
608 drm_dbg_kms(&dev_priv->drm, "HDCP is enabled (%d downstream devices)\n", in intel_hdcp_auth_downstream()
616 /* Implements Part 1 of the HDCP authorization procedure */
621 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_auth() local
622 const struct intel_hdcp_shim *shim = hdcp->shim; in intel_hdcp_auth()
623 enum transcoder cpu_transcoder = connector->hdcp.cpu_transcoder; in intel_hdcp_auth()
642 * Detects whether the display is HDCP capable. Although we check for in intel_hdcp_auth()
643 * valid Bksv below, the HDCP over DP spec requires that we check in intel_hdcp_auth()
644 * whether the display supports HDCP before we write An. For HDMI in intel_hdcp_auth()
653 "Panel is not HDCP capable\n"); in intel_hdcp_auth()
735 * DP HDCP Spec mandates the two more reattempt to read R0, incase in intel_hdcp_auth()
778 drm_dbg_kms(&dev_priv->drm, "HDCP is enabled (no repeater present)\n"); in intel_hdcp_auth()
786 struct intel_hdcp *hdcp = &connector->hdcp; in _intel_hdcp_disable() local
788 enum transcoder cpu_transcoder = hdcp->cpu_transcoder; in _intel_hdcp_disable()
792 drm_dbg_kms(&dev_priv->drm, "[%s:%d] HDCP is being disabled...\n", in _intel_hdcp_disable()
796 * If there are other connectors on this port using HDCP, don't disable in _intel_hdcp_disable()
797 * it. Instead, toggle the HDCP signalling off on that particular in _intel_hdcp_disable()
801 ret = hdcp->shim->toggle_signalling(dig_port, in _intel_hdcp_disable()
804 DRM_ERROR("Failed to disable HDCP signalling\n"); in _intel_hdcp_disable()
808 hdcp->hdcp_encrypted = false; in _intel_hdcp_disable()
814 "Failed to disable HDCP, timeout clearing status\n"); in _intel_hdcp_disable()
823 ret = hdcp->shim->toggle_signalling(dig_port, cpu_transcoder, false); in _intel_hdcp_disable()
825 drm_err(&dev_priv->drm, "Failed to disable HDCP signalling\n"); in _intel_hdcp_disable()
829 drm_dbg_kms(&dev_priv->drm, "HDCP is disabled\n"); in _intel_hdcp_disable()
836 struct intel_hdcp *hdcp = &connector->hdcp; in _intel_hdcp_enable() local
839 drm_dbg_kms(&dev_priv->drm, "[%s:%d] HDCP is being enabled...\n", in _intel_hdcp_enable()
843 drm_err(&dev_priv->drm, "HDCP key Load is not possible\n"); in _intel_hdcp_enable()
854 drm_err(&dev_priv->drm, "Could not load HDCP keys, (%d)\n", in _intel_hdcp_enable()
859 /* Incase of authentication failures, HDCP spec expects reauth. */ in _intel_hdcp_enable()
863 hdcp->hdcp_encrypted = true; in _intel_hdcp_enable()
867 drm_dbg_kms(&dev_priv->drm, "HDCP Auth failure (%d)\n", ret); in _intel_hdcp_enable()
869 /* Ensuring HDCP encryption and signalling are stopped. */ in _intel_hdcp_enable()
874 "HDCP authentication failed (%d tries/%d)\n", tries, ret); in _intel_hdcp_enable()
878 static struct intel_connector *intel_hdcp_to_connector(struct intel_hdcp *hdcp) in intel_hdcp_to_connector() argument
880 return container_of(hdcp, struct intel_connector, hdcp); in intel_hdcp_to_connector()
888 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_update_value() local
890 drm_WARN_ON(connector->base.dev, !mutex_is_locked(&hdcp->mutex)); in intel_hdcp_update_value()
892 if (hdcp->value == value) in intel_hdcp_update_value()
897 if (hdcp->value == DRM_MODE_CONTENT_PROTECTION_ENABLED) { in intel_hdcp_update_value()
904 hdcp->value = value; in intel_hdcp_update_value()
907 schedule_work(&hdcp->prop_work); in intel_hdcp_update_value()
911 /* Implements Part 3 of the HDCP authorization procedure */
916 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_check_link() local
921 mutex_lock(&hdcp->mutex); in intel_hdcp_check_link()
924 cpu_transcoder = hdcp->cpu_transcoder; in intel_hdcp_check_link()
927 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_ENABLED || in intel_hdcp_check_link()
928 !hdcp->hdcp_encrypted) { in intel_hdcp_check_link()
936 "%s:%d HDCP link stopped encryption,%x\n", in intel_hdcp_check_link()
946 if (hdcp->shim->check_link(dig_port, connector)) { in intel_hdcp_check_link()
947 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_UNDESIRED) { in intel_hdcp_check_link()
955 "[%s:%d] HDCP link failed, retrying authentication\n", in intel_hdcp_check_link()
960 drm_err(&dev_priv->drm, "Failed to disable hdcp (%d)\n", ret); in intel_hdcp_check_link()
969 drm_err(&dev_priv->drm, "Failed to enable hdcp (%d)\n", ret); in intel_hdcp_check_link()
978 mutex_unlock(&hdcp->mutex); in intel_hdcp_check_link()
984 struct intel_hdcp *hdcp = container_of(work, struct intel_hdcp, in intel_hdcp_prop_work() local
986 struct intel_connector *connector = intel_hdcp_to_connector(hdcp); in intel_hdcp_prop_work()
990 mutex_lock(&hdcp->mutex); in intel_hdcp_prop_work()
995 * we're running just after hdcp has been disabled, so just exit in intel_hdcp_prop_work()
997 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_UNDESIRED) in intel_hdcp_prop_work()
999 hdcp->value); in intel_hdcp_prop_work()
1001 mutex_unlock(&hdcp->mutex); in intel_hdcp_prop_work()
1017 struct hdcp_port_data *data = &connector->hdcp.port_data; in hdcp2_prepare_ake_init()
1046 struct hdcp_port_data *data = &connector->hdcp.port_data; in hdcp2_verify_rx_cert_prepare_km()
1073 struct hdcp_port_data *data = &connector->hdcp.port_data; in hdcp2_verify_hprime()
1098 struct hdcp_port_data *data = &connector->hdcp.port_data; in hdcp2_store_pairing_info()
1124 struct hdcp_port_data *data = &connector->hdcp.port_data; in hdcp2_prepare_lc_init()
1150 struct hdcp_port_data *data = &connector->hdcp.port_data; in hdcp2_verify_lprime()
1175 struct hdcp_port_data *data = &connector->hdcp.port_data; in hdcp2_prepare_skey()
1203 struct hdcp_port_data *data = &connector->hdcp.port_data; in hdcp2_verify_rep_topology_prepare_ack()
1231 struct hdcp_port_data *data = &connector->hdcp.port_data; in hdcp2_verify_mprime()
1254 struct hdcp_port_data *data = &connector->hdcp.port_data; in hdcp2_authenticate_port()
1269 drm_dbg_kms(&dev_priv->drm, "Enable hdcp auth failed. %d\n", in hdcp2_authenticate_port()
1291 &connector->hdcp.port_data); in hdcp2_close_mei_session()
1307 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_authentication_key_exchange() local
1315 const struct intel_hdcp_shim *shim = hdcp->shim; in hdcp2_authentication_key_exchange()
1320 hdcp->seq_num_v = 0; in hdcp2_authentication_key_exchange()
1321 hdcp->seq_num_m = 0; in hdcp2_authentication_key_exchange()
1342 hdcp->is_repeater = HDCP_2_2_RX_REPEATER(msgs.send_cert.rx_caps[2]); in hdcp2_authentication_key_exchange()
1356 &hdcp->is_paired, in hdcp2_authentication_key_exchange()
1374 if (!hdcp->is_paired) { in hdcp2_authentication_key_exchange()
1386 hdcp->is_paired = true; in hdcp2_authentication_key_exchange()
1395 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_locality_check() local
1400 const struct intel_hdcp_shim *shim = hdcp->shim; in hdcp2_locality_check()
1431 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_session_key_exchange() local
1439 ret = hdcp->shim->write_2_2_msg(dig_port, &send_eks, in hdcp2_session_key_exchange()
1452 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_propagate_stream_management_info() local
1457 const struct intel_hdcp_shim *shim = hdcp->shim; in hdcp2_propagate_stream_management_info()
1462 drm_hdcp_cpu_to_be24(msgs.stream_manage.seq_num_m, hdcp->seq_num_m); in hdcp2_propagate_stream_management_info()
1469 msgs.stream_manage.streams[0].stream_type = hdcp->content_type; in hdcp2_propagate_stream_management_info()
1482 hdcp->port_data.seq_num_m = hdcp->seq_num_m; in hdcp2_propagate_stream_management_info()
1483 hdcp->port_data.streams[0].stream_type = hdcp->content_type; in hdcp2_propagate_stream_management_info()
1489 hdcp->seq_num_m++; in hdcp2_propagate_stream_management_info()
1491 if (hdcp->seq_num_m > HDCP_2_2_SEQ_NUM_MAX) { in hdcp2_propagate_stream_management_info()
1504 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_authenticate_repeater_topology() local
1509 const struct intel_hdcp_shim *shim = hdcp->shim; in hdcp2_authenticate_repeater_topology()
1531 if (!hdcp->hdcp2_encrypted && seq_num_v) { in hdcp2_authenticate_repeater_topology()
1537 if (seq_num_v < hdcp->seq_num_v) { in hdcp2_authenticate_repeater_topology()
1558 hdcp->seq_num_v = seq_num_v; in hdcp2_authenticate_repeater_topology()
1582 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_authenticate_sink() local
1583 const struct intel_hdcp_shim *shim = hdcp->shim; in hdcp2_authenticate_sink()
1607 hdcp->is_repeater, in hdcp2_authenticate_sink()
1608 hdcp->content_type); in hdcp2_authenticate_sink()
1613 if (hdcp->is_repeater) { in hdcp2_authenticate_sink()
1622 hdcp->port_data.streams[0].stream_type = hdcp->content_type; in hdcp2_authenticate_sink()
1634 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_enable_encryption() local
1636 enum transcoder cpu_transcoder = hdcp->cpu_transcoder; in hdcp2_enable_encryption()
1642 if (hdcp->shim->toggle_signalling) { in hdcp2_enable_encryption()
1643 ret = hdcp->shim->toggle_signalling(dig_port, cpu_transcoder, in hdcp2_enable_encryption()
1647 "Failed to enable HDCP signalling. %d\n", in hdcp2_enable_encryption()
1674 struct intel_hdcp *hdcp = &connector->hdcp; in hdcp2_disable_encryption() local
1676 enum transcoder cpu_transcoder = hdcp->cpu_transcoder; in hdcp2_disable_encryption()
1693 if (hdcp->shim->toggle_signalling) { in hdcp2_disable_encryption()
1694 ret = hdcp->shim->toggle_signalling(dig_port, cpu_transcoder, in hdcp2_disable_encryption()
1698 "Failed to disable HDCP signalling. %d\n", in hdcp2_disable_encryption()
1717 /* Clearing the mei hdcp session */ in hdcp2_authenticate_and_encrypt()
1745 struct intel_hdcp *hdcp = &connector->hdcp; in _intel_hdcp2_enable() local
1750 hdcp->content_type); in _intel_hdcp2_enable()
1755 hdcp->content_type, ret); in _intel_hdcp2_enable()
1761 hdcp->content_type); in _intel_hdcp2_enable()
1763 hdcp->hdcp2_encrypted = true; in _intel_hdcp2_enable()
1780 connector->hdcp.hdcp2_encrypted = false; in _intel_hdcp2_disable()
1790 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp2_check_link() local
1795 mutex_lock(&hdcp->mutex); in intel_hdcp2_check_link()
1796 cpu_transcoder = hdcp->cpu_transcoder; in intel_hdcp2_check_link()
1799 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_ENABLED || in intel_hdcp2_check_link()
1800 !hdcp->hdcp2_encrypted) { in intel_hdcp2_check_link()
1817 ret = hdcp->shim->check_2_2_link(dig_port); in intel_hdcp2_check_link()
1819 if (hdcp->value != DRM_MODE_CONTENT_PROTECTION_UNDESIRED) { in intel_hdcp2_check_link()
1828 if (hdcp->value == DRM_MODE_CONTENT_PROTECTION_UNDESIRED) in intel_hdcp2_check_link()
1873 mutex_unlock(&hdcp->mutex); in intel_hdcp2_check_link()
1879 struct intel_hdcp *hdcp = container_of(to_delayed_work(work), in intel_hdcp_check_work() local
1882 struct intel_connector *connector = intel_hdcp_to_connector(hdcp); in intel_hdcp_check_work()
1888 schedule_delayed_work(&hdcp->check_work, in intel_hdcp_check_work()
1891 schedule_delayed_work(&hdcp->check_work, in intel_hdcp_check_work()
1900 drm_dbg(&dev_priv->drm, "I915 HDCP comp bind\n"); in i915_hdcp_component_bind()
1914 drm_dbg(&dev_priv->drm, "I915 HDCP comp unbind\n"); in i915_hdcp_component_unbind()
1942 default: /* eDP, DSI TRANSCODERS are non HDCP capable */ in intel_get_mei_fw_tc()
1952 struct intel_hdcp *hdcp = &connector->hdcp; in initialize_hdcp_port_data() local
1953 struct hdcp_port_data *data = &hdcp->port_data; in initialize_hdcp_port_data()
1985 data->streams[0].stream_type = hdcp->content_type; in initialize_hdcp_port_data()
2030 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp2_init() local
2035 drm_dbg_kms(&i915->drm, "Mei hdcp data init failed\n"); in intel_hdcp2_init()
2039 hdcp->hdcp2_supported = true; in intel_hdcp2_init()
2047 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_init() local
2058 hdcp->hdcp2_supported); in intel_hdcp_init()
2060 hdcp->hdcp2_supported = false; in intel_hdcp_init()
2061 kfree(hdcp->port_data.streams); in intel_hdcp_init()
2065 hdcp->shim = shim; in intel_hdcp_init()
2066 mutex_init(&hdcp->mutex); in intel_hdcp_init()
2067 INIT_DELAYED_WORK(&hdcp->check_work, intel_hdcp_check_work); in intel_hdcp_init()
2068 INIT_WORK(&hdcp->prop_work, intel_hdcp_prop_work); in intel_hdcp_init()
2069 init_waitqueue_head(&hdcp->cp_irq_queue); in intel_hdcp_init()
2079 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_enable() local
2083 if (!hdcp->shim) in intel_hdcp_enable()
2086 mutex_lock(&hdcp->mutex); in intel_hdcp_enable()
2089 hdcp->value == DRM_MODE_CONTENT_PROTECTION_ENABLED); in intel_hdcp_enable()
2090 hdcp->content_type = content_type; in intel_hdcp_enable()
2091 hdcp->cpu_transcoder = cpu_transcoder; in intel_hdcp_enable()
2094 hdcp->port_data.fw_tc = intel_get_mei_fw_tc(cpu_transcoder); in intel_hdcp_enable()
2111 hdcp->content_type != DRM_MODE_HDCP_CONTENT_TYPE1) { in intel_hdcp_enable()
2116 schedule_delayed_work(&hdcp->check_work, check_link_interval); in intel_hdcp_enable()
2123 mutex_unlock(&hdcp->mutex); in intel_hdcp_enable()
2130 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_disable() local
2133 if (!hdcp->shim) in intel_hdcp_disable()
2136 mutex_lock(&hdcp->mutex); in intel_hdcp_disable()
2139 if (hdcp->value == DRM_MODE_CONTENT_PROTECTION_UNDESIRED) in intel_hdcp_disable()
2144 if (hdcp->hdcp2_encrypted) in intel_hdcp_disable()
2146 else if (hdcp->hdcp_encrypted) in intel_hdcp_disable()
2151 mutex_unlock(&hdcp->mutex); in intel_hdcp_disable()
2152 cancel_delayed_work_sync(&hdcp->check_work); in intel_hdcp_disable()
2163 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_update_pipe() local
2166 if (!connector->hdcp.shim) in intel_hdcp_update_pipe()
2170 (conn_state->hdcp_content_type != hdcp->content_type && in intel_hdcp_update_pipe()
2175 * During the HDCP encryption session if Type change is requested, in intel_hdcp_update_pipe()
2176 * disable the HDCP and reenable it with new TYPE value. in intel_hdcp_update_pipe()
2184 * Mark the hdcp state as DESIRED after the hdcp disable of type in intel_hdcp_update_pipe()
2188 mutex_lock(&hdcp->mutex); in intel_hdcp_update_pipe()
2189 hdcp->value = DRM_MODE_CONTENT_PROTECTION_DESIRED; in intel_hdcp_update_pipe()
2190 schedule_work(&hdcp->prop_work); in intel_hdcp_update_pipe()
2191 mutex_unlock(&hdcp->mutex); in intel_hdcp_update_pipe()
2196 mutex_lock(&hdcp->mutex); in intel_hdcp_update_pipe()
2197 /* Avoid enabling hdcp, if it already ENABLED */ in intel_hdcp_update_pipe()
2199 hdcp->value != DRM_MODE_CONTENT_PROTECTION_ENABLED; in intel_hdcp_update_pipe()
2200 mutex_unlock(&hdcp->mutex); in intel_hdcp_update_pipe()
2225 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_cleanup() local
2227 if (!hdcp->shim) in intel_hdcp_cleanup()
2232 * off another HDCP enable, which would re-spawn the workers. in intel_hdcp_cleanup()
2241 cancel_delayed_work_sync(&hdcp->check_work); in intel_hdcp_cleanup()
2252 drm_WARN_ON(connector->base.dev, work_pending(&hdcp->prop_work)); in intel_hdcp_cleanup()
2254 mutex_lock(&hdcp->mutex); in intel_hdcp_cleanup()
2255 kfree(hdcp->port_data.streams); in intel_hdcp_cleanup()
2256 hdcp->shim = NULL; in intel_hdcp_cleanup()
2257 mutex_unlock(&hdcp->mutex); in intel_hdcp_cleanup()
2282 * Fix the HDCP uapi content protection state in case of modeset. in intel_hdcp_atomic_check()
2283 * FIXME: As per HDCP content protection property uapi doc, an uevent() in intel_hdcp_atomic_check()
2293 * Nothing to do if the state didn't change, or HDCP was activated since in intel_hdcp_atomic_check()
2294 * the last commit. And also no change in hdcp content type. in intel_hdcp_atomic_check()
2307 /* Handles the CP_IRQ raised from the DP HDCP sink */
2310 struct intel_hdcp *hdcp = &connector->hdcp; in intel_hdcp_handle_cp_irq() local
2312 if (!hdcp->shim) in intel_hdcp_handle_cp_irq()
2315 atomic_inc(&connector->hdcp.cp_irq_count); in intel_hdcp_handle_cp_irq()
2316 wake_up_all(&connector->hdcp.cp_irq_queue); in intel_hdcp_handle_cp_irq()
2318 schedule_delayed_work(&hdcp->check_work, 0); in intel_hdcp_handle_cp_irq()