Lines Matching defs:connector
34 struct intel_connector *connector)
42 if (!connector->port)
44 mgr = connector->port->mgr;
48 payload = drm_atomic_get_mst_payload_state(mst_state, connector->port);
93 static void intel_hdcp_prepare_streams(struct intel_connector *connector)
95 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
97 struct intel_hdcp *hdcp = &connector->hdcp;
99 if (!intel_encoder_is_mst(intel_attached_encoder(connector))) {
143 bool intel_hdcp_capable(struct intel_connector *connector)
145 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
146 const struct intel_hdcp_shim *shim = connector->hdcp.shim;
164 bool intel_hdcp2_capable(struct intel_connector *connector)
166 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
167 struct drm_i915_private *i915 = to_i915(connector->base.dev);
168 struct intel_hdcp *hdcp = &connector->hdcp;
379 int intel_hdcp_validate_v_prime(struct intel_connector *connector,
383 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
384 struct drm_i915_private *i915 = to_i915(connector->base.dev);
385 enum transcoder cpu_transcoder = connector->hdcp.cpu_transcoder;
623 int intel_hdcp_auth_downstream(struct intel_connector *connector)
625 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
626 struct drm_i915_private *i915 = to_i915(connector->base.dev);
627 const struct intel_hdcp_shim *shim = connector->hdcp.shim;
684 ret = intel_hdcp_validate_v_prime(connector, shim,
706 static int intel_hdcp_auth(struct intel_connector *connector)
708 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
709 struct drm_i915_private *i915 = to_i915(connector->base.dev);
710 struct intel_hdcp *hdcp = &connector->hdcp;
712 enum transcoder cpu_transcoder = connector->hdcp.cpu_transcoder;
861 ret = shim->stream_encryption(connector, true);
864 connector->base.name, connector->base.base.id);
872 return intel_hdcp_auth_downstream(connector);
878 static int _intel_hdcp_disable(struct intel_connector *connector)
880 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
881 struct drm_i915_private *i915 = to_i915(connector->base.dev);
882 struct intel_hdcp *hdcp = &connector->hdcp;
889 connector->base.name, connector->base.base.id);
892 ret = hdcp->shim->stream_encryption(connector, false);
895 connector->base.name, connector->base.base.id);
933 static int _intel_hdcp_enable(struct intel_connector *connector)
935 struct drm_i915_private *i915 = to_i915(connector->base.dev);
936 struct intel_hdcp *hdcp = &connector->hdcp;
940 connector->base.name, connector->base.base.id);
961 ret = intel_hdcp_auth(connector);
970 _intel_hdcp_disable(connector);
983 static void intel_hdcp_update_value(struct intel_connector *connector,
986 struct drm_device *dev = connector->base.dev;
987 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
988 struct intel_hdcp *hdcp = &connector->hdcp;
989 struct drm_i915_private *i915 = to_i915(connector->base.dev);
991 drm_WARN_ON(connector->base.dev, !mutex_is_locked(&hdcp->mutex));
1007 drm_connector_get(&connector->base);
1009 drm_connector_put(&connector->base);
1014 static int intel_hdcp_check_link(struct intel_connector *connector)
1016 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1017 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1018 struct intel_hdcp *hdcp = &connector->hdcp;
1039 connector->base.name, connector->base.base.id,
1042 intel_hdcp_update_value(connector,
1048 if (hdcp->shim->check_link(dig_port, connector)) {
1050 intel_hdcp_update_value(connector,
1058 connector->base.name, connector->base.base.id);
1060 ret = _intel_hdcp_disable(connector);
1063 intel_hdcp_update_value(connector,
1069 ret = _intel_hdcp_enable(connector);
1072 intel_hdcp_update_value(connector,
1088 struct intel_connector *connector = intel_hdcp_to_connector(hdcp);
1089 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1100 drm_hdcp_update_content_protection(&connector->base,
1106 drm_connector_put(&connector->base);
1116 hdcp2_prepare_ake_init(struct intel_connector *connector,
1119 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1121 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1143 hdcp2_verify_rx_cert_prepare_km(struct intel_connector *connector,
1149 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1151 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1174 static int hdcp2_verify_hprime(struct intel_connector *connector,
1177 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1179 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1200 hdcp2_store_pairing_info(struct intel_connector *connector,
1203 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1205 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1227 hdcp2_prepare_lc_init(struct intel_connector *connector,
1230 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1232 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1254 hdcp2_verify_lprime(struct intel_connector *connector,
1257 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1259 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1280 static int hdcp2_prepare_skey(struct intel_connector *connector,
1283 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1285 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1307 hdcp2_verify_rep_topology_prepare_ack(struct intel_connector *connector,
1312 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1314 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1339 hdcp2_verify_mprime(struct intel_connector *connector,
1342 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1344 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1364 static int hdcp2_authenticate_port(struct intel_connector *connector)
1366 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1368 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1389 static int hdcp2_close_session(struct intel_connector *connector)
1391 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1392 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1411 static int hdcp2_deauthenticate_port(struct intel_connector *connector)
1413 return hdcp2_close_session(connector);
1417 static int hdcp2_authentication_key_exchange(struct intel_connector *connector)
1419 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1420 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1421 struct intel_hdcp *hdcp = &connector->hdcp;
1437 ret = hdcp2_prepare_ake_init(connector, &msgs.ake_init);
1469 ret = hdcp2_verify_rx_cert_prepare_km(connector, &msgs.send_cert,
1484 ret = hdcp2_verify_hprime(connector, &msgs.send_hprime);
1497 ret = hdcp2_store_pairing_info(connector, &msgs.pairing_info);
1506 static int hdcp2_locality_check(struct intel_connector *connector)
1508 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1509 struct intel_hdcp *hdcp = &connector->hdcp;
1518 ret = hdcp2_prepare_lc_init(connector, &msgs.lc_init);
1534 ret = hdcp2_verify_lprime(connector, &msgs.send_lprime);
1542 static int hdcp2_session_key_exchange(struct intel_connector *connector)
1544 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1545 struct intel_hdcp *hdcp = &connector->hdcp;
1549 ret = hdcp2_prepare_skey(connector, &send_eks);
1562 int _hdcp2_propagate_stream_management_info(struct intel_connector *connector)
1564 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1566 struct intel_hdcp *hdcp = &connector->hdcp;
1574 if (connector->hdcp.seq_num_m > HDCP_2_2_SEQ_NUM_MAX)
1603 ret = hdcp2_verify_mprime(connector, &msgs.stream_ready);
1612 int hdcp2_authenticate_repeater_topology(struct intel_connector *connector)
1614 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1615 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1616 struct intel_hdcp *hdcp = &connector->hdcp;
1672 ret = hdcp2_verify_rep_topology_prepare_ack(connector,
1687 static int hdcp2_authenticate_sink(struct intel_connector *connector)
1689 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1690 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1691 struct intel_hdcp *hdcp = &connector->hdcp;
1695 ret = hdcp2_authentication_key_exchange(connector);
1701 ret = hdcp2_locality_check(connector);
1708 ret = hdcp2_session_key_exchange(connector);
1723 ret = hdcp2_authenticate_repeater_topology(connector);
1734 static int hdcp2_enable_stream_encryption(struct intel_connector *connector)
1736 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1737 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1739 struct intel_hdcp *hdcp = &connector->hdcp;
1747 connector->base.name, connector->base.base.id);
1753 ret = hdcp->shim->stream_2_2_encryption(connector, true);
1756 connector->base.name, connector->base.base.id);
1766 if (hdcp2_deauthenticate_port(connector) < 0)
1775 static int hdcp2_enable_encryption(struct intel_connector *connector)
1777 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1778 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1779 struct intel_hdcp *hdcp = &connector->hdcp;
1814 static int hdcp2_disable_encryption(struct intel_connector *connector)
1816 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1817 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1818 struct intel_hdcp *hdcp = &connector->hdcp;
1852 hdcp2_propagate_stream_management_info(struct intel_connector *connector)
1854 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1857 if (!connector->hdcp.is_repeater)
1861 ret = _hdcp2_propagate_stream_management_info(connector);
1866 if (connector->hdcp.seq_num_m > HDCP_2_2_SEQ_NUM_MAX) {
1880 static int hdcp2_authenticate_and_encrypt(struct intel_connector *connector)
1882 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1883 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1887 ret = hdcp2_authenticate_sink(connector);
1889 intel_hdcp_prepare_streams(connector);
1891 ret = hdcp2_propagate_stream_management_info(connector);
1899 ret = hdcp2_authenticate_port(connector);
1909 if (hdcp2_deauthenticate_port(connector) < 0)
1919 ret = hdcp2_enable_encryption(connector);
1923 if (hdcp2_deauthenticate_port(connector) < 0)
1929 ret = hdcp2_enable_stream_encryption(connector);
1934 static int _intel_hdcp2_enable(struct intel_connector *connector)
1936 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1937 struct intel_hdcp *hdcp = &connector->hdcp;
1941 connector->base.name, connector->base.base.id,
1944 ret = hdcp2_authenticate_and_encrypt(connector);
1952 connector->base.name, connector->base.base.id,
1960 _intel_hdcp2_disable(struct intel_connector *connector, bool hdcp2_link_recovery)
1962 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
1963 struct drm_i915_private *i915 = to_i915(connector->base.dev);
1965 struct intel_hdcp *hdcp = &connector->hdcp;
1969 connector->base.name, connector->base.base.id);
1972 ret = hdcp->shim->stream_2_2_encryption(connector, false);
1975 connector->base.name, connector->base.base.id);
1985 ret = hdcp2_disable_encryption(connector);
1987 if (hdcp2_deauthenticate_port(connector) < 0)
1990 connector->hdcp.hdcp2_encrypted = false;
1998 static int intel_hdcp2_check_link(struct intel_connector *connector)
2000 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
2001 struct drm_i915_private *i915 = to_i915(connector->base.dev);
2002 struct intel_hdcp *hdcp = &connector->hdcp;
2024 _intel_hdcp2_disable(connector, true);
2025 intel_hdcp_update_value(connector,
2031 ret = hdcp->shim->check_2_2_link(dig_port, connector);
2034 intel_hdcp_update_value(connector,
2047 ret = hdcp2_authenticate_repeater_topology(connector);
2049 intel_hdcp_update_value(connector,
2056 connector->base.name, connector->base.base.id,
2061 connector->base.name, connector->base.base.id);
2064 ret = _intel_hdcp2_disable(connector, true);
2068 connector->base.name, connector->base.base.id, ret);
2069 intel_hdcp_update_value(connector,
2074 ret = _intel_hdcp2_enable(connector);
2078 connector->base.name, connector->base.base.id,
2080 intel_hdcp_update_value(connector,
2097 struct intel_connector *connector = intel_hdcp_to_connector(hdcp);
2098 struct drm_i915_private *i915 = to_i915(connector->base.dev);
2100 if (drm_connector_is_unregistered(&connector->base))
2103 if (!intel_hdcp2_check_link(connector))
2106 else if (!intel_hdcp_check_link(connector))
2165 static int initialize_hdcp_port_data(struct intel_connector *connector,
2171 struct drm_i915_private *i915 = to_i915(connector->base.dev);
2251 static void intel_hdcp2_init(struct intel_connector *connector,
2255 struct drm_i915_private *i915 = to_i915(connector->base.dev);
2256 struct intel_hdcp *hdcp = &connector->hdcp;
2259 ret = initialize_hdcp_port_data(connector, dig_port, shim);
2268 int intel_hdcp_init(struct intel_connector *connector,
2272 struct drm_i915_private *i915 = to_i915(connector->base.dev);
2273 struct intel_hdcp *hdcp = &connector->hdcp;
2280 intel_hdcp2_init(connector, dig_port, shim);
2283 drm_connector_attach_content_protection_property(&connector->base,
2306 struct intel_connector *connector;
2319 for_each_intel_connector_iter(connector, &conn_iter) {
2320 if (connector->base.status == connector_status_disconnected)
2323 if (!intel_encoder_is_mst(intel_attached_encoder(connector)))
2326 conn_dig_port = intel_attached_dig_port(connector);
2331 intel_conn_to_vcpi(&state->base, connector);
2355 struct intel_connector *connector =
2356 to_intel_connector(conn_state->connector);
2357 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
2358 struct intel_hdcp *hdcp = &connector->hdcp;
2365 if (!connector->encoder) {
2367 connector->base.name, connector->base.base.id);
2393 if (intel_hdcp2_capable(connector)) {
2396 ret = _intel_hdcp2_enable(connector);
2411 if (ret && intel_hdcp_capable(connector) &&
2413 ret = _intel_hdcp_enable(connector);
2419 intel_hdcp_update_value(connector,
2430 int intel_hdcp_disable(struct intel_connector *connector)
2432 struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
2433 struct intel_hdcp *hdcp = &connector->hdcp;
2445 intel_hdcp_update_value(connector,
2448 ret = _intel_hdcp2_disable(connector, false);
2450 ret = _intel_hdcp_disable(connector);
2464 struct intel_connector *connector =
2465 to_intel_connector(conn_state->connector);
2466 struct intel_hdcp *hdcp = &connector->hdcp;
2468 struct drm_i915_private *i915 = to_i915(connector->base.dev);
2470 if (!connector->hdcp.shim)
2485 intel_hdcp_disable(connector);
2494 drm_connector_get(&connector->base);
2496 drm_connector_put(&connector->base);
2512 drm_connector_get(&connector->base);
2514 drm_connector_put(&connector->base);
2540 void intel_hdcp_cleanup(struct intel_connector *connector)
2542 struct intel_hdcp *hdcp = &connector->hdcp;
2548 * If the connector is registered, it's possible userspace could kick
2551 drm_WARN_ON(connector->base.dev,
2552 connector->base.registration_state == DRM_CONNECTOR_REGISTERED);
2555 * Now that the connector is not registered, check_work won't be run,
2563 * function. Instead, we rely on the connector references grabbed before
2564 * scheduling prop_work to ensure the connector is alive when prop_work
2569 drm_WARN_ON(connector->base.dev, work_pending(&hdcp->prop_work));
2576 void intel_hdcp_atomic_check(struct drm_connector *connector,
2586 * If the connector is being disabled with CP enabled, mark it
2587 * desired so it's re-enabled when the connector is brought back
2624 void intel_hdcp_handle_cp_irq(struct intel_connector *connector)
2626 struct intel_hdcp *hdcp = &connector->hdcp;
2627 struct drm_i915_private *i915 = to_i915(connector->base.dev);
2632 atomic_inc(&connector->hdcp.cp_irq_count);
2633 wake_up_all(&connector->hdcp.cp_irq_queue);