dc_sink
if (!aconnector->dc_sink)
aconnector->dc_sink = aconnector->dc_em_sink;
else if (aconnector->dc_sink != aconnector->dc_em_sink)
dc_sink_retain(aconnector->dc_sink);
if (aconnector->dc_sink == sink) {
aconnector->connector_id, aconnector->dc_sink, sink);
if (aconnector->dc_sink)
aconnector->dc_sink = sink;
aconnector->dc_sink = NULL;
const struct dc_sink *dc_sink)
const struct dc_edid_caps *edid_caps = &dc_sink->edid_caps;
static struct dc_sink *
struct dc_sink *sink = NULL;
struct dc_sink *sink = NULL;
if (!aconnector->dc_sink) {
sink = aconnector->dc_sink;
connected = (aconnector->dc_sink != NULL);
aconnector->dc_sink = aconnector->dc_link->local_sink ?
struct dc_sink *dc_sink;
dc_sink = to_amdgpu_dm_connector(connector)->dc_sink;
if (dc_sink == NULL) {
if (!aconnector->dc_sink || !connector->state || !connector->encoder)
if (acrtc_state->stream->sink != aconnector->dc_sink)
if (!aconnector || (!aconnector->dc_sink && aconnector->mst_port))
if (!amdgpu_dm_connector->dc_sink) {
if (amdgpu_dm_connector->dc_sink->sink_signal == SIGNAL_TYPE_DISPLAY_PORT
|| amdgpu_dm_connector->dc_sink->sink_signal == SIGNAL_TYPE_EDP) {
struct dc_sink *sink = NULL;
struct dc_sink *prev_sink = NULL;
aconnector->dc_sink = NULL;
struct dc_sink *sink;
if (aconnector->dc_sink) {
if (aconnector->dc_sink != aconnector->dc_em_sink)
dc_sink_release(aconnector->dc_sink);
aconnector->dc_sink = sink;
struct dc_sink *dc_sink;
struct dc_sink *dc_em_sink;
struct dc_sink *sink)
if (!aconnector->dc_sink) {
struct dc_sink *dc_sink;
dc_sink = dc_link_add_remote_sink(
dc_sink->priv = aconnector;
aconnector->dc_sink = dc_sink;
if (aconnector->dc_sink)
if (aconnector->dc_sink) {
dc_link_remove_remote_sink(aconnector->dc_link, aconnector->dc_sink);
dc_sink_release(aconnector->dc_sink);
aconnector->dc_sink = NULL;
const struct dc_sink *sink,
const struct dc_sink *sink,
static bool link_add_remote_sink_helper(struct dc_link *dc_link, struct dc_sink *sink)
struct dc_sink *dc_link_add_remote_sink(
struct dc_sink *dc_sink;
dc_sink = dc_sink_create(init_data);
if (!dc_sink)
memmove(dc_sink->dc_edid.raw_edid, edid, len);
dc_sink->dc_edid.length = len;
dc_sink))
&dc_sink->dc_edid,
&dc_sink->edid_caps);
dc_sink->dc_edid.length = 0;
return dc_sink;
dc_sink_release(dc_sink);
void dc_link_remove_remote_sink(struct dc_link *link, struct dc_sink *sink)
const struct dc_sink *sink = context->streams[i]->sink;
static void link_disconnect_remap(struct dc_sink *prev_sink, struct dc_link *link)
struct dc_sink *sink = NULL;
struct dc_sink *prev_sink = NULL;
static void destruct(struct dc_sink *sink)
static bool construct(struct dc_sink *sink, const struct dc_sink_init_data *init_params)
void dc_sink_retain(struct dc_sink *sink)
struct dc_sink *sink = container_of(kref, struct dc_sink, refcount);
void dc_sink_release(struct dc_sink *sink)
struct dc_sink *dc_sink_create(const struct dc_sink_init_data *init_params)
struct dc_sink *sink = kzalloc(sizeof(*sink), GFP_KERNEL);
struct dc_sink *sink)
struct dc_sink *dc_sink = stream->sink;
if (dc_sink->sink_signal == SIGNAL_TYPE_NONE)
stream->signal = dc_sink->sink_signal;
struct dc_sink *dc_sink_data)
void dc_sink_retain(struct dc_sink *sink);
void dc_sink_release(struct dc_sink *sink);
struct dc_sink *dc_sink_create(const struct dc_sink_init_data *init_params);
struct dc_sink *dc_link_add_remote_sink(
struct dc_sink *sink);
struct dc_sink *remote_sinks[MAX_SINKS_PER_LINK];
struct dc_sink *local_sink;
struct dc_stream_state *dc_create_stream_for_sink(struct dc_sink *dc_sink);
struct dc_sink *sink;
struct dc_sink;
const struct dc_sink *sink = pipe_ctx->stream->sink;
struct dc_sink *sink);
const struct dc_sink *sink,
const struct dc_sink *sink,