Lines Matching refs:stream

31 /* Check whether stream is supported by DIG link encoders. */
32 static bool is_dig_link_enc_stream(struct dc_stream_state *stream)
39 if (stream) {
40 for (i = 0; i < stream->ctx->dc->res_pool->res_cap->num_dig_link_enc; i++) {
41 link_enc = stream->ctx->dc->res_pool->link_encoders[i];
43 /* Need to check link signal type rather than stream signal type which may not
46 if (link_enc && ((uint32_t)stream->link->connector_signal & link_enc->output_signals)) {
47 if (dc_is_dp_signal(stream->signal)) {
51 stream->ctx->dc->link_srv->dp_decide_link_settings(stream, &link_settings);
79 /* Return stream using DIG link encoder resource. NULL if unused. */
84 struct dc_stream_state *stream = NULL;
91 stream = state->streams[i];
96 return stream;
101 struct dc_stream_state *stream,
110 /* stream ptr of stream in dc_state used to update correct entry in
116 if (assignment.valid && assignment.stream == stream) {
119 * used by any other stream (i.e. removing SST stream or last MST stream).
124 stream->link_enc = NULL;
126 state->res_ctx.link_enc_cfg_ctx.link_enc_assignments[i].stream = NULL;
127 dc_stream_release(stream);
136 struct dc_stream_state *stream,
145 /* stream ptr of stream in dc_state used to update correct entry in
149 if (stream == state->streams[i]) {
153 .link_id = stream->link->link_id,
154 .ep_type = stream->link->ep_type},
156 .stream = stream};
157 dc_stream_retain(stream);
159 stream->link_enc = stream->ctx->dc->res_pool->link_encoders[eng_idx];
164 /* Attempted to add an encoder assignment for a stream not in dc_state. */
199 static bool is_avail_link_enc(struct dc_state *state, enum engine_id eng_id, struct dc_stream_state *stream)
211 * If a stream that has already been assigned a link encoder uses as the
212 * same link as the stream checking for availability, it is an MST stream
216 if (stream_assigned && stream != stream_assigned && stream->link == stream_assigned->link)
266 if (state->res_ctx.link_enc_cfg_ctx.link_enc_assignments[i].stream != NULL) {
267 dc_stream_release(state->res_ctx.link_enc_cfg_ctx.link_enc_assignments[i].stream);
268 state->res_ctx.link_enc_cfg_ctx.link_enc_assignments[i].stream = NULL;
318 struct dc_stream_state *stream = streams[i];
321 if (stream->link->is_dig_mapping_flexible)
324 /* Skip stream if not supported by DIG link encoder. */
325 if (!is_dig_link_enc_stream(stream))
329 eng_id = stream->link->eng_id;
330 add_link_enc_assignment(state, stream, eng_id);
340 struct dc_stream_state *stream = state->streams[i];
343 if (!stream->link->is_dig_mapping_flexible)
346 /* Skip stream if not supported by DIG link encoder. */
347 if (!is_dig_link_enc_stream(stream))
353 if (stream == prev_stream && stream->link == prev_stream->link &&
357 if (is_avail_link_enc(state, eng_id, stream))
358 add_link_enc_assignment(state, stream, eng_id);
368 struct dc_stream_state *stream = streams[i];
372 if (!stream->link->is_dig_mapping_flexible)
376 if (stream->link_enc)
379 /* Skip stream if not supported by DIG link encoder. */
380 if (!is_dig_link_enc_stream(stream)) {
381 ASSERT(stream->link->is_dig_mapping_flexible != true);
391 link_enc = get_link_enc_used_by_link(state, stream->link);
394 if (stream->link->ep_type == DISPLAY_ENDPOINT_USB4_DPIA &&
395 stream->link->dpia_preferred_eng_id != ENGINE_ID_UNKNOWN)
396 eng_id_req = stream->link->dpia_preferred_eng_id;
398 eng_id = find_first_avail_link_enc(stream->ctx, state, eng_id_req);
403 add_link_enc_assignment(state, stream, eng_id);
448 struct dc_stream_state *stream)
452 if (stream->link_enc)
453 eng_id = stream->link_enc->preferred_engine;
455 remove_link_enc_assignment(state, stream, eng_id);
464 struct dc_stream_state *stream = link_enc_cfg_get_stream_using_link_enc(dc, eng_id);
466 if (stream)
467 is_mappable = stream->link->is_dig_mapping_flexible;
476 struct dc_stream_state *stream = NULL;
483 stream = assignment.stream;
488 return stream;
496 struct dc_stream_state *stream = NULL;
498 stream = link_enc_cfg_get_stream_using_link_enc(dc, eng_id);
500 if (stream)
501 link = stream->link;
560 const struct dc_stream_state *stream)
564 link_enc = link_enc_cfg_get_link_enc_used_by_link(dc, stream->link);
591 const struct dc_stream_state *stream)
598 .link_id = stream->link->link_id,
599 .ep_type = stream->link->ep_type};
606 link_enc = stream->link->dc->res_pool->link_encoders[assignment.eng_id - ENGINE_ID_DIGA];
650 /* (1) No. valid entries same as stream count. */
663 /* (2) Matching stream ptrs. */
668 if (assignment.stream != state->streams[i])
722 struct dc_stream_state *stream = state->streams[i];
724 if (is_dig_link_enc_stream(stream) && stream->link_enc == NULL) {