Lines Matching refs:aconnector

140 amdgpu_dm_update_connector_after_detect(struct amdgpu_dm_connector *aconnector);
631 struct amdgpu_dm_connector *aconnector;
640 aconnector = to_amdgpu_dm_connector(connector);
641 if (aconnector->audio_inst != port)
1343 struct amdgpu_dm_connector *aconnector;
1350 aconnector = to_amdgpu_dm_connector(connector);
1351 if (aconnector->dc_link->type == dc_connection_mst_branch &&
1352 aconnector->mst_mgr.aux) {
1353 DRM_DEBUG_DRIVER("DM_MST: starting TM on aconnector: %p [id: %d]\n",
1354 aconnector,
1355 aconnector->base.base.id);
1357 ret = drm_dp_mst_topology_mgr_set_mst(&aconnector->mst_mgr, true);
1360 aconnector->dc_link->type =
1408 struct amdgpu_dm_connector *aconnector;
1417 aconnector = to_amdgpu_dm_connector(connector);
1418 if (aconnector->dc_link->type != dc_connection_mst_branch ||
1419 aconnector->mst_port)
1422 mgr = &aconnector->mst_mgr;
1614 struct amdgpu_dm_connector *aconnector;
1656 aconnector = to_amdgpu_dm_connector(connector);
1662 if (aconnector->mst_port)
1665 mutex_lock(&aconnector->hpd_lock);
1666 if (!dc_link_detect_sink(aconnector->dc_link, &new_connection_type))
1669 if (aconnector->base.force && new_connection_type == dc_connection_none)
1670 emulated_link_detect(aconnector->dc_link);
1672 dc_link_detect(aconnector->dc_link, DETECT_REASON_HPD);
1674 if (aconnector->fake_enable && aconnector->dc_link->local_sink)
1675 aconnector->fake_enable = false;
1677 if (aconnector->dc_sink)
1678 dc_sink_release(aconnector->dc_sink);
1679 aconnector->dc_sink = NULL;
1680 amdgpu_dm_update_connector_after_detect(aconnector);
1681 mutex_unlock(&aconnector->hpd_lock);
1777 amdgpu_dm_update_connector_after_detect(struct amdgpu_dm_connector *aconnector)
1779 struct drm_connector *connector = &aconnector->base;
1784 if (aconnector->mst_mgr.mst_state == true)
1788 sink = aconnector->dc_link->local_sink;
1797 if (aconnector->base.force != DRM_FORCE_UNSPECIFIED
1798 && aconnector->dc_em_sink) {
1807 if (aconnector->dc_sink) {
1815 dc_sink_release(aconnector->dc_sink);
1817 aconnector->dc_sink = sink;
1818 dc_sink_retain(aconnector->dc_sink);
1820 aconnector->edid);
1823 if (!aconnector->dc_sink) {
1824 aconnector->dc_sink = aconnector->dc_em_sink;
1825 dc_sink_retain(aconnector->dc_sink);
1845 if (aconnector->dc_sink == sink) {
1851 aconnector->connector_id);
1858 aconnector->connector_id, aconnector->dc_sink, sink);
1871 if (aconnector->dc_sink)
1874 aconnector->dc_sink = sink;
1875 dc_sink_retain(aconnector->dc_sink);
1877 aconnector->edid = NULL;
1878 drm_dp_cec_unset_edid(&aconnector->dm_dp_aux.aux);
1880 aconnector->edid =
1885 aconnector->edid);
1886 drm_dp_cec_set_edid(&aconnector->dm_dp_aux.aux,
1887 aconnector->edid);
1889 amdgpu_dm_update_freesync_caps(connector, aconnector->edid);
1892 drm_dp_cec_unset_edid(&aconnector->dm_dp_aux.aux);
1895 aconnector->num_modes = 0;
1896 dc_sink_release(aconnector->dc_sink);
1897 aconnector->dc_sink = NULL;
1898 aconnector->edid = NULL;
1914 struct amdgpu_dm_connector *aconnector = (struct amdgpu_dm_connector *)param;
1915 struct drm_connector *connector = &aconnector->base;
1926 mutex_lock(&aconnector->hpd_lock);
1930 hdcp_reset_display(adev->dm.hdcp_workqueue, aconnector->dc_link->link_index);
1932 if (aconnector->fake_enable)
1933 aconnector->fake_enable = false;
1935 if (!dc_link_detect_sink(aconnector->dc_link, &new_connection_type))
1938 if (aconnector->base.force && new_connection_type == dc_connection_none) {
1939 emulated_link_detect(aconnector->dc_link);
1946 if (aconnector->base.force == DRM_FORCE_UNSPECIFIED)
1949 } else if (dc_link_detect(aconnector->dc_link, DETECT_REASON_HPD)) {
1950 amdgpu_dm_update_connector_after_detect(aconnector);
1957 if (aconnector->base.force == DRM_FORCE_UNSPECIFIED)
1960 mutex_unlock(&aconnector->hpd_lock);
1964 static void dm_handle_hpd_rx_irq(struct amdgpu_dm_connector *aconnector)
1975 const struct dc_link_status *link_status = dc_link_get_status(aconnector->dc_link);
1988 &aconnector->dm_dp_aux.aux,
2002 if (aconnector->mst_mgr.mst_state)
2004 &aconnector->mst_mgr,
2017 &aconnector->dm_dp_aux.aux,
2027 &aconnector->dm_dp_aux.aux,
2044 struct amdgpu_dm_connector *aconnector = (struct amdgpu_dm_connector *)param;
2045 struct drm_connector *connector = &aconnector->base;
2047 struct dc_link *dc_link = aconnector->dc_link;
2048 bool is_mst_root_connector = aconnector->mst_mgr.mst_state;
2063 mutex_lock(&aconnector->hpd_lock);
2076 if (aconnector->base.force && new_connection_type == dc_connection_none) {
2079 if (aconnector->fake_enable)
2080 aconnector->fake_enable = false;
2082 amdgpu_dm_update_connector_after_detect(aconnector);
2092 if (aconnector->fake_enable)
2093 aconnector->fake_enable = false;
2095 amdgpu_dm_update_connector_after_detect(aconnector);
2108 hdcp_handle_cpirq(adev->dm.hdcp_workqueue, aconnector->base.index);
2113 dm_handle_hpd_rx_irq(aconnector);
2116 drm_dp_cec_irq(&aconnector->dm_dp_aux.aux);
2117 mutex_unlock(&aconnector->hpd_lock);
2125 struct amdgpu_dm_connector *aconnector;
2135 aconnector = to_amdgpu_dm_connector(connector);
2136 dc_link = aconnector->dc_link;
2144 (void *) aconnector);
2155 (void *) aconnector);
2684 struct amdgpu_dm_connector *aconnector = NULL;
2766 aconnector = kzalloc(sizeof(*aconnector), GFP_KERNEL);
2767 if (!aconnector)
2779 if (amdgpu_dm_connector_init(dm, aconnector, i, aencoder)) {
2789 if (aconnector->base.force && new_connection_type == dc_connection_none) {
2791 amdgpu_dm_update_connector_after_detect(aconnector);
2794 amdgpu_dm_update_connector_after_detect(aconnector);
2849 kfree(aconnector);
3772 const struct amdgpu_dm_connector *aconnector = const_container_of(connector, struct amdgpu_dm_connector, base);
3788 && aconnector->force_yuv420_output)
3933 create_fake_sink(struct amdgpu_dm_connector *aconnector)
3937 sink_init_data.link = aconnector->dc_link;
3938 sink_init_data.sink_signal = aconnector->dc_link->connector_signal;
4002 create_stream_for_sink(struct amdgpu_dm_connector *aconnector,
4023 if (aconnector == NULL) {
4024 DRM_ERROR("aconnector is NULL!\n");
4028 drm_connector = &aconnector->base;
4030 if (!aconnector->dc_sink) {
4031 sink = create_fake_sink(aconnector);
4035 sink = aconnector->dc_sink;
4046 stream->dm_stream_context = aconnector;
4051 list_for_each_entry(preferred_mode, &aconnector->base.modes, head) {
4060 &aconnector->base.modes,
4090 &mode, &aconnector->base, con_state, NULL);
4093 &mode, &aconnector->base, con_state, old_stream);
4097 if (aconnector->dc_link && sink->sink_signal == SIGNAL_TYPE_DISPLAY_PORT) {
4099 dc_dsc_parse_dsc_dpcd(aconnector->dc_link->ctx->dc,
4100 aconnector->dc_link->dpcd_caps.dsc_caps.dsc_basic_caps.raw,
4101 aconnector->dc_link->dpcd_caps.dsc_caps.dsc_ext_caps.raw,
4104 link_bandwidth_kbps = dc_link_bandwidth_kbps(aconnector->dc_link,
4105 dc_link_get_link_cap(aconnector->dc_link));
4109 if (dc_dsc_compute_config(aconnector->dc_link->ctx->dc->res_pool->dscs[0],
4111 aconnector->dc_link->ctx->dc->debug.dsc_min_slice_height_override,
4297 struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
4306 if (aconnector->base.force == DRM_FORCE_UNSPECIFIED &&
4307 !aconnector->fake_enable)
4308 connected = (aconnector->dc_sink != NULL);
4310 connected = (aconnector->base.force == DRM_FORCE_ON);
4425 struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
4426 const struct dc_link *link = aconnector->dc_link;
4444 if (aconnector->dc_em_sink)
4445 dc_sink_release(aconnector->dc_em_sink);
4446 aconnector->dc_em_sink = NULL;
4447 if (aconnector->dc_sink)
4448 dc_sink_release(aconnector->dc_sink);
4449 aconnector->dc_sink = NULL;
4451 drm_dp_cec_unregister_connector(&aconnector->dm_dp_aux.aux);
4454 if (aconnector->i2c) {
4455 i2c_del_adapter(&aconnector->i2c->base);
4456 kfree(aconnector->i2c);
4458 mutex_destroy(&aconnector->hpd_lock);
4532 static void create_eml_sink(struct amdgpu_dm_connector *aconnector)
4535 .link = aconnector->dc_link,
4540 if (!aconnector->base.edid_blob_ptr) {
4542 aconnector->base.name);
4544 aconnector->base.force = DRM_FORCE_OFF;
4545 aconnector->base.override_edid = false;
4549 edid = (struct edid *) aconnector->base.edid_blob_ptr->data;
4551 aconnector->edid = edid;
4553 aconnector->dc_em_sink = dc_link_add_remote_sink(
4554 aconnector->dc_link,
4559 if (aconnector->base.force == DRM_FORCE_ON) {
4560 aconnector->dc_sink = aconnector->dc_link->local_sink ?
4561 aconnector->dc_link->local_sink :
4562 aconnector->dc_em_sink;
4563 dc_sink_retain(aconnector->dc_sink);
4567 static void handle_edid_mgmt(struct amdgpu_dm_connector *aconnector)
4569 struct dc_link *link = (struct dc_link *)aconnector->dc_link;
4581 aconnector->base.override_edid = true;
4582 create_eml_sink(aconnector);
4593 struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
4604 if (aconnector->base.force != DRM_FORCE_UNSPECIFIED &&
4605 !aconnector->dc_em_sink)
4606 handle_edid_mgmt(aconnector);
4615 stream = create_stream_for_sink(aconnector, mode, NULL, NULL);
4935 struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
4944 if (!aconnector->port || !aconnector->dc_sink)
4947 mst_port = aconnector->port;
4948 mst_mgr = &aconnector->mst_port->mst_mgr;
4955 aconnector->force_yuv420_output;
4986 struct amdgpu_dm_connector *aconnector;
4993 aconnector = to_amdgpu_dm_connector(connector);
4995 if (!aconnector->port)
5008 if ((struct amdgpu_dm_connector*)stream->dm_stream_context == aconnector)
5019 aconnector->port,
5031 aconnector->port,
5644 struct amdgpu_dm_connector *aconnector,
5655 if (aconnector->base.funcs->reset)
5656 aconnector->base.funcs->reset(&aconnector->base);
5658 aconnector->connector_id = link_index;
5659 aconnector->dc_link = link;
5660 aconnector->base.interlace_allowed = false;
5661 aconnector->base.doublescan_allowed = false;
5662 aconnector->base.stereo_allowed = false;
5663 aconnector->base.dpms = DRM_MODE_DPMS_OFF;
5664 aconnector->hpd.hpd = AMDGPU_HPD_NONE; /* not used */
5665 aconnector->audio_inst = -1;
5666 mutex_init(&aconnector->hpd_lock);
5674 aconnector->base.polled = DRM_CONNECTOR_POLL_HPD;
5675 aconnector->base.ycbcr_420_allowed =
5679 aconnector->base.polled = DRM_CONNECTOR_POLL_HPD;
5680 aconnector->base.ycbcr_420_allowed =
5684 aconnector->base.polled = DRM_CONNECTOR_POLL_HPD;
5690 drm_object_attach_property(&aconnector->base.base,
5694 drm_object_attach_property(&aconnector->base.base,
5697 drm_object_attach_property(&aconnector->base.base,
5700 drm_object_attach_property(&aconnector->base.base,
5704 drm_connector_attach_max_bpc_property(&aconnector->base, 8, 16);
5707 aconnector->base.state->max_bpc = (connector_type == DRM_MODE_CONNECTOR_eDP) ? 16 : 8;
5708 aconnector->base.state->max_requested_bpc = aconnector->base.state->max_bpc;
5712 drm_object_attach_property(&aconnector->base.base,
5720 &aconnector->base.base,
5724 &aconnector->base);
5727 drm_connector_attach_content_protection_property(&aconnector->base, true);
5803 * dc_link which will be represented by this aconnector.
5806 struct amdgpu_dm_connector *aconnector,
5816 link->priv = aconnector;
5826 aconnector->i2c = i2c;
5838 &aconnector->base,
5845 aconnector->connector_id = -1;
5850 &aconnector->base,
5855 aconnector,
5861 &aconnector->base, &aencoder->base);
5863 drm_connector_register(&aconnector->base);
5865 connector_debugfs_init(aconnector);
5866 aconnector->debugfs_dpcd_address = 0;
5867 aconnector->debugfs_dpcd_size = 0;
5872 amdgpu_dm_initialize_dp_connector(dm, aconnector);
5877 aconnector->i2c = NULL;
5977 const struct amdgpu_dm_connector *aconnector = const_container_of(connector, struct amdgpu_dm_connector, base);
6001 aconnector->dc_sink != NULL)
6636 struct amdgpu_dm_connector *aconnector;
6664 aconnector = to_amdgpu_dm_connector(connector);
6667 inst = aconnector->audio_inst;
6668 aconnector->audio_inst = -1;
6696 aconnector = to_amdgpu_dm_connector(connector);
6700 aconnector->audio_inst = inst;
6887 * aconnector as needed
6900 * dc_sink is NULL in this case on aconnector.
6965 struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
6976 hdcp_reset_display(adev->dm.hdcp_workqueue, aconnector->dc_link->link_index);
6983 adev->dm.hdcp_workqueue, aconnector->dc_link->link_index, aconnector,
7211 struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
7215 if (!aconnector->dc_sink || !connector->state || !connector->encoder)
7231 if (acrtc_state->stream->sink != aconnector->dc_sink)
7232 dm_force_atomic_commit(&aconnector->base);
7291 struct amdgpu_dm_connector *aconnector =
7297 vrefresh >= aconnector->min_vfreq &&
7298 vrefresh <= aconnector->max_vfreq;
7306 aconnector->min_vfreq * 1000000;
7308 aconnector->max_vfreq * 1000000;
7345 struct amdgpu_dm_connector *aconnector = NULL;
7354 aconnector = amdgpu_dm_find_first_crtc_matching_connector(state, crtc);
7357 if (aconnector && enable) {
7360 &aconnector->base);
7362 &aconnector->base);
7375 new_stream = create_stream_for_sink(aconnector,
7470 if (!aconnector || (!aconnector->dc_sink && aconnector->mst_port))
7513 if (!(enable && aconnector && new_crtc_state->enable &&
7930 struct amdgpu_dm_connector *aconnector = NULL;
7936 aconnector = to_amdgpu_dm_connector(connector);
7937 if (!aconnector->port || !aconnector->mst_port)
7938 aconnector = NULL;
7943 if (!aconnector)
7946 return drm_dp_mst_add_affected_dsc_crtcs(state, &aconnector->mst_port->mst_mgr);