Lines Matching full:connector
70 * Decision to use MST for a sink happens at detect on the connector attached to
200 static int intel_dp_mst_dsc_get_slice_count(const struct intel_connector *connector, in intel_dp_mst_dsc_get_slice_count() argument
207 return intel_dp_dsc_get_slice_count(connector, in intel_dp_mst_dsc_get_slice_count()
241 struct intel_connector *connector = in intel_dp_mtp_tu_compute_config() local
242 to_intel_connector(conn_state->connector); in intel_dp_mtp_tu_compute_config()
265 if (!intel_dp_supports_fec(intel_dp, connector, crtc_state)) in intel_dp_mtp_tu_compute_config()
282 dsc_slice_count = intel_dp_mst_dsc_get_slice_count(connector, crtc_state); in intel_dp_mtp_tu_compute_config()
359 connector->mst.port, in intel_dp_mtp_tu_compute_config()
427 struct intel_connector *connector = to_intel_connector(conn_state->connector); in mst_stream_dsc_compute_link_config() local
436 num_bpc = drm_dp_dsc_sink_supported_input_bpcs(connector->dp.dsc_dpcd, in mst_stream_dsc_compute_link_config()
506 hblank_expansion_quirk_needs_dsc(const struct intel_connector *connector, in hblank_expansion_quirk_needs_dsc() argument
512 bool is_uhbr_sink = connector->mst.dp && in hblank_expansion_quirk_needs_dsc()
513 drm_dp_128b132b_supported(connector->mst.dp->dpcd); in hblank_expansion_quirk_needs_dsc()
516 if (!connector->dp.dsc_hblank_expansion_quirk) in hblank_expansion_quirk_needs_dsc()
525 if (!intel_dp_mst_dsc_get_slice_count(connector, crtc_state)) in hblank_expansion_quirk_needs_dsc()
533 const struct intel_connector *connector, in adjust_limits_for_dsc_hblank_expansion_quirk() argument
538 struct intel_display *display = to_intel_display(connector); in adjust_limits_for_dsc_hblank_expansion_quirk()
542 if (!hblank_expansion_quirk_needs_dsc(connector, crtc_state, limits)) in adjust_limits_for_dsc_hblank_expansion_quirk()
546 if (intel_dp_supports_dsc(intel_dp, connector, crtc_state)) { in adjust_limits_for_dsc_hblank_expansion_quirk()
548 "[CRTC:%d:%s][CONNECTOR:%d:%s] DSC needed by hblank expansion quirk\n", in adjust_limits_for_dsc_hblank_expansion_quirk()
550 connector->base.base.id, connector->base.name); in adjust_limits_for_dsc_hblank_expansion_quirk()
555 … "[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()
557 connector->base.base.id, connector->base.name); in adjust_limits_for_dsc_hblank_expansion_quirk()
578 …"[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()
580 connector->base.base.id, connector->base.name, in adjust_limits_for_dsc_hblank_expansion_quirk()
593 const struct intel_connector *connector, in mst_stream_compute_config_limits() argument
603 connector, in mst_stream_compute_config_limits()
617 struct intel_connector *connector = in mst_stream_compute_config() local
618 to_intel_connector(conn_state->connector); in mst_stream_compute_config()
627 !intel_dp_supports_fec(intel_dp, connector, pipe_config)) in mst_stream_compute_config()
633 num_joined_pipes = intel_dp_num_joined_pipes(intel_dp, connector, in mst_stream_compute_config()
646 !mst_stream_compute_config_limits(intel_dp, connector, in mst_stream_compute_config()
660 if (dsc_needed && !intel_dp_supports_dsc(intel_dp, connector, pipe_config)) { in mst_stream_compute_config()
672 if (!mst_stream_compute_config_limits(intel_dp, connector, in mst_stream_compute_config()
719 return intel_dp_tunnel_atomic_compute_stream_bw(state, intel_dp, connector, in mst_stream_compute_config()
733 struct intel_connector *connector; in intel_dp_mst_transcoder_mask() local
740 for_each_new_intel_connector_in_state(state, connector, conn_state, i) { in intel_dp_mst_transcoder_mask()
744 if (connector->mst.dp != mst_port || !conn_state->base.crtc) in intel_dp_mst_transcoder_mask()
764 struct intel_connector *connector; in get_pipes_downstream_of_mst_port() local
768 for_each_new_intel_connector_in_state(state, connector, conn_state, i) { in get_pipes_downstream_of_mst_port()
772 if (&connector->mst.dp->mst.mgr != mst_mgr) in get_pipes_downstream_of_mst_port()
775 if (connector->mst.port != parent_port && in get_pipes_downstream_of_mst_port()
777 connector->mst.port, in get_pipes_downstream_of_mst_port()
803 /* Atomic connector check should've added all the MST CRTCs. */ in intel_dp_mst_check_fec_change()
911 mst_connector_atomic_topology_check(struct intel_connector *connector, in mst_connector_atomic_topology_check() argument
914 struct intel_display *display = to_intel_display(connector); in mst_connector_atomic_topology_check()
919 if (!intel_connector_needs_modeset(state, &connector->base)) in mst_connector_atomic_topology_check()
928 if (connector_iter->mst.dp != connector->mst.dp || in mst_connector_atomic_topology_check()
929 connector_iter == connector) in mst_connector_atomic_topology_check()
964 struct intel_connector *connector = to_intel_connector(_connector); in mst_connector_atomic_check() local
967 ret = intel_digital_connector_atomic_check(&connector->base, &state->base); in mst_connector_atomic_check()
971 ret = mst_connector_atomic_topology_check(connector, state); in mst_connector_atomic_check()
975 if (intel_connector_needs_modeset(state, &connector->base)) { in mst_connector_atomic_check()
977 connector->mst.dp, in mst_connector_atomic_check()
978 connector); in mst_connector_atomic_check()
984 &connector->mst.dp->mst.mgr, in mst_connector_atomic_check()
985 connector->mst.port); in mst_connector_atomic_check()
996 struct intel_connector *connector = in mst_stream_disable() local
997 to_intel_connector(old_conn_state->connector); in mst_stream_disable()
1006 intel_hdcp_disable(intel_mst->connector); in mst_stream_disable()
1008 intel_dp_sink_disable_decompression(state, connector, old_crtc_state); in mst_stream_disable()
1023 struct intel_connector *connector = in mst_stream_post_disable() local
1024 to_intel_connector(old_conn_state->connector); in mst_stream_post_disable()
1030 drm_atomic_get_mst_payload_state(old_mst_state, connector->mst.port); in mst_stream_post_disable()
1032 drm_atomic_get_mst_payload_state(new_mst_state, connector->mst.port); in mst_stream_post_disable()
1083 drm_dp_send_power_updown_phy(&intel_dp->mst.mgr, connector->mst.port, in mst_stream_post_disable()
1102 intel_mst->connector = NULL; in mst_stream_post_disable()
1180 struct intel_connector *connector = in mst_stream_pre_enable() local
1181 to_intel_connector(conn_state->connector); in mst_stream_pre_enable()
1187 /* MST encoders are bound to a crtc, not to a connector, in mst_stream_pre_enable()
1190 connector->encoder = encoder; in mst_stream_pre_enable()
1191 intel_mst->connector = connector; in mst_stream_pre_enable()
1202 drm_dp_send_power_updown_phy(&intel_dp->mst.mgr, connector->mst.port, true); in mst_stream_pre_enable()
1204 intel_dp_sink_enable_decompression(state, connector, pipe_config); in mst_stream_pre_enable()
1216 drm_atomic_get_mst_payload_state(mst_state, connector->mst.port)); in mst_stream_pre_enable()
1278 struct intel_connector *connector = to_intel_connector(conn_state->connector); in mst_stream_enable() local
1342 connector->mst.port)); in mst_stream_enable()
1370 if (intel_mst->connector) in mst_stream_get_hw_state()
1393 struct intel_connector *connector = to_intel_connector(_connector); in mst_connector_get_ddc_modes() local
1394 struct intel_display *display = to_intel_display(connector); in mst_connector_get_ddc_modes()
1395 struct intel_dp *intel_dp = connector->mst.dp; in mst_connector_get_ddc_modes()
1399 if (drm_connector_is_unregistered(&connector->base)) in mst_connector_get_ddc_modes()
1400 return intel_connector_update_modes(&connector->base, NULL); in mst_connector_get_ddc_modes()
1403 return drm_edid_connector_add_modes(&connector->base); in mst_connector_get_ddc_modes()
1405 drm_edid = drm_dp_mst_edid_read(&connector->base, &intel_dp->mst.mgr, connector->mst.port); in mst_connector_get_ddc_modes()
1407 ret = intel_connector_update_modes(&connector->base, drm_edid); in mst_connector_get_ddc_modes()
1417 struct intel_connector *connector = to_intel_connector(_connector); in mst_connector_late_register() local
1420 ret = drm_dp_mst_connector_late_register(&connector->base, connector->mst.port); in mst_connector_late_register()
1424 ret = intel_connector_register(&connector->base); in mst_connector_late_register()
1426 drm_dp_mst_connector_early_unregister(&connector->base, connector->mst.port); in mst_connector_late_register()
1434 struct intel_connector *connector = to_intel_connector(_connector); in mst_connector_early_unregister() local
1436 intel_connector_unregister(&connector->base); in mst_connector_early_unregister()
1437 drm_dp_mst_connector_early_unregister(&connector->base, connector->mst.port); in mst_connector_early_unregister()
1453 struct intel_connector *connector = to_intel_connector(_connector); in mst_connector_get_modes() local
1455 return mst_connector_get_ddc_modes(&connector->base); in mst_connector_get_modes()
1464 struct intel_connector *connector = to_intel_connector(_connector); in mst_connector_mode_valid_ctx() local
1465 struct intel_display *display = to_intel_display(connector); in mst_connector_mode_valid_ctx()
1466 struct intel_dp *intel_dp = connector->mst.dp; in mst_connector_mode_valid_ctx()
1468 struct drm_dp_mst_port *port = connector->mst.port; in mst_connector_mode_valid_ctx()
1479 if (drm_connector_is_unregistered(&connector->base)) { in mst_connector_mode_valid_ctx()
1517 num_joined_pipes = intel_dp_num_joined_pipes(intel_dp, connector, in mst_connector_mode_valid_ctx()
1531 if (intel_dp_has_dsc(connector)) { in mst_connector_mode_valid_ctx()
1533 * TBD pass the connector BPC, in mst_connector_mode_valid_ctx()
1536 int pipe_bpp = intel_dp_dsc_compute_max_bpp(connector, U8_MAX); in mst_connector_mode_valid_ctx()
1538 if (drm_dp_sink_supports_fec(connector->dp.fec_capability)) { in mst_connector_mode_valid_ctx()
1549 intel_dp_dsc_get_slice_count(connector, in mst_connector_mode_valid_ctx()
1576 struct intel_connector *connector = to_intel_connector(_connector); in mst_connector_atomic_best_encoder() local
1578 drm_atomic_get_new_connector_state(state, &connector->base); in mst_connector_atomic_best_encoder()
1579 struct intel_dp *intel_dp = connector->mst.dp; in mst_connector_atomic_best_encoder()
1589 struct intel_connector *connector = to_intel_connector(_connector); in mst_connector_detect_ctx() local
1590 struct intel_display *display = to_intel_display(connector); in mst_connector_detect_ctx()
1591 struct intel_dp *intel_dp = connector->mst.dp; in mst_connector_detect_ctx()
1596 if (drm_connector_is_unregistered(&connector->base)) in mst_connector_detect_ctx()
1600 return connector->base.status; in mst_connector_detect_ctx()
1602 intel_dp_flush_connector_commits(connector); in mst_connector_detect_ctx()
1604 return drm_dp_mst_detect_port(&connector->base, ctx, &intel_dp->mst.mgr, in mst_connector_detect_ctx()
1605 connector->mst.port); in mst_connector_detect_ctx()
1628 static bool mst_connector_get_hw_state(struct intel_connector *connector) in mst_connector_get_hw_state() argument
1631 struct intel_encoder *encoder = intel_attached_encoder(connector); in mst_connector_get_hw_state()
1634 if (!encoder || !connector->base.state->crtc) in mst_connector_get_hw_state()
1645 struct intel_connector *connector = to_intel_connector(_connector); in mst_topology_add_connector_properties() local
1647 drm_object_attach_property(&connector->base.base, in mst_topology_add_connector_properties()
1649 drm_object_attach_property(&connector->base.base, in mst_topology_add_connector_properties()
1652 intel_attach_force_audio_property(&connector->base); in mst_topology_add_connector_properties()
1653 intel_attach_broadcast_rgb_property(&connector->base); in mst_topology_add_connector_properties()
1656 * Reuse the prop from the SST connector because we're in mst_topology_add_connector_properties()
1659 connector->base.max_bpc_property = in mst_topology_add_connector_properties()
1661 if (connector->base.max_bpc_property) in mst_topology_add_connector_properties()
1662 drm_connector_attach_max_bpc_property(&connector->base, 6, 12); in mst_topology_add_connector_properties()
1664 return drm_connector_set_path_property(&connector->base, pathprop); in mst_topology_add_connector_properties()
1669 struct intel_connector *connector) in intel_dp_mst_read_decompression_port_dsc_caps() argument
1673 if (!connector->dp.dsc_decompression_aux) in intel_dp_mst_read_decompression_port_dsc_caps()
1676 if (drm_dp_read_dpcd_caps(connector->dp.dsc_decompression_aux, dpcd_caps) < 0) in intel_dp_mst_read_decompression_port_dsc_caps()
1679 intel_dp_get_dsc_sink_cap(dpcd_caps[DP_DPCD_REV], connector); in intel_dp_mst_read_decompression_port_dsc_caps()
1682 static bool detect_dsc_hblank_expansion_quirk(const struct intel_connector *connector) in detect_dsc_hblank_expansion_quirk() argument
1684 struct intel_display *display = to_intel_display(connector); in detect_dsc_hblank_expansion_quirk()
1685 struct drm_dp_aux *aux = connector->dp.dsc_decompression_aux; in detect_dsc_hblank_expansion_quirk()
1696 if (drm_dp_mst_port_is_logical(connector->mst.port)) { in detect_dsc_hblank_expansion_quirk()
1697 aux = drm_dp_mst_aux_for_parent(connector->mst.port); in detect_dsc_hblank_expansion_quirk()
1699 aux = &connector->mst.dp->aux; in detect_dsc_hblank_expansion_quirk()
1723 "[CONNECTOR:%d:%s] DSC HBLANK expansion quirk detected\n", in detect_dsc_hblank_expansion_quirk()
1724 connector->base.base.id, connector->base.name); in detect_dsc_hblank_expansion_quirk()
1737 struct intel_connector *connector; in mst_topology_add_connector() local
1741 connector = intel_connector_alloc(); in mst_topology_add_connector()
1742 if (!connector) in mst_topology_add_connector()
1745 connector->get_hw_state = mst_connector_get_hw_state; in mst_topology_add_connector()
1746 connector->sync_state = intel_dp_connector_sync_state; in mst_topology_add_connector()
1747 connector->mst.dp = intel_dp; in mst_topology_add_connector()
1748 connector->mst.port = port; in mst_topology_add_connector()
1751 ret = drm_connector_dynamic_init(display->drm, &connector->base, &mst_connector_funcs, in mst_topology_add_connector()
1756 connector->dp.dsc_decompression_aux = drm_dp_mst_dsc_aux_for_port(port); in mst_topology_add_connector()
1757 intel_dp_mst_read_decompression_port_dsc_caps(intel_dp, connector); in mst_topology_add_connector()
1758 connector->dp.dsc_hblank_expansion_quirk = in mst_topology_add_connector()
1759 detect_dsc_hblank_expansion_quirk(connector); in mst_topology_add_connector()
1761 drm_connector_helper_add(&connector->base, &mst_connector_helper_funcs); in mst_topology_add_connector()
1767 ret = drm_connector_attach_encoder(&connector->base, enc); in mst_topology_add_connector()
1772 ret = mst_topology_add_connector_properties(intel_dp, &connector->base, pathprop); in mst_topology_add_connector()
1776 ret = intel_dp_hdcp_init(dig_port, connector); in mst_topology_add_connector()
1779 connector->base.name, connector->base.base.id); in mst_topology_add_connector()
1781 return &connector->base; in mst_topology_add_connector()
1784 drm_connector_cleanup(&connector->base); in mst_topology_add_connector()
1787 intel_connector_free(connector); in mst_topology_add_connector()
1832 * of possible_crtcs of all the encoders of a given connector in mst_stream_encoder_create()
1833 * to figure out which crtcs can drive said connector. What in mst_stream_encoder_create()
1941 * intel_dp_mst_add_topology_state_for_connector - add MST topology state for a connector
1943 * @connector: connector to add the state for
1944 * @crtc: the CRTC @connector is attached to
1946 * Add the MST topology state for @connector to @state.
1952 struct intel_connector *connector, in intel_dp_mst_add_topology_state_for_connector() argument
1957 if (!connector->mst.dp) in intel_dp_mst_add_topology_state_for_connector()
1961 &connector->mst.dp->mst.mgr); in intel_dp_mst_add_topology_state_for_connector()
1987 struct intel_connector *connector = to_intel_connector(_connector); in intel_dp_mst_add_topology_state_for_crtc() local
1993 ret = intel_dp_mst_add_topology_state_for_connector(state, connector, crtc); in intel_dp_mst_add_topology_state_for_crtc()
2012 struct intel_connector *connector = in get_connector_in_state_for_crtc() local
2017 return connector; in get_connector_in_state_for_crtc()
2053 const struct intel_connector *connector = in intel_dp_mst_crtc_needs_modeset() local
2059 if (connector->mst.dp != crtc_connector->mst.dp || in intel_dp_mst_crtc_needs_modeset()
2081 if (connector->dp.dsc_decompression_aux == in intel_dp_mst_crtc_needs_modeset()
2082 &connector->mst.dp->aux) in intel_dp_mst_crtc_needs_modeset()
2134 struct intel_connector *connector = intel_dp->attached_connector; in intel_dp_mst_verify_dpcd_state() local
2148 … "[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()
2149 connector->base.base.id, connector->base.name, in intel_dp_mst_verify_dpcd_state()