Lines Matching full:connector
69 * Decision to use MST for a sink happens at detect on the connector attached to
199 static int intel_dp_mst_dsc_get_slice_count(const struct intel_connector *connector, in intel_dp_mst_dsc_get_slice_count() argument
206 return intel_dp_dsc_get_slice_count(connector, in intel_dp_mst_dsc_get_slice_count()
220 struct intel_connector *connector = in intel_dp_mtp_tu_compute_config() local
221 to_intel_connector(conn_state->connector); in intel_dp_mtp_tu_compute_config()
230 if (!intel_dp_supports_fec(intel_dp, connector, crtc_state)) in intel_dp_mtp_tu_compute_config()
250 dsc_slice_count = intel_dp_mst_dsc_get_slice_count(connector, crtc_state); in intel_dp_mtp_tu_compute_config()
323 connector->port, in intel_dp_mtp_tu_compute_config()
414 struct intel_connector *connector = to_intel_connector(conn_state->connector); in mst_stream_dsc_compute_link_config() local
423 num_bpc = drm_dp_dsc_sink_supported_input_bpcs(connector->dp.dsc_dpcd, in mst_stream_dsc_compute_link_config()
496 hblank_expansion_quirk_needs_dsc(const struct intel_connector *connector, in hblank_expansion_quirk_needs_dsc() argument
502 bool is_uhbr_sink = connector->mst_port && in hblank_expansion_quirk_needs_dsc()
503 drm_dp_128b132b_supported(connector->mst_port->dpcd); in hblank_expansion_quirk_needs_dsc()
506 if (!connector->dp.dsc_hblank_expansion_quirk) in hblank_expansion_quirk_needs_dsc()
515 if (!intel_dp_mst_dsc_get_slice_count(connector, crtc_state)) in hblank_expansion_quirk_needs_dsc()
523 const struct intel_connector *connector, in adjust_limits_for_dsc_hblank_expansion_quirk() argument
528 struct intel_display *display = to_intel_display(connector); in adjust_limits_for_dsc_hblank_expansion_quirk()
532 if (!hblank_expansion_quirk_needs_dsc(connector, crtc_state, limits)) in adjust_limits_for_dsc_hblank_expansion_quirk()
536 if (intel_dp_supports_dsc(intel_dp, connector, crtc_state)) { in adjust_limits_for_dsc_hblank_expansion_quirk()
538 "[CRTC:%d:%s][CONNECTOR:%d:%s] DSC needed by hblank expansion quirk\n", in adjust_limits_for_dsc_hblank_expansion_quirk()
540 connector->base.base.id, connector->base.name); in adjust_limits_for_dsc_hblank_expansion_quirk()
545 … "[CRTC:%d:%s][CONNECTOR:%d:%s] Increasing link min bpp to 24 due to hblank expansion quirk\n", in adjust_limits_for_dsc_hblank_expansion_quirk()
547 connector->base.base.id, connector->base.name); in adjust_limits_for_dsc_hblank_expansion_quirk()
568 …"[CRTC:%d:%s][CONNECTOR:%d:%s] Increasing link min bpp to " FXP_Q4_FMT " in DSC mode due to hblank… in adjust_limits_for_dsc_hblank_expansion_quirk()
570 connector->base.base.id, connector->base.name, in adjust_limits_for_dsc_hblank_expansion_quirk()
583 const struct intel_connector *connector, in mst_stream_compute_config_limits() argument
593 connector, in mst_stream_compute_config_limits()
607 struct intel_connector *connector = in mst_stream_compute_config() local
608 to_intel_connector(conn_state->connector); in mst_stream_compute_config()
617 !intel_dp_supports_fec(intel_dp, connector, pipe_config)) in mst_stream_compute_config()
623 num_joined_pipes = intel_dp_num_joined_pipes(intel_dp, connector, in mst_stream_compute_config()
636 !mst_stream_compute_config_limits(intel_dp, connector, in mst_stream_compute_config()
650 if (dsc_needed && !intel_dp_supports_dsc(intel_dp, connector, pipe_config)) { in mst_stream_compute_config()
662 if (!mst_stream_compute_config_limits(intel_dp, connector, in mst_stream_compute_config()
709 return intel_dp_tunnel_atomic_compute_stream_bw(state, intel_dp, connector, in mst_stream_compute_config()
723 struct intel_connector *connector; in intel_dp_mst_transcoder_mask() local
730 for_each_new_intel_connector_in_state(state, connector, conn_state, i) { in intel_dp_mst_transcoder_mask()
734 if (connector->mst_port != mst_port || !conn_state->base.crtc) in intel_dp_mst_transcoder_mask()
754 struct intel_connector *connector; in get_pipes_downstream_of_mst_port() local
758 for_each_new_intel_connector_in_state(state, connector, conn_state, i) { in get_pipes_downstream_of_mst_port()
762 if (&connector->mst_port->mst_mgr != mst_mgr) in get_pipes_downstream_of_mst_port()
765 if (connector->port != parent_port && in get_pipes_downstream_of_mst_port()
767 connector->port, in get_pipes_downstream_of_mst_port()
793 /* Atomic connector check should've added all the MST CRTCs. */ in intel_dp_mst_check_fec_change()
901 mst_connector_atomic_topology_check(struct intel_connector *connector, in mst_connector_atomic_topology_check() argument
904 struct intel_display *display = to_intel_display(connector); in mst_connector_atomic_topology_check()
909 if (!intel_connector_needs_modeset(state, &connector->base)) in mst_connector_atomic_topology_check()
918 if (connector_iter->mst_port != connector->mst_port || in mst_connector_atomic_topology_check()
919 connector_iter == connector) in mst_connector_atomic_topology_check()
950 mst_connector_atomic_check(struct drm_connector *connector, in mst_connector_atomic_check() argument
955 to_intel_connector(connector); in mst_connector_atomic_check()
958 ret = intel_digital_connector_atomic_check(connector, &state->base); in mst_connector_atomic_check()
966 if (intel_connector_needs_modeset(state, connector)) { in mst_connector_atomic_check()
987 struct intel_connector *connector = in mst_stream_disable() local
988 to_intel_connector(old_conn_state->connector); in mst_stream_disable()
996 intel_hdcp_disable(intel_mst->connector); in mst_stream_disable()
998 intel_dp_sink_disable_decompression(state, connector, old_crtc_state); in mst_stream_disable()
1010 struct intel_connector *connector = in mst_stream_post_disable() local
1011 to_intel_connector(old_conn_state->connector); in mst_stream_post_disable()
1017 drm_atomic_get_mst_payload_state(old_mst_state, connector->port); in mst_stream_post_disable()
1019 drm_atomic_get_mst_payload_state(new_mst_state, connector->port); in mst_stream_post_disable()
1070 drm_dp_send_power_updown_phy(&intel_dp->mst_mgr, connector->port, in mst_stream_post_disable()
1089 intel_mst->connector = NULL; in mst_stream_post_disable()
1167 struct intel_connector *connector = in mst_stream_pre_enable() local
1168 to_intel_connector(conn_state->connector); in mst_stream_pre_enable()
1174 /* MST encoders are bound to a crtc, not to a connector, in mst_stream_pre_enable()
1177 connector->encoder = encoder; in mst_stream_pre_enable()
1178 intel_mst->connector = connector; in mst_stream_pre_enable()
1189 drm_dp_send_power_updown_phy(&intel_dp->mst_mgr, connector->port, true); in mst_stream_pre_enable()
1191 intel_dp_sink_enable_decompression(state, connector, pipe_config); in mst_stream_pre_enable()
1203 drm_atomic_get_mst_payload_state(mst_state, connector->port)); in mst_stream_pre_enable()
1266 struct intel_connector *connector = to_intel_connector(conn_state->connector); in mst_stream_enable() local
1307 connector->port)); in mst_stream_enable()
1335 if (intel_mst->connector) in mst_stream_get_hw_state()
1356 static int mst_connector_get_ddc_modes(struct drm_connector *connector) in mst_connector_get_ddc_modes() argument
1358 struct intel_display *display = to_intel_display(connector->dev); in mst_connector_get_ddc_modes()
1359 struct intel_connector *intel_connector = to_intel_connector(connector); in mst_connector_get_ddc_modes()
1364 if (drm_connector_is_unregistered(connector)) in mst_connector_get_ddc_modes()
1365 return intel_connector_update_modes(connector, NULL); in mst_connector_get_ddc_modes()
1368 return drm_edid_connector_add_modes(connector); in mst_connector_get_ddc_modes()
1370 drm_edid = drm_dp_mst_edid_read(connector, &intel_dp->mst_mgr, intel_connector->port); in mst_connector_get_ddc_modes()
1372 ret = intel_connector_update_modes(connector, drm_edid); in mst_connector_get_ddc_modes()
1380 mst_connector_late_register(struct drm_connector *connector) in mst_connector_late_register() argument
1382 struct intel_connector *intel_connector = to_intel_connector(connector); in mst_connector_late_register()
1385 ret = drm_dp_mst_connector_late_register(connector, in mst_connector_late_register()
1390 ret = intel_connector_register(connector); in mst_connector_late_register()
1392 drm_dp_mst_connector_early_unregister(connector, in mst_connector_late_register()
1399 mst_connector_early_unregister(struct drm_connector *connector) in mst_connector_early_unregister() argument
1401 struct intel_connector *intel_connector = to_intel_connector(connector); in mst_connector_early_unregister()
1403 intel_connector_unregister(connector); in mst_connector_early_unregister()
1404 drm_dp_mst_connector_early_unregister(connector, in mst_connector_early_unregister()
1419 static int mst_connector_get_modes(struct drm_connector *connector) in mst_connector_get_modes() argument
1421 return mst_connector_get_ddc_modes(connector); in mst_connector_get_modes()
1425 mst_connector_mode_valid_ctx(struct drm_connector *connector, in mst_connector_mode_valid_ctx() argument
1430 struct intel_display *display = to_intel_display(connector->dev); in mst_connector_mode_valid_ctx()
1431 struct drm_i915_private *dev_priv = to_i915(connector->dev); in mst_connector_mode_valid_ctx()
1432 struct intel_connector *intel_connector = to_intel_connector(connector); in mst_connector_mode_valid_ctx()
1446 if (drm_connector_is_unregistered(connector)) { in mst_connector_mode_valid_ctx()
1500 * TBD pass the connector BPC, in mst_connector_mode_valid_ctx()
1540 mst_connector_atomic_best_encoder(struct drm_connector *connector, in mst_connector_atomic_best_encoder() argument
1544 connector); in mst_connector_atomic_best_encoder()
1545 struct intel_connector *intel_connector = to_intel_connector(connector); in mst_connector_atomic_best_encoder()
1553 mst_connector_detect_ctx(struct drm_connector *connector, in mst_connector_detect_ctx() argument
1556 struct intel_display *display = to_intel_display(connector->dev); in mst_connector_detect_ctx()
1557 struct intel_connector *intel_connector = to_intel_connector(connector); in mst_connector_detect_ctx()
1563 if (drm_connector_is_unregistered(connector)) in mst_connector_detect_ctx()
1567 return connector->status; in mst_connector_detect_ctx()
1571 return drm_dp_mst_detect_port(connector, ctx, &intel_dp->mst_mgr, in mst_connector_detect_ctx()
1595 static bool mst_connector_get_hw_state(struct intel_connector *connector) in mst_connector_get_hw_state() argument
1598 struct intel_encoder *encoder = intel_attached_encoder(connector); in mst_connector_get_hw_state()
1601 if (!encoder || !connector->base.state->crtc) in mst_connector_get_hw_state()
1608 struct drm_connector *connector, in mst_topology_add_connector_properties() argument
1613 drm_object_attach_property(&connector->base, in mst_topology_add_connector_properties()
1615 drm_object_attach_property(&connector->base, in mst_topology_add_connector_properties()
1618 intel_attach_force_audio_property(connector); in mst_topology_add_connector_properties()
1619 intel_attach_broadcast_rgb_property(connector); in mst_topology_add_connector_properties()
1622 * Reuse the prop from the SST connector because we're in mst_topology_add_connector_properties()
1625 connector->max_bpc_property = in mst_topology_add_connector_properties()
1627 if (connector->max_bpc_property) in mst_topology_add_connector_properties()
1628 drm_connector_attach_max_bpc_property(connector, 6, 12); in mst_topology_add_connector_properties()
1630 return drm_connector_set_path_property(connector, pathprop); in mst_topology_add_connector_properties()
1635 struct intel_connector *connector) in intel_dp_mst_read_decompression_port_dsc_caps() argument
1639 if (!connector->dp.dsc_decompression_aux) in intel_dp_mst_read_decompression_port_dsc_caps()
1642 if (drm_dp_read_dpcd_caps(connector->dp.dsc_decompression_aux, dpcd_caps) < 0) in intel_dp_mst_read_decompression_port_dsc_caps()
1645 intel_dp_get_dsc_sink_cap(dpcd_caps[DP_DPCD_REV], connector); in intel_dp_mst_read_decompression_port_dsc_caps()
1648 static bool detect_dsc_hblank_expansion_quirk(const struct intel_connector *connector) in detect_dsc_hblank_expansion_quirk() argument
1650 struct intel_display *display = to_intel_display(connector); in detect_dsc_hblank_expansion_quirk()
1651 struct drm_dp_aux *aux = connector->dp.dsc_decompression_aux; in detect_dsc_hblank_expansion_quirk()
1662 if (drm_dp_mst_port_is_logical(connector->port)) { in detect_dsc_hblank_expansion_quirk()
1663 aux = drm_dp_mst_aux_for_parent(connector->port); in detect_dsc_hblank_expansion_quirk()
1665 aux = &connector->mst_port->aux; in detect_dsc_hblank_expansion_quirk()
1689 "[CONNECTOR:%d:%s] DSC HBLANK expansion quirk detected\n", in detect_dsc_hblank_expansion_quirk()
1690 connector->base.base.id, connector->base.name); in detect_dsc_hblank_expansion_quirk()
1704 struct drm_connector *connector; in mst_topology_add_connector() local
1712 connector = &intel_connector->base; in mst_topology_add_connector()
1722 ret = drm_connector_dynamic_init(display->drm, connector, &mst_connector_funcs, in mst_topology_add_connector()
1735 drm_connector_helper_add(connector, &mst_connector_helper_funcs); in mst_topology_add_connector()
1746 ret = mst_topology_add_connector_properties(intel_dp, connector, pathprop); in mst_topology_add_connector()
1753 connector->name, connector->base.id); in mst_topology_add_connector()
1755 return connector; in mst_topology_add_connector()
1758 drm_connector_cleanup(connector); in mst_topology_add_connector()
1802 * of possible_crtcs of all the encoders of a given connector in mst_stream_encoder_create()
1803 * to figure out which crtcs can drive said connector. What in mst_stream_encoder_create()
1911 * intel_dp_mst_add_topology_state_for_connector - add MST topology state for a connector
1913 * @connector: connector to add the state for
1914 * @crtc: the CRTC @connector is attached to
1916 * Add the MST topology state for @connector to @state.
1922 struct intel_connector *connector, in intel_dp_mst_add_topology_state_for_connector() argument
1927 if (!connector->mst_port) in intel_dp_mst_add_topology_state_for_connector()
1931 &connector->mst_port->mst_mgr); in intel_dp_mst_add_topology_state_for_connector()
1957 struct intel_connector *connector = to_intel_connector(_connector); in intel_dp_mst_add_topology_state_for_crtc() local
1963 ret = intel_dp_mst_add_topology_state_for_connector(state, connector, crtc); in intel_dp_mst_add_topology_state_for_crtc()
1982 struct intel_connector *connector = in get_connector_in_state_for_crtc() local
1987 return connector; in get_connector_in_state_for_crtc()
2023 const struct intel_connector *connector = in intel_dp_mst_crtc_needs_modeset() local
2029 if (connector->mst_port != crtc_connector->mst_port || in intel_dp_mst_crtc_needs_modeset()
2051 if (connector->dp.dsc_decompression_aux == in intel_dp_mst_crtc_needs_modeset()
2052 &connector->mst_port->aux) in intel_dp_mst_crtc_needs_modeset()
2104 struct intel_connector *connector = intel_dp->attached_connector; in intel_dp_mst_verify_dpcd_state() local
2118 … "[CONNECTOR:%d:%s][ENCODER:%d:%s] MST mode got reset, removing topology (ret=%d, ctrl=0x%02x)\n", in intel_dp_mst_verify_dpcd_state()
2119 connector->base.base.id, connector->base.name, in intel_dp_mst_verify_dpcd_state()