Lines Matching refs:state
57 drm_atomic_helper_plane_changed(struct drm_atomic_state *state, in drm_atomic_helper_plane_changed() argument
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()
74 state->crtc_states[drm_crtc_index(plane_state->crtc)]; in drm_atomic_helper_plane_changed()
93 if (connector->state->best_encoder != encoder) in get_current_crtc_for_encoder()
96 return connector->state->crtc; in get_current_crtc_for_encoder()
103 steal_encoder(struct drm_atomic_state *state, in steal_encoder() argument
107 struct drm_mode_config *config = &state->dev->mode_config; in steal_encoder()
123 crtc_state = drm_atomic_get_crtc_state(state, encoder_crtc); in steal_encoder()
130 if (connector->state->best_encoder != encoder) in steal_encoder()
137 connector_state = drm_atomic_get_connector_state(state, in steal_encoder()
152 update_connector_routing(struct drm_atomic_state *state, int conn_idx) in update_connector_routing() argument
162 connector = state->connectors[conn_idx]; in update_connector_routing()
163 connector_state = state->connector_states[conn_idx]; in update_connector_routing()
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()
176 crtc_state = state->crtc_states[idx]; in update_connector_routing()
183 crtc_state = state->crtc_states[idx]; in update_connector_routing()
219 encoder_crtc = get_current_crtc_for_encoder(state->dev, in update_connector_routing()
223 ret = steal_encoder(state, new_encoder, encoder_crtc); in update_connector_routing()
235 crtc_state = state->crtc_states[idx]; in update_connector_routing()
249 mode_fixup(struct drm_atomic_state *state) in mode_fixup() argument
258 for_each_crtc_in_state(state, crtc, crtc_state, i) { in mode_fixup()
265 for_each_connector_in_state(state, connector, conn_state, i) { in mode_fixup()
275 state->crtc_states[drm_crtc_index(conn_state->crtc)]; in mode_fixup()
313 for_each_crtc_in_state(state, crtc, crtc_state, i) { in mode_fixup()
333 needs_modeset(struct drm_crtc_state *state) in needs_modeset() argument
335 return state->mode_changed || state->active_changed; in needs_modeset()
362 struct drm_atomic_state *state) in drm_atomic_helper_check_modeset() argument
370 for_each_crtc_in_state(state, crtc, crtc_state, i) { in drm_atomic_helper_check_modeset()
371 if (!drm_mode_equal(&crtc->state->mode, &crtc_state->mode)) { in drm_atomic_helper_check_modeset()
377 if (crtc->state->enable != crtc_state->enable) { in drm_atomic_helper_check_modeset()
384 for_each_connector_in_state(state, connector, connector_state, i) { in drm_atomic_helper_check_modeset()
390 ret = update_connector_routing(state, i); in drm_atomic_helper_check_modeset()
401 for_each_crtc_in_state(state, crtc, crtc_state, i) { in drm_atomic_helper_check_modeset()
409 if (crtc->state->active != crtc_state->active) { in drm_atomic_helper_check_modeset()
423 ret = drm_atomic_add_affected_connectors(state, crtc); in drm_atomic_helper_check_modeset()
427 num_connectors = drm_atomic_connectors_for_crtc(state, in drm_atomic_helper_check_modeset()
438 return mode_fixup(state); in drm_atomic_helper_check_modeset()
456 struct drm_atomic_state *state) in drm_atomic_helper_check_planes() argument
464 for_each_plane_in_state(state, plane, plane_state, i) { in drm_atomic_helper_check_planes()
469 drm_atomic_helper_plane_changed(state, plane_state, plane); in drm_atomic_helper_check_planes()
482 for_each_crtc_in_state(state, crtc, crtc_state, i) { in drm_atomic_helper_check_planes()
490 ret = funcs->atomic_check(crtc, state->crtc_states[i]); in drm_atomic_helper_check_planes()
523 struct drm_atomic_state *state) in drm_atomic_helper_check() argument
527 ret = drm_atomic_helper_check_modeset(dev, state); in drm_atomic_helper_check()
531 ret = drm_atomic_helper_check_planes(dev, state); in drm_atomic_helper_check()
561 !needs_modeset(old_conn_state->crtc->state)) in disable_outputs()
585 if (connector->state->crtc && funcs->prepare) in disable_outputs()
600 if (!needs_modeset(crtc->state)) in disable_outputs()
613 if (crtc->state->enable && funcs->prepare) in disable_outputs()
644 if (!connector->state->crtc) in set_routing_links()
647 if (WARN_ON(!connector->state->best_encoder)) in set_routing_links()
650 connector->encoder = connector->state->best_encoder; in set_routing_links()
651 connector->encoder->crtc = connector->state->crtc; in set_routing_links()
656 crtc->mode = crtc->state->mode; in set_routing_links()
657 crtc->enabled = crtc->state->enable; in set_routing_links()
658 crtc->x = crtc->primary->state->src_x >> 16; in set_routing_links()
659 crtc->y = crtc->primary->state->src_y >> 16; in set_routing_links()
675 if (!crtc->state->mode_changed) in crtc_set_mode()
680 if (crtc->state->enable && funcs->mode_set_nofb) { in crtc_set_mode()
694 if (!connector->state->best_encoder) in crtc_set_mode()
697 encoder = connector->state->best_encoder; in crtc_set_mode()
699 new_crtc_state = connector->state->crtc->state; in crtc_set_mode()
772 if (!needs_modeset(crtc->state)) in drm_atomic_helper_commit_modeset_enables()
775 if (!crtc->state->active) in drm_atomic_helper_commit_modeset_enables()
780 if (crtc->state->enable) { in drm_atomic_helper_commit_modeset_enables()
795 if (!connector->state->best_encoder) in drm_atomic_helper_commit_modeset_enables()
798 if (!connector->state->crtc->state->active || in drm_atomic_helper_commit_modeset_enables()
799 !needs_modeset(connector->state->crtc->state)) in drm_atomic_helper_commit_modeset_enables()
802 encoder = connector->state->best_encoder; in drm_atomic_helper_commit_modeset_enables()
827 struct drm_atomic_state *state) in wait_for_fences() argument
833 for_each_plane_in_state(state, plane, plane_state, i) { in wait_for_fences()
834 if (!plane->state->fence) in wait_for_fences()
837 WARN_ON(!plane->state->fb); in wait_for_fences()
839 fence_wait(plane->state->fence, false); in wait_for_fences()
840 fence_put(plane->state->fence); in wait_for_fences()
841 plane->state->fence = NULL; in wait_for_fences()
854 if (plane->state->crtc != crtc && in framebuffer_changed()
858 if (plane->state->fb != old_plane_state->fb) in framebuffer_changed()
890 if (!crtc->state->enable) in drm_atomic_helper_wait_for_vblanks()
937 struct drm_atomic_state *state, in drm_atomic_helper_commit() argument
945 ret = drm_atomic_helper_prepare_planes(dev, state); in drm_atomic_helper_commit()
955 drm_atomic_helper_swap_state(dev, state); in drm_atomic_helper_commit()
973 wait_for_fences(dev, state); in drm_atomic_helper_commit()
975 drm_atomic_helper_commit_modeset_disables(dev, state); in drm_atomic_helper_commit()
977 drm_atomic_helper_commit_planes(dev, state); in drm_atomic_helper_commit()
979 drm_atomic_helper_commit_modeset_enables(dev, state); in drm_atomic_helper_commit()
981 drm_atomic_helper_wait_for_vblanks(dev, state); in drm_atomic_helper_commit()
983 drm_atomic_helper_cleanup_planes(dev, state); in drm_atomic_helper_commit()
985 drm_atomic_state_free(state); in drm_atomic_helper_commit()
1042 struct drm_atomic_state *state) in drm_atomic_helper_prepare_planes() argument
1049 struct drm_plane *plane = state->planes[i]; in drm_atomic_helper_prepare_planes()
1050 struct drm_plane_state *plane_state = state->plane_states[i]; in drm_atomic_helper_prepare_planes()
1072 struct drm_plane *plane = state->planes[i]; in drm_atomic_helper_prepare_planes()
1073 struct drm_plane_state *plane_state = state->plane_states[i]; in drm_atomic_helper_prepare_planes()
1081 fb = state->plane_states[i]->fb; in drm_atomic_helper_prepare_planes()
1217 struct drm_atomic_state *state) in drm_atomic_helper_swap_state() argument
1222 struct drm_connector *connector = state->connectors[i]; in drm_atomic_helper_swap_state()
1227 connector->state->state = state; in drm_atomic_helper_swap_state()
1228 swap(state->connector_states[i], connector->state); in drm_atomic_helper_swap_state()
1229 connector->state->state = NULL; in drm_atomic_helper_swap_state()
1233 struct drm_crtc *crtc = state->crtcs[i]; in drm_atomic_helper_swap_state()
1238 crtc->state->state = state; in drm_atomic_helper_swap_state()
1239 swap(state->crtc_states[i], crtc->state); in drm_atomic_helper_swap_state()
1240 crtc->state->state = NULL; in drm_atomic_helper_swap_state()
1244 struct drm_plane *plane = state->planes[i]; in drm_atomic_helper_swap_state()
1249 plane->state->state = state; in drm_atomic_helper_swap_state()
1250 swap(state->plane_states[i], plane->state); in drm_atomic_helper_swap_state()
1251 plane->state->state = NULL; in drm_atomic_helper_swap_state()
1283 struct drm_atomic_state *state; in drm_atomic_helper_update_plane() local
1287 state = drm_atomic_state_alloc(plane->dev); in drm_atomic_helper_update_plane()
1288 if (!state) in drm_atomic_helper_update_plane()
1291 state->acquire_ctx = drm_modeset_legacy_acquire_ctx(crtc); in drm_atomic_helper_update_plane()
1293 plane_state = drm_atomic_get_plane_state(state, plane); in drm_atomic_helper_update_plane()
1312 ret = drm_atomic_commit(state); in drm_atomic_helper_update_plane()
1317 state->legacy_cursor_update = true; in drm_atomic_helper_update_plane()
1325 drm_atomic_state_free(state); in drm_atomic_helper_update_plane()
1329 drm_atomic_state_clear(state); in drm_atomic_helper_update_plane()
1330 drm_atomic_legacy_backoff(state); in drm_atomic_helper_update_plane()
1354 struct drm_atomic_state *state; in drm_atomic_helper_disable_plane() local
1369 state = drm_atomic_state_alloc(plane->dev); in drm_atomic_helper_disable_plane()
1370 if (!state) in drm_atomic_helper_disable_plane()
1373 state->acquire_ctx = drm_modeset_legacy_acquire_ctx(plane->crtc); in drm_atomic_helper_disable_plane()
1375 plane_state = drm_atomic_get_plane_state(state, plane); in drm_atomic_helper_disable_plane()
1395 state->legacy_cursor_update = true; in drm_atomic_helper_disable_plane()
1397 ret = drm_atomic_commit(state); in drm_atomic_helper_disable_plane()
1407 drm_atomic_state_free(state); in drm_atomic_helper_disable_plane()
1411 drm_atomic_state_clear(state); in drm_atomic_helper_disable_plane()
1412 drm_atomic_legacy_backoff(state); in drm_atomic_helper_disable_plane()
1425 static int update_output_state(struct drm_atomic_state *state, in update_output_state() argument
1436 state->acquire_ctx); in update_output_state()
1442 conn_state = drm_atomic_get_connector_state(state, in update_output_state()
1448 for_each_crtc_in_state(state, crtc, crtc_state, i) { in update_output_state()
1449 ret = drm_atomic_add_affected_connectors(state, crtc); in update_output_state()
1455 for_each_connector_in_state(state, connector, conn_state, i) { in update_output_state()
1474 for_each_crtc_in_state(state, crtc, crtc_state, i) { in update_output_state()
1483 drm_atomic_connectors_for_crtc(state, crtc); in update_output_state()
1500 struct drm_atomic_state *state; in drm_atomic_helper_set_config() local
1506 state = drm_atomic_state_alloc(crtc->dev); in drm_atomic_helper_set_config()
1507 if (!state) in drm_atomic_helper_set_config()
1510 state->acquire_ctx = drm_modeset_legacy_acquire_ctx(crtc); in drm_atomic_helper_set_config()
1512 crtc_state = drm_atomic_get_crtc_state(state, crtc); in drm_atomic_helper_set_config()
1518 primary_state = drm_atomic_get_plane_state(state, crtc->primary); in drm_atomic_helper_set_config()
1561 ret = update_output_state(state, set); in drm_atomic_helper_set_config()
1565 ret = drm_atomic_commit(state); in drm_atomic_helper_set_config()
1575 drm_atomic_state_free(state); in drm_atomic_helper_set_config()
1579 drm_atomic_state_clear(state); in drm_atomic_helper_set_config()
1580 drm_atomic_legacy_backoff(state); in drm_atomic_helper_set_config()
1610 struct drm_atomic_state *state; in drm_atomic_helper_crtc_set_property() local
1614 state = drm_atomic_state_alloc(crtc->dev); in drm_atomic_helper_crtc_set_property()
1615 if (!state) in drm_atomic_helper_crtc_set_property()
1619 state->acquire_ctx = crtc->dev->mode_config.acquire_ctx; in drm_atomic_helper_crtc_set_property()
1621 crtc_state = drm_atomic_get_crtc_state(state, crtc); in drm_atomic_helper_crtc_set_property()
1632 ret = drm_atomic_commit(state); in drm_atomic_helper_crtc_set_property()
1642 drm_atomic_state_free(state); in drm_atomic_helper_crtc_set_property()
1646 drm_atomic_state_clear(state); in drm_atomic_helper_crtc_set_property()
1647 drm_atomic_legacy_backoff(state); in drm_atomic_helper_crtc_set_property()
1670 struct drm_atomic_state *state; in drm_atomic_helper_plane_set_property() local
1674 state = drm_atomic_state_alloc(plane->dev); in drm_atomic_helper_plane_set_property()
1675 if (!state) in drm_atomic_helper_plane_set_property()
1679 state->acquire_ctx = plane->dev->mode_config.acquire_ctx; in drm_atomic_helper_plane_set_property()
1681 plane_state = drm_atomic_get_plane_state(state, plane); in drm_atomic_helper_plane_set_property()
1692 ret = drm_atomic_commit(state); in drm_atomic_helper_plane_set_property()
1702 drm_atomic_state_free(state); in drm_atomic_helper_plane_set_property()
1706 drm_atomic_state_clear(state); in drm_atomic_helper_plane_set_property()
1707 drm_atomic_legacy_backoff(state); in drm_atomic_helper_plane_set_property()
1730 struct drm_atomic_state *state; in drm_atomic_helper_connector_set_property() local
1734 state = drm_atomic_state_alloc(connector->dev); in drm_atomic_helper_connector_set_property()
1735 if (!state) in drm_atomic_helper_connector_set_property()
1739 state->acquire_ctx = connector->dev->mode_config.acquire_ctx; in drm_atomic_helper_connector_set_property()
1741 connector_state = drm_atomic_get_connector_state(state, connector); in drm_atomic_helper_connector_set_property()
1752 ret = drm_atomic_commit(state); in drm_atomic_helper_connector_set_property()
1762 drm_atomic_state_free(state); in drm_atomic_helper_connector_set_property()
1766 drm_atomic_state_clear(state); in drm_atomic_helper_connector_set_property()
1767 drm_atomic_legacy_backoff(state); in drm_atomic_helper_connector_set_property()
1795 struct drm_atomic_state *state; in drm_atomic_helper_page_flip() local
1803 state = drm_atomic_state_alloc(plane->dev); in drm_atomic_helper_page_flip()
1804 if (!state) in drm_atomic_helper_page_flip()
1807 state->acquire_ctx = drm_modeset_legacy_acquire_ctx(crtc); in drm_atomic_helper_page_flip()
1809 crtc_state = drm_atomic_get_crtc_state(state, crtc); in drm_atomic_helper_page_flip()
1816 plane_state = drm_atomic_get_plane_state(state, plane); in drm_atomic_helper_page_flip()
1827 ret = drm_atomic_async_commit(state); in drm_atomic_helper_page_flip()
1833 plane->fb = plane->state->fb; in drm_atomic_helper_page_flip()
1841 drm_atomic_state_free(state); in drm_atomic_helper_page_flip()
1845 drm_atomic_state_clear(state); in drm_atomic_helper_page_flip()
1846 drm_atomic_legacy_backoff(state); in drm_atomic_helper_page_flip()
1873 struct drm_atomic_state *state; in drm_atomic_helper_connector_dpms() local
1884 crtc = connector->state->crtc; in drm_atomic_helper_connector_dpms()
1890 state = drm_atomic_state_alloc(connector->dev); in drm_atomic_helper_connector_dpms()
1891 if (!state) in drm_atomic_helper_connector_dpms()
1894 state->acquire_ctx = drm_modeset_legacy_acquire_ctx(crtc); in drm_atomic_helper_connector_dpms()
1896 crtc_state = drm_atomic_get_crtc_state(state, crtc); in drm_atomic_helper_connector_dpms()
1903 if (tmp_connector->state->crtc != crtc) in drm_atomic_helper_connector_dpms()
1913 ret = drm_atomic_commit(state); in drm_atomic_helper_connector_dpms()
1923 drm_atomic_state_free(state); in drm_atomic_helper_connector_dpms()
1929 drm_atomic_state_clear(state); in drm_atomic_helper_connector_dpms()
1930 drm_atomic_legacy_backoff(state); in drm_atomic_helper_connector_dpms()
1960 kfree(crtc->state); in drm_atomic_helper_crtc_reset()
1961 crtc->state = kzalloc(sizeof(*crtc->state), GFP_KERNEL); in drm_atomic_helper_crtc_reset()
1963 if (crtc->state) in drm_atomic_helper_crtc_reset()
1964 crtc->state->crtc = crtc; in drm_atomic_helper_crtc_reset()
1977 struct drm_crtc_state *state) in __drm_atomic_helper_crtc_duplicate_state() argument
1979 memcpy(state, crtc->state, sizeof(*state)); in __drm_atomic_helper_crtc_duplicate_state()
1981 state->mode_changed = false; in __drm_atomic_helper_crtc_duplicate_state()
1982 state->active_changed = false; in __drm_atomic_helper_crtc_duplicate_state()
1983 state->planes_changed = false; in __drm_atomic_helper_crtc_duplicate_state()
1984 state->event = NULL; in __drm_atomic_helper_crtc_duplicate_state()
1998 struct drm_crtc_state *state; in drm_atomic_helper_crtc_duplicate_state() local
2000 if (WARN_ON(!crtc->state)) in drm_atomic_helper_crtc_duplicate_state()
2003 state = kmalloc(sizeof(*state), GFP_KERNEL); in drm_atomic_helper_crtc_duplicate_state()
2004 if (state) in drm_atomic_helper_crtc_duplicate_state()
2005 __drm_atomic_helper_crtc_duplicate_state(crtc, state); in drm_atomic_helper_crtc_duplicate_state()
2007 return state; in drm_atomic_helper_crtc_duplicate_state()
2021 struct drm_crtc_state *state) in __drm_atomic_helper_crtc_destroy_state() argument
2040 struct drm_crtc_state *state) in drm_atomic_helper_crtc_destroy_state() argument
2042 __drm_atomic_helper_crtc_destroy_state(crtc, state); in drm_atomic_helper_crtc_destroy_state()
2043 kfree(state); in drm_atomic_helper_crtc_destroy_state()
2056 if (plane->state && plane->state->fb) in drm_atomic_helper_plane_reset()
2057 drm_framebuffer_unreference(plane->state->fb); in drm_atomic_helper_plane_reset()
2059 kfree(plane->state); in drm_atomic_helper_plane_reset()
2060 plane->state = kzalloc(sizeof(*plane->state), GFP_KERNEL); in drm_atomic_helper_plane_reset()
2062 if (plane->state) in drm_atomic_helper_plane_reset()
2063 plane->state->plane = plane; in drm_atomic_helper_plane_reset()
2076 struct drm_plane_state *state) in __drm_atomic_helper_plane_duplicate_state() argument
2078 memcpy(state, plane->state, sizeof(*state)); in __drm_atomic_helper_plane_duplicate_state()
2080 if (state->fb) in __drm_atomic_helper_plane_duplicate_state()
2081 drm_framebuffer_reference(state->fb); in __drm_atomic_helper_plane_duplicate_state()
2095 struct drm_plane_state *state; in drm_atomic_helper_plane_duplicate_state() local
2097 if (WARN_ON(!plane->state)) in drm_atomic_helper_plane_duplicate_state()
2100 state = kmalloc(sizeof(*state), GFP_KERNEL); in drm_atomic_helper_plane_duplicate_state()
2101 if (state) in drm_atomic_helper_plane_duplicate_state()
2102 __drm_atomic_helper_plane_duplicate_state(plane, state); in drm_atomic_helper_plane_duplicate_state()
2104 return state; in drm_atomic_helper_plane_duplicate_state()
2118 struct drm_plane_state *state) in __drm_atomic_helper_plane_destroy_state() argument
2120 if (state->fb) in __drm_atomic_helper_plane_destroy_state()
2121 drm_framebuffer_unreference(state->fb); in __drm_atomic_helper_plane_destroy_state()
2134 struct drm_plane_state *state) in drm_atomic_helper_plane_destroy_state() argument
2136 __drm_atomic_helper_plane_destroy_state(plane, state); in drm_atomic_helper_plane_destroy_state()
2137 kfree(state); in drm_atomic_helper_plane_destroy_state()
2151 kfree(connector->state); in drm_atomic_helper_connector_reset()
2152 connector->state = kzalloc(sizeof(*connector->state), GFP_KERNEL); in drm_atomic_helper_connector_reset()
2154 if (connector->state) in drm_atomic_helper_connector_reset()
2155 connector->state->connector = connector; in drm_atomic_helper_connector_reset()
2169 struct drm_connector_state *state) in __drm_atomic_helper_connector_duplicate_state() argument
2171 memcpy(state, connector->state, sizeof(*state)); in __drm_atomic_helper_connector_duplicate_state()
2185 struct drm_connector_state *state; in drm_atomic_helper_connector_duplicate_state() local
2187 if (WARN_ON(!connector->state)) in drm_atomic_helper_connector_duplicate_state()
2190 state = kmalloc(sizeof(*state), GFP_KERNEL); in drm_atomic_helper_connector_duplicate_state()
2191 if (state) in drm_atomic_helper_connector_duplicate_state()
2192 __drm_atomic_helper_connector_duplicate_state(connector, state); in drm_atomic_helper_connector_duplicate_state()
2194 return state; in drm_atomic_helper_connector_duplicate_state()
2209 struct drm_connector_state *state) in __drm_atomic_helper_connector_destroy_state() argument
2228 struct drm_connector_state *state) in drm_atomic_helper_connector_destroy_state() argument
2230 __drm_atomic_helper_connector_destroy_state(connector, state); in drm_atomic_helper_connector_destroy_state()
2231 kfree(state); in drm_atomic_helper_connector_destroy_state()