Lines Matching full:crtc
59 * drm_atomic_set_mode_for_crtc - set mode for CRTC
60 * @state: the CRTC whose incoming state to update
61 * @mode: kernel-internal mode to use for the CRTC, or NULL to disable
63 * Set a mode (originating from the kernel) on the desired CRTC state and update
72 struct drm_crtc *crtc = state->crtc; in drm_atomic_set_mode_for_crtc() local
86 blob = drm_property_create_blob(crtc->dev, in drm_atomic_set_mode_for_crtc()
95 drm_dbg_atomic(crtc->dev, in drm_atomic_set_mode_for_crtc()
96 "Set [MODE:%s] for [CRTC:%d:%s] state %p\n", in drm_atomic_set_mode_for_crtc()
97 mode->name, crtc->base.id, crtc->name, state); in drm_atomic_set_mode_for_crtc()
101 drm_dbg_atomic(crtc->dev, in drm_atomic_set_mode_for_crtc()
102 "Set [NOMODE] for [CRTC:%d:%s] state %p\n", in drm_atomic_set_mode_for_crtc()
103 crtc->base.id, crtc->name, state); in drm_atomic_set_mode_for_crtc()
111 * drm_atomic_set_mode_prop_for_crtc - set mode for CRTC
112 * @state: the CRTC whose incoming state to update
115 * Set a mode (originating from a blob property) on the desired CRTC state.
116 * This function will take a reference on the blob property for the CRTC state,
126 struct drm_crtc *crtc = state->crtc; in drm_atomic_set_mode_prop_for_crtc() local
140 drm_dbg_atomic(crtc->dev, in drm_atomic_set_mode_prop_for_crtc()
141 "[CRTC:%d:%s] bad mode blob length: %zu\n", in drm_atomic_set_mode_prop_for_crtc()
142 crtc->base.id, crtc->name, in drm_atomic_set_mode_prop_for_crtc()
147 ret = drm_mode_convert_umode(crtc->dev, in drm_atomic_set_mode_prop_for_crtc()
150 drm_dbg_atomic(crtc->dev, in drm_atomic_set_mode_prop_for_crtc()
151 "[CRTC:%d:%s] invalid mode (%s, %pe): " DRM_MODE_FMT "\n", in drm_atomic_set_mode_prop_for_crtc()
152 crtc->base.id, crtc->name, in drm_atomic_set_mode_prop_for_crtc()
160 drm_dbg_atomic(crtc->dev, in drm_atomic_set_mode_prop_for_crtc()
161 "Set [MODE:%s] for [CRTC:%d:%s] state %p\n", in drm_atomic_set_mode_prop_for_crtc()
162 state->mode.name, crtc->base.id, crtc->name, in drm_atomic_set_mode_prop_for_crtc()
166 drm_dbg_atomic(crtc->dev, in drm_atomic_set_mode_prop_for_crtc()
167 "Set [NOMODE] for [CRTC:%d:%s] state %p\n", in drm_atomic_set_mode_prop_for_crtc()
168 crtc->base.id, crtc->name, state); in drm_atomic_set_mode_prop_for_crtc()
176 * drm_atomic_set_crtc_for_plane - set CRTC for plane
178 * @crtc: CRTC to use for the plane
180 * Changing the assigned CRTC for a plane requires us to grab the lock and state
181 * for the new CRTC, as needed. This function takes care of all these details
191 struct drm_crtc *crtc) in drm_atomic_set_crtc_for_plane() argument
195 /* Nothing to do for same crtc*/ in drm_atomic_set_crtc_for_plane()
196 if (plane_state->crtc == crtc) in drm_atomic_set_crtc_for_plane()
198 if (plane_state->crtc) { in drm_atomic_set_crtc_for_plane()
200 plane_state->crtc); in drm_atomic_set_crtc_for_plane()
207 plane_state->crtc = crtc; in drm_atomic_set_crtc_for_plane()
209 if (crtc) { in drm_atomic_set_crtc_for_plane()
211 crtc); in drm_atomic_set_crtc_for_plane()
217 if (crtc) in drm_atomic_set_crtc_for_plane()
219 "Link [PLANE:%d:%s] state %p to [CRTC:%d:%s]\n", in drm_atomic_set_crtc_for_plane()
221 crtc->base.id, crtc->name); in drm_atomic_set_crtc_for_plane()
290 * drm_atomic_set_crtc_for_connector - set CRTC for connector
292 * @crtc: CRTC to use for the connector
294 * Changing the assigned CRTC for a connector requires us to grab the lock and
295 * state for the new CRTC, as needed. This function takes care of all these
305 struct drm_crtc *crtc) in drm_atomic_set_crtc_for_connector() argument
310 if (conn_state->crtc == crtc) in drm_atomic_set_crtc_for_connector()
313 if (conn_state->crtc) { in drm_atomic_set_crtc_for_connector()
315 conn_state->crtc); in drm_atomic_set_crtc_for_connector()
321 conn_state->crtc = NULL; in drm_atomic_set_crtc_for_connector()
324 if (crtc) { in drm_atomic_set_crtc_for_connector()
325 crtc_state = drm_atomic_get_crtc_state(conn_state->state, crtc); in drm_atomic_set_crtc_for_connector()
333 conn_state->crtc = crtc; in drm_atomic_set_crtc_for_connector()
336 "Link [CONNECTOR:%d:%s] state %p to [CRTC:%d:%s]\n", in drm_atomic_set_crtc_for_connector()
338 conn_state, crtc->base.id, crtc->name); in drm_atomic_set_crtc_for_connector()
351 struct drm_crtc *crtc, s32 __user *fence_ptr) in set_out_fence_for_crtc() argument
353 state->crtcs[drm_crtc_index(crtc)].out_fence_ptr = fence_ptr; in set_out_fence_for_crtc()
357 struct drm_crtc *crtc) in get_out_fence_for_crtc() argument
361 fence_ptr = state->crtcs[drm_crtc_index(crtc)].out_fence_ptr; in get_out_fence_for_crtc()
362 state->crtcs[drm_crtc_index(crtc)].out_fence_ptr = NULL; in get_out_fence_for_crtc()
396 static int drm_atomic_crtc_set_property(struct drm_crtc *crtc, in drm_atomic_crtc_set_property() argument
400 struct drm_device *dev = crtc->dev; in drm_atomic_crtc_set_property()
448 set_out_fence_for_crtc(state->state, crtc, fence_ptr); in drm_atomic_crtc_set_property()
449 } else if (property == crtc->scaling_filter_property) { in drm_atomic_crtc_set_property()
451 } else if (property == crtc->sharpness_strength_property) { in drm_atomic_crtc_set_property()
453 } else if (crtc->funcs->atomic_set_property) { in drm_atomic_crtc_set_property()
454 return crtc->funcs->atomic_set_property(crtc, state, property, val); in drm_atomic_crtc_set_property()
456 drm_dbg_atomic(crtc->dev, in drm_atomic_crtc_set_property()
457 "[CRTC:%d:%s] unknown property [PROP:%d:%s]\n", in drm_atomic_crtc_set_property()
458 crtc->base.id, crtc->name, in drm_atomic_crtc_set_property()
467 drm_atomic_crtc_get_property(struct drm_crtc *crtc, in drm_atomic_crtc_get_property() argument
471 struct drm_device *dev = crtc->dev; in drm_atomic_crtc_get_property()
488 else if (property == crtc->scaling_filter_property) in drm_atomic_crtc_get_property()
490 else if (property == crtc->sharpness_strength_property) in drm_atomic_crtc_get_property()
492 else if (crtc->funcs->atomic_get_property) in drm_atomic_crtc_get_property()
493 return crtc->funcs->atomic_get_property(crtc, state, property, val); in drm_atomic_crtc_get_property()
496 "[CRTC:%d:%s] unknown property [PROP:%d:%s]\n", in drm_atomic_crtc_get_property()
497 crtc->base.id, crtc->name, in drm_atomic_crtc_get_property()
533 struct drm_crtc *crtc = drm_crtc_find(dev, file_priv, val); in drm_atomic_plane_set_property() local
535 if (val && !crtc) { in drm_atomic_plane_set_property()
537 "[PROP:%d:%s] cannot find CRTC with ID %llu\n", in drm_atomic_plane_set_property()
541 return drm_atomic_set_crtc_for_plane(state, crtc); in drm_atomic_plane_set_property()
639 *val = (state->crtc) ? state->crtc->base.id : 0; in drm_atomic_plane_get_property()
815 struct drm_crtc *crtc = drm_crtc_find(dev, file_priv, val); in drm_atomic_connector_set_property() local
817 if (val && !crtc) { in drm_atomic_connector_set_property()
819 "[PROP:%d:%s] cannot find CRTC with ID %llu\n", in drm_atomic_connector_set_property()
823 return drm_atomic_set_crtc_for_connector(state, crtc); in drm_atomic_connector_set_property()
941 *val = (state->crtc) ? state->crtc->base.id : 0; in drm_atomic_connector_get_property()
943 if (state->crtc && state->crtc->state->self_refresh_active) in drm_atomic_connector_get_property()
1033 struct drm_crtc *crtc = obj_to_crtc(obj); in drm_atomic_get_property() local
1035 WARN_ON(!drm_modeset_is_locked(&crtc->mutex)); in drm_atomic_get_property()
1036 ret = drm_atomic_crtc_get_property(crtc, in drm_atomic_get_property()
1037 crtc->state, property, val); in drm_atomic_get_property()
1071 struct drm_crtc *crtc, uint64_t user_data) in create_vblank_event() argument
1081 e->event.vbl.crtc_id = crtc->base.id; in create_vblank_event()
1093 struct drm_crtc *crtc; in drm_atomic_connector_commit_dpms() local
1111 crtc = connector->state->crtc; in drm_atomic_connector_commit_dpms()
1112 if (!crtc) in drm_atomic_connector_commit_dpms()
1114 ret = drm_atomic_add_affected_connectors(state, crtc); in drm_atomic_connector_commit_dpms()
1118 crtc_state = drm_atomic_get_crtc_state(state, crtc); in drm_atomic_connector_commit_dpms()
1125 if (new_conn_state->crtc != crtc) in drm_atomic_connector_commit_dpms()
1192 struct drm_crtc *crtc = obj_to_crtc(obj); in drm_atomic_set_property() local
1195 crtc_state = drm_atomic_get_crtc_state(state, crtc); in drm_atomic_set_property()
1202 ret = drm_atomic_crtc_get_property(crtc, crtc_state, in drm_atomic_set_property()
1208 ret = drm_atomic_crtc_set_property(crtc, in drm_atomic_set_property()
1288 * OUT_FENCE_PTR on each DRM CRTC to receive fences from the kernel.
1318 * CRTC fence that will be signaled when all framebuffers present on the
1319 * Atomic Commit * request for that given CRTC are scanned out on the
1363 struct drm_crtc *crtc; in prepare_signaling() local
1372 for_each_new_crtc_in_state(state, crtc, crtc_state, i) { in prepare_signaling()
1375 fence_ptr = get_out_fence_for_crtc(crtc_state->state, crtc); in prepare_signaling()
1380 e = create_vblank_event(crtc, arg->user_data); in prepare_signaling()
1416 fence = drm_crtc_create_fence(crtc); in prepare_signaling()
1471 * reach due to lack of at least one CRTC for signaling in prepare_signaling()
1474 drm_dbg_atomic(dev, "need at least one CRTC for DRM_MODE_PAGE_FLIP_EVENT"); in prepare_signaling()
1487 struct drm_crtc *crtc; in complete_signaling() local
1500 for_each_new_crtc_in_state(state, crtc, crtc_state, i) { in complete_signaling()
1534 struct drm_crtc *crtc; in set_async_flip() local
1538 for_each_new_crtc_in_state(state, crtc, crtc_state, i) { in set_async_flip()