Lines Matching defs:aconnector

122 	struct amdgpu_dm_connector *aconnector =
125 if (aconnector->dc_sink) {
126 dc_link_remove_remote_sink(aconnector->dc_link,
127 aconnector->dc_sink);
128 dc_sink_release(aconnector->dc_sink);
131 kfree(aconnector->edid);
134 drm_dp_mst_put_port_malloc(aconnector->mst_output_port);
135 kfree(aconnector);
160 struct amdgpu_dm_connector *aconnector =
162 struct drm_dp_mst_port *port = aconnector->mst_output_port;
163 struct amdgpu_dm_connector *root = aconnector->mst_root;
164 struct dc_link *dc_link = aconnector->dc_link;
165 struct dc_sink *dc_sink = aconnector->dc_sink;
183 aconnector->dc_sink = NULL;
184 aconnector->edid = NULL;
187 aconnector->mst_status = MST_STATUS_DEFAULT;
228 static bool validate_dsc_caps_on_connector(struct amdgpu_dm_connector *aconnector)
230 struct dc_sink *dc_sink = aconnector->dc_sink;
231 struct drm_dp_mst_port *port = aconnector->mst_output_port;
236 aconnector->dsc_aux = drm_dp_mst_dsc_aux_for_port(port);
247 if (!aconnector->dsc_aux && !port->parent->port_parent &&
248 needs_dsc_aux_workaround(aconnector->dc_link))
249 aconnector->dsc_aux = &aconnector->mst_root->dm_dp_aux.aux;
252 if (!aconnector->dsc_aux && is_synaptics_cascaded_panamera(aconnector->dc_link, port))
253 aconnector->dsc_aux = port->mgr->aux;
255 if (!aconnector->dsc_aux)
258 if (drm_dp_dpcd_read(aconnector->dsc_aux, DP_DSC_SUPPORT, dsc_caps, 16) < 0)
261 if (drm_dp_dpcd_read(aconnector->dsc_aux,
265 if (!dc_dsc_parse_dsc_dpcd(aconnector->dc_link->ctx->dc,
273 static bool retrieve_downstream_port_device(struct amdgpu_dm_connector *aconnector)
277 if (!aconnector->dsc_aux)
280 if (drm_dp_dpcd_read(aconnector->dsc_aux, DP_DOWNSTREAMPORT_PRESENT, &ds_port_present, 1) < 0) {
285 aconnector->mst_downstream_port_present = ds_port_present;
294 struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
297 if (!aconnector)
300 if (!aconnector->edid) {
303 edid = drm_dp_mst_get_edid(connector, &aconnector->mst_root->mst_mgr, aconnector->mst_output_port);
306 amdgpu_dm_set_mst_status(&aconnector->mst_status,
310 &aconnector->base,
314 if (!aconnector->dc_sink) {
317 .link = aconnector->dc_link,
321 aconnector->dc_link,
334 aconnector->dc_link->sink_count);
336 dc_sink->priv = aconnector;
337 aconnector->dc_sink = dc_sink;
343 aconnector->edid = edid;
344 amdgpu_dm_set_mst_status(&aconnector->mst_status,
348 if (aconnector->dc_sink && aconnector->dc_sink->sink_signal == SIGNAL_TYPE_VIRTUAL) {
349 dc_sink_release(aconnector->dc_sink);
350 aconnector->dc_sink = NULL;
353 if (!aconnector->dc_sink) {
356 .link = aconnector->dc_link,
359 aconnector->dc_link,
360 (uint8_t *)aconnector->edid,
361 (aconnector->edid->extensions + 1) * EDID_LENGTH,
371 dc_sink, aconnector->dc_link->sink_count);
373 dc_sink->priv = aconnector;
375 aconnector->dc_sink = dc_sink;
385 if (aconnector->dc_sink && connector->state) {
392 &hdcp_work[aconnector->dc_link->link_index];
401 if (aconnector->dc_sink) {
403 connector, aconnector->edid);
405 if (!validate_dsc_caps_on_connector(aconnector))
406 memset(&aconnector->dc_sink->dsc_caps,
407 0, sizeof(aconnector->dc_sink->dsc_caps));
409 if (!retrieve_downstream_port_device(aconnector))
410 memset(&aconnector->mst_downstream_port_present,
411 0, sizeof(aconnector->mst_downstream_port_present));
416 &aconnector->base, aconnector->edid);
418 ret = drm_add_edid_modes(connector, aconnector->edid);
439 struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
440 struct amdgpu_dm_connector *master = aconnector->mst_root;
441 struct drm_dp_mst_port *port = aconnector->mst_output_port;
448 aconnector->mst_output_port);
485 if (connection_status == connector_status_disconnected && aconnector->dc_sink) {
486 if (aconnector->dc_link->sink_count)
487 dc_link_remove_remote_sink(aconnector->dc_link, aconnector->dc_sink);
491 aconnector->dc_link,
492 aconnector->dc_link->sink_count);
494 dc_sink_release(aconnector->dc_sink);
495 aconnector->dc_sink = NULL;
496 aconnector->edid = NULL;
498 amdgpu_dm_set_mst_status(&aconnector->mst_status,
509 struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
510 struct drm_dp_mst_topology_mgr *mst_mgr = &aconnector->mst_root->mst_mgr;
511 struct drm_dp_mst_port *mst_port = aconnector->mst_output_port;
564 struct amdgpu_dm_connector *aconnector;
568 aconnector = kzalloc(sizeof(*aconnector), GFP_KERNEL);
569 if (!aconnector)
572 connector = &aconnector->base;
573 aconnector->mst_output_port = port;
574 aconnector->mst_root = master;
575 amdgpu_dm_set_mst_status(&aconnector->mst_status,
583 kfree(aconnector);
590 aconnector,
596 drm_connector_attach_encoder(&aconnector->base,
642 struct amdgpu_dm_connector *aconnector =
646 const struct dc_link_status *link_status = dc_link_get_status(aconnector->dc_link);
658 mutex_lock(&aconnector->handle_mst_msg_ready);
666 &aconnector->dm_dp_aux.aux,
697 if (aconnector->mst_mgr.mst_state)
698 drm_dp_mst_hpd_irq_handle_event(&aconnector->mst_mgr,
708 wret = drm_dp_dpcd_writeb(&aconnector->dm_dp_aux.aux,
720 drm_dp_mst_hpd_irq_send_new_request(&aconnector->mst_mgr);
728 mutex_unlock(&aconnector->handle_mst_msg_ready);
745 struct amdgpu_dm_connector *aconnector,
750 aconnector->dm_dp_aux.aux.name =
753 aconnector->dm_dp_aux.aux.transfer = dm_dp_aux_transfer;
754 aconnector->dm_dp_aux.aux.drm_dev = dm->ddev;
755 aconnector->dm_dp_aux.ddc_service = aconnector->dc_link->ddc;
757 drm_dp_aux_init(&aconnector->dm_dp_aux.aux);
758 drm_dp_cec_register_connector(&aconnector->dm_dp_aux.aux,
759 &aconnector->base);
761 if (aconnector->base.connector_type == DRM_MODE_CONNECTOR_eDP)
764 dc_link_dp_get_max_link_enc_cap(aconnector->dc_link, &max_link_enc_cap);
765 aconnector->mst_mgr.cbs = &dm_mst_cbs;
766 drm_dp_mst_topology_mgr_init(&aconnector->mst_mgr, adev_to_drm(dm->adev),
767 &aconnector->dm_dp_aux.aux, 16, 4, aconnector->connector_id);
769 drm_connector_attach_dp_subconnector_property(&aconnector->base);
791 struct amdgpu_dm_connector *aconnector;
813 drm_connector = &params[i].aconnector->base;
825 dc_link_get_highest_encoding_format(params[i].aconnector->dc_link),
865 struct drm_connector *drm_connector = &param.aconnector->base;
877 dc_link_get_highest_encoding_format(param.aconnector->dc_link),
1067 struct amdgpu_dm_connector *aconnector;
1087 aconnector = (struct amdgpu_dm_connector *)stream->dm_stream_context;
1088 if (!aconnector)
1091 if (!aconnector->mst_output_port)
1098 params[count].aconnector = aconnector;
1099 params[count].port = aconnector->mst_output_port;
1100 params[count].clock_force_enable = aconnector->dsc_settings.dsc_force_enable;
1103 params[count].num_slices_h = aconnector->dsc_settings.dsc_num_slices_h;
1104 params[count].num_slices_v = aconnector->dsc_settings.dsc_num_slices_v;
1105 params[count].bpp_overwrite = aconnector->dsc_settings.dsc_bits_per_pixel;
1135 vars[i + k].aconnector = params[i].aconnector;
1199 struct amdgpu_dm_connector *aconnector;
1229 aconnector = (struct amdgpu_dm_connector *) stream->dm_stream_context;
1230 if (!aconnector || !aconnector->dsc_aux)
1237 if (!(aconnector->dc_sink->dsc_caps.dsc_dec_caps.is_dsc_supported ||
1238 aconnector->dc_link->dpcd_caps.dsc_caps.dsc_basic_caps.fields.dsc_support.DSC_PASSTHROUGH_SUPPORT))
1241 stream_on_link[new_stream_on_link_num] = aconnector;
1244 new_conn_state = drm_atomic_get_new_connector_state(state, &aconnector->base);
1277 aconnector = (struct amdgpu_dm_connector *)stream->dm_stream_context;
1278 if (!aconnector)
1283 if (aconnector == stream_on_link[j])
1305 struct amdgpu_dm_connector *aconnector;
1321 aconnector = (struct amdgpu_dm_connector *)stream->dm_stream_context;
1323 if (!aconnector || !aconnector->dc_sink || !aconnector->mst_output_port)
1326 if (!aconnector->dc_sink->dsc_caps.dsc_dec_caps.is_dsc_supported)
1339 mst_mgr = aconnector->mst_output_port->mgr;
1369 struct amdgpu_dm_connector *aconnector;
1383 aconnector = (struct amdgpu_dm_connector *)stream->dm_stream_context;
1385 if (!aconnector || !aconnector->dc_sink || !aconnector->mst_output_port)
1388 if (!aconnector->dc_sink->dsc_caps.dsc_dec_caps.is_dsc_supported)
1397 mst_mgr = aconnector->mst_output_port->mgr;
1500 struct amdgpu_dm_connector *aconnector;
1508 aconnector = to_amdgpu_dm_connector(connector);
1511 &aconnector->base);
1516 create_validate_stream_for_sink(aconnector,
1596 struct amdgpu_dm_connector *aconnector,
1617 (aconnector->mst_output_port->passthrough_aux ||
1618 aconnector->dsc_aux == &aconnector->mst_output_port->aux)) {
1620 upper_link_bw_in_kbps = dc_link_bandwidth_kbps(aconnector->dc_link, &cur_link_settings);
1621 down_link_bw_in_kbps = kbps_from_pbn(aconnector->mst_output_port->full_pbn);
1633 dsc_options.max_target_bpp_limit_override_x16 = aconnector->base.display_info.max_dsc_bpp * 16;
1673 pbn > aconnector->mst_output_port->full_pbn) {
1684 aconnector->dc_sink->dsc_caps.dsc_dec_caps.branch_overall_throughput_0_mps;
1689 aconnector->dc_sink->dsc_caps.dsc_dec_caps.branch_overall_throughput_1_mps;