Lines Matching refs:crtc
63 if (plane->state->crtc) { in drm_atomic_helper_plane_changed()
64 crtc_state = state->crtc_states[drm_crtc_index(plane->state->crtc)]; in drm_atomic_helper_plane_changed()
72 if (plane_state->crtc) { in drm_atomic_helper_plane_changed()
74 state->crtc_states[drm_crtc_index(plane_state->crtc)]; in drm_atomic_helper_plane_changed()
96 return connector->state->crtc; in get_current_crtc_for_encoder()
172 if (connector->state->crtc != connector_state->crtc) { in update_connector_routing()
173 if (connector->state->crtc) { in update_connector_routing()
174 idx = drm_crtc_index(connector->state->crtc); in update_connector_routing()
180 if (connector_state->crtc) { in update_connector_routing()
181 idx = drm_crtc_index(connector_state->crtc); in update_connector_routing()
188 if (!connector_state->crtc) { in update_connector_routing()
213 if (!drm_encoder_crtc_ok(new_encoder, connector_state->crtc)) { in update_connector_routing()
217 connector_state->crtc->base.id); in update_connector_routing()
227 connector_state->crtc->base.id); in update_connector_routing()
245 if (WARN_ON(!connector_state->crtc)) in update_connector_routing()
249 idx = drm_crtc_index(connector_state->crtc); in update_connector_routing()
259 connector_state->crtc->base.id); in update_connector_routing()
267 struct drm_crtc *crtc; in mode_fixup() local
274 for_each_crtc_in_state(state, crtc, crtc_state, i) { in mode_fixup()
286 WARN_ON(!!conn_state->best_encoder != !!conn_state->crtc); in mode_fixup()
288 if (!conn_state->crtc || !conn_state->best_encoder) in mode_fixup()
292 state->crtc_states[drm_crtc_index(conn_state->crtc)]; in mode_fixup()
329 for_each_crtc_in_state(state, crtc, crtc_state, i) { in mode_fixup()
336 funcs = crtc->helper_private; in mode_fixup()
340 ret = funcs->mode_fixup(crtc, &crtc_state->mode, in mode_fixup()
344 crtc->base.id); in mode_fixup()
383 struct drm_crtc *crtc; in drm_atomic_helper_check_modeset() local
389 for_each_crtc_in_state(state, crtc, crtc_state, i) { in drm_atomic_helper_check_modeset()
390 if (!drm_mode_equal(&crtc->state->mode, &crtc_state->mode)) { in drm_atomic_helper_check_modeset()
392 crtc->base.id); in drm_atomic_helper_check_modeset()
396 if (crtc->state->enable != crtc_state->enable) { in drm_atomic_helper_check_modeset()
398 crtc->base.id); in drm_atomic_helper_check_modeset()
430 for_each_crtc_in_state(state, crtc, crtc_state, i) { in drm_atomic_helper_check_modeset()
438 if (crtc->state->active != crtc_state->active) { in drm_atomic_helper_check_modeset()
440 crtc->base.id); in drm_atomic_helper_check_modeset()
448 crtc->base.id, in drm_atomic_helper_check_modeset()
452 ret = drm_atomic_add_affected_connectors(state, crtc); in drm_atomic_helper_check_modeset()
456 ret = drm_atomic_add_affected_planes(state, crtc); in drm_atomic_helper_check_modeset()
461 crtc); in drm_atomic_helper_check_modeset()
465 crtc->base.id); in drm_atomic_helper_check_modeset()
494 struct drm_crtc *crtc; in drm_atomic_helper_check_planes() local
518 for_each_crtc_in_state(state, crtc, crtc_state, i) { in drm_atomic_helper_check_planes()
521 funcs = crtc->helper_private; in drm_atomic_helper_check_planes()
526 ret = funcs->atomic_check(crtc, state->crtc_states[i]); in drm_atomic_helper_check_planes()
529 crtc->base.id); in drm_atomic_helper_check_planes()
580 struct drm_crtc *crtc; in disable_outputs() local
591 if (!old_conn_state->crtc) in disable_outputs()
594 old_crtc_state = old_state->crtc_states[drm_crtc_index(old_conn_state->crtc)]; in disable_outputs()
597 !drm_atomic_crtc_needs_modeset(old_conn_state->crtc->state)) in disable_outputs()
620 if (connector->state->crtc && funcs->prepare) in disable_outputs()
630 for_each_crtc_in_state(old_state, crtc, old_crtc_state, i) { in disable_outputs()
634 if (!drm_atomic_crtc_needs_modeset(crtc->state)) in disable_outputs()
640 funcs = crtc->helper_private; in disable_outputs()
643 crtc->base.id); in disable_outputs()
647 if (crtc->state->enable && funcs->prepare) in disable_outputs()
648 funcs->prepare(crtc); in disable_outputs()
650 funcs->disable(crtc); in disable_outputs()
652 funcs->dpms(crtc, DRM_MODE_DPMS_OFF); in disable_outputs()
675 struct drm_crtc *crtc; in drm_atomic_helper_update_legacy_modeset_state() local
682 WARN_ON(!connector->encoder->crtc); in drm_atomic_helper_update_legacy_modeset_state()
684 connector->encoder->crtc = NULL; in drm_atomic_helper_update_legacy_modeset_state()
688 crtc = connector->state->crtc; in drm_atomic_helper_update_legacy_modeset_state()
689 if ((!crtc && old_conn_state->crtc) || in drm_atomic_helper_update_legacy_modeset_state()
690 (crtc && drm_atomic_crtc_needs_modeset(crtc->state))) { in drm_atomic_helper_update_legacy_modeset_state()
695 if (crtc && crtc->state->active) in drm_atomic_helper_update_legacy_modeset_state()
706 if (!connector->state->crtc) in drm_atomic_helper_update_legacy_modeset_state()
713 connector->encoder->crtc = connector->state->crtc; in drm_atomic_helper_update_legacy_modeset_state()
717 for_each_crtc_in_state(old_state, crtc, old_crtc_state, i) { in drm_atomic_helper_update_legacy_modeset_state()
718 struct drm_plane *primary = crtc->primary; in drm_atomic_helper_update_legacy_modeset_state()
720 crtc->mode = crtc->state->mode; in drm_atomic_helper_update_legacy_modeset_state()
721 crtc->enabled = crtc->state->enable; in drm_atomic_helper_update_legacy_modeset_state()
724 primary->state->crtc == crtc) { in drm_atomic_helper_update_legacy_modeset_state()
725 crtc->x = primary->state->src_x >> 16; in drm_atomic_helper_update_legacy_modeset_state()
726 crtc->y = primary->state->src_y >> 16; in drm_atomic_helper_update_legacy_modeset_state()
729 if (crtc->state->enable) in drm_atomic_helper_update_legacy_modeset_state()
730 drm_calc_timestamping_constants(crtc, in drm_atomic_helper_update_legacy_modeset_state()
731 &crtc->state->adjusted_mode); in drm_atomic_helper_update_legacy_modeset_state()
739 struct drm_crtc *crtc; in crtc_set_mode() local
745 for_each_crtc_in_state(old_state, crtc, old_crtc_state, i) { in crtc_set_mode()
748 if (!crtc->state->mode_changed) in crtc_set_mode()
751 funcs = crtc->helper_private; in crtc_set_mode()
753 if (crtc->state->enable && funcs->mode_set_nofb) { in crtc_set_mode()
755 crtc->base.id); in crtc_set_mode()
757 funcs->mode_set_nofb(crtc); in crtc_set_mode()
772 new_crtc_state = connector->state->crtc->state; in crtc_set_mode()
835 struct drm_crtc *crtc; in drm_atomic_helper_commit_modeset_enables() local
841 for_each_crtc_in_state(old_state, crtc, old_crtc_state, i) { in drm_atomic_helper_commit_modeset_enables()
845 if (!drm_atomic_crtc_needs_modeset(crtc->state)) in drm_atomic_helper_commit_modeset_enables()
848 if (!crtc->state->active) in drm_atomic_helper_commit_modeset_enables()
851 funcs = crtc->helper_private; in drm_atomic_helper_commit_modeset_enables()
853 if (crtc->state->enable) { in drm_atomic_helper_commit_modeset_enables()
855 crtc->base.id); in drm_atomic_helper_commit_modeset_enables()
858 funcs->enable(crtc); in drm_atomic_helper_commit_modeset_enables()
860 funcs->commit(crtc); in drm_atomic_helper_commit_modeset_enables()
871 if (!connector->state->crtc->state->active || in drm_atomic_helper_commit_modeset_enables()
872 !drm_atomic_crtc_needs_modeset(connector->state->crtc->state)) in drm_atomic_helper_commit_modeset_enables()
918 struct drm_crtc *crtc) in framebuffer_changed() argument
925 if (plane->state->crtc != crtc && in framebuffer_changed()
926 old_plane_state->crtc != crtc) in framebuffer_changed()
951 struct drm_crtc *crtc; in drm_atomic_helper_wait_for_vblanks() local
955 for_each_crtc_in_state(old_state, crtc, old_crtc_state, i) { in drm_atomic_helper_wait_for_vblanks()
961 if (!crtc->state->enable) in drm_atomic_helper_wait_for_vblanks()
969 if (!framebuffer_changed(dev, old_state, crtc)) in drm_atomic_helper_wait_for_vblanks()
972 ret = drm_crtc_vblank_get(crtc); in drm_atomic_helper_wait_for_vblanks()
977 old_crtc_state->last_vblank_count = drm_crtc_vblank_count(crtc); in drm_atomic_helper_wait_for_vblanks()
980 for_each_crtc_in_state(old_state, crtc, old_crtc_state, i) { in drm_atomic_helper_wait_for_vblanks()
986 drm_crtc_vblank_count(crtc), in drm_atomic_helper_wait_for_vblanks()
989 drm_crtc_vblank_put(crtc); in drm_atomic_helper_wait_for_vblanks()
1175 return state->crtc && state->crtc->state->active; in plane_crtc_active()
1216 struct drm_crtc *crtc; in drm_atomic_helper_commit_planes() local
1222 for_each_crtc_in_state(old_state, crtc, old_crtc_state, i) { in drm_atomic_helper_commit_planes()
1225 funcs = crtc->helper_private; in drm_atomic_helper_commit_planes()
1230 if (active_only && !crtc->state->active) in drm_atomic_helper_commit_planes()
1233 funcs->atomic_begin(crtc, old_crtc_state); in drm_atomic_helper_commit_planes()
1266 else if (plane->state->crtc || disabling) in drm_atomic_helper_commit_planes()
1270 for_each_crtc_in_state(old_state, crtc, old_crtc_state, i) { in drm_atomic_helper_commit_planes()
1273 funcs = crtc->helper_private; in drm_atomic_helper_commit_planes()
1278 if (active_only && !crtc->state->active) in drm_atomic_helper_commit_planes()
1281 funcs->atomic_flush(crtc, old_crtc_state); in drm_atomic_helper_commit_planes()
1307 struct drm_crtc *crtc = old_crtc_state->crtc; in drm_atomic_helper_commit_planes_on_crtc() local
1313 plane_mask |= crtc->state->plane_mask; in drm_atomic_helper_commit_planes_on_crtc()
1315 crtc_funcs = crtc->helper_private; in drm_atomic_helper_commit_planes_on_crtc()
1317 crtc_funcs->atomic_begin(crtc, old_crtc_state); in drm_atomic_helper_commit_planes_on_crtc()
1319 drm_for_each_plane_mask(plane, crtc->dev, plane_mask) { in drm_atomic_helper_commit_planes_on_crtc()
1329 WARN_ON(plane->state->crtc && plane->state->crtc != crtc); in drm_atomic_helper_commit_planes_on_crtc()
1334 else if (plane->state->crtc || in drm_atomic_helper_commit_planes_on_crtc()
1340 crtc_funcs->atomic_flush(crtc, old_crtc_state); in drm_atomic_helper_commit_planes_on_crtc()
1416 struct drm_crtc *crtc = state->crtcs[i]; in drm_atomic_helper_swap_state() local
1418 if (!crtc) in drm_atomic_helper_swap_state()
1421 crtc->state->state = state; in drm_atomic_helper_swap_state()
1422 swap(state->crtc_states[i], crtc->state); in drm_atomic_helper_swap_state()
1423 crtc->state->state = NULL; in drm_atomic_helper_swap_state()
1459 struct drm_crtc *crtc, in drm_atomic_helper_update_plane() argument
1474 state->acquire_ctx = drm_modeset_legacy_acquire_ctx(crtc); in drm_atomic_helper_update_plane()
1482 ret = drm_atomic_set_crtc_for_plane(plane_state, crtc); in drm_atomic_helper_update_plane()
1495 if (plane == crtc->cursor) in drm_atomic_helper_update_plane()
1549 if (!plane->crtc) in drm_atomic_helper_disable_plane()
1556 state->acquire_ctx = drm_modeset_legacy_acquire_ctx(plane->crtc); in drm_atomic_helper_disable_plane()
1564 if (plane_state->crtc && (plane == plane->crtc->cursor)) in drm_atomic_helper_disable_plane()
1625 struct drm_device *dev = set->crtc->dev; in update_output_state()
1626 struct drm_crtc *crtc; in update_output_state() local
1645 for_each_crtc_in_state(state, crtc, crtc_state, i) { in update_output_state()
1646 ret = drm_atomic_add_affected_connectors(state, crtc); in update_output_state()
1653 if (conn_state->crtc == set->crtc) { in update_output_state()
1663 set->crtc); in update_output_state()
1671 for_each_crtc_in_state(state, crtc, crtc_state, i) { in update_output_state()
1676 if (crtc == set->crtc) in update_output_state()
1679 if (!drm_atomic_connectors_for_crtc(state, crtc)) { in update_output_state()
1704 struct drm_crtc *crtc = set->crtc; in drm_atomic_helper_set_config() local
1707 state = drm_atomic_state_alloc(crtc->dev); in drm_atomic_helper_set_config()
1711 state->acquire_ctx = drm_modeset_legacy_acquire_ctx(crtc); in drm_atomic_helper_set_config()
1739 crtc->primary->old_fb = crtc->primary->fb; in drm_atomic_helper_set_config()
1751 struct drm_crtc *crtc = set->crtc; in __drm_atomic_helper_set_config() local
1755 crtc_state = drm_atomic_get_crtc_state(state, crtc); in __drm_atomic_helper_set_config()
1759 primary_state = drm_atomic_get_plane_state(state, crtc->primary); in __drm_atomic_helper_set_config()
1791 ret = drm_atomic_set_crtc_for_plane(primary_state, crtc); in __drm_atomic_helper_set_config()
1833 drm_atomic_helper_crtc_set_property(struct drm_crtc *crtc, in drm_atomic_helper_crtc_set_property() argument
1841 state = drm_atomic_state_alloc(crtc->dev); in drm_atomic_helper_crtc_set_property()
1846 state->acquire_ctx = crtc->dev->mode_config.acquire_ctx; in drm_atomic_helper_crtc_set_property()
1848 crtc_state = drm_atomic_get_crtc_state(state, crtc); in drm_atomic_helper_crtc_set_property()
1854 ret = drm_atomic_crtc_set_property(crtc, crtc_state, in drm_atomic_helper_crtc_set_property()
2016 int drm_atomic_helper_page_flip(struct drm_crtc *crtc, in drm_atomic_helper_page_flip() argument
2021 struct drm_plane *plane = crtc->primary; in drm_atomic_helper_page_flip()
2034 state->acquire_ctx = drm_modeset_legacy_acquire_ctx(crtc); in drm_atomic_helper_page_flip()
2036 crtc_state = drm_atomic_get_crtc_state(state, crtc); in drm_atomic_helper_page_flip()
2049 ret = drm_atomic_set_crtc_for_plane(plane_state, crtc); in drm_atomic_helper_page_flip()
2101 struct drm_crtc *crtc; in drm_atomic_helper_connector_dpms() local
2111 crtc = connector->state->crtc; in drm_atomic_helper_connector_dpms()
2113 if (!crtc) in drm_atomic_helper_connector_dpms()
2120 state->acquire_ctx = drm_modeset_legacy_acquire_ctx(crtc); in drm_atomic_helper_connector_dpms()
2122 crtc_state = drm_atomic_get_crtc_state(state, crtc); in drm_atomic_helper_connector_dpms()
2131 if (tmp_connector->state->crtc != crtc) in drm_atomic_helper_connector_dpms()
2185 void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc) in drm_atomic_helper_crtc_reset() argument
2187 if (crtc->state && crtc->state->mode_blob) in drm_atomic_helper_crtc_reset()
2188 drm_property_unreference_blob(crtc->state->mode_blob); in drm_atomic_helper_crtc_reset()
2189 kfree(crtc->state); in drm_atomic_helper_crtc_reset()
2190 crtc->state = kzalloc(sizeof(*crtc->state), GFP_KERNEL); in drm_atomic_helper_crtc_reset()
2192 if (crtc->state) in drm_atomic_helper_crtc_reset()
2193 crtc->state->crtc = crtc; in drm_atomic_helper_crtc_reset()
2205 void __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc, in __drm_atomic_helper_crtc_duplicate_state() argument
2208 memcpy(state, crtc->state, sizeof(*state)); in __drm_atomic_helper_crtc_duplicate_state()
2228 drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc) in drm_atomic_helper_crtc_duplicate_state() argument
2232 if (WARN_ON(!crtc->state)) in drm_atomic_helper_crtc_duplicate_state()
2237 __drm_atomic_helper_crtc_duplicate_state(crtc, state); in drm_atomic_helper_crtc_duplicate_state()
2252 void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc, in __drm_atomic_helper_crtc_destroy_state() argument
2268 void drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc, in drm_atomic_helper_crtc_destroy_state() argument
2271 __drm_atomic_helper_crtc_destroy_state(crtc, state); in drm_atomic_helper_crtc_destroy_state()
2453 struct drm_crtc *crtc; in drm_atomic_helper_duplicate_state() local
2462 drm_for_each_crtc(crtc, dev) { in drm_atomic_helper_duplicate_state()
2465 crtc_state = drm_atomic_get_crtc_state(state, crtc); in drm_atomic_helper_duplicate_state()