Lines Matching refs:state
66 drm_atomic_helper_plane_changed(struct drm_atomic_state *state, in drm_atomic_helper_plane_changed() argument
74 crtc_state = drm_atomic_get_new_crtc_state(state, in drm_atomic_helper_plane_changed()
84 crtc_state = drm_atomic_get_new_crtc_state(state, plane_state->crtc); in drm_atomic_helper_plane_changed()
93 static int handle_conflicting_encoders(struct drm_atomic_state *state, in handle_conflicting_encoders() argument
108 for_each_new_connector_in_state(state, connector, new_conn_state, i) { in handle_conflicting_encoders()
149 drm_connector_list_iter_begin(state->dev, &conn_iter); in handle_conflicting_encoders()
153 if (drm_atomic_get_new_connector_state(state, connector)) in handle_conflicting_encoders()
156 encoder = connector->state->best_encoder; in handle_conflicting_encoders()
163 connector->state->crtc->base.id, in handle_conflicting_encoders()
164 connector->state->crtc->name, in handle_conflicting_encoders()
170 new_conn_state = drm_atomic_get_connector_state(state, connector); in handle_conflicting_encoders()
181 crtc_state = drm_atomic_get_new_crtc_state(state, new_conn_state->crtc); in handle_conflicting_encoders()
203 set_best_encoder(struct drm_atomic_state *state, in set_best_encoder() argument
212 crtc = conn_state->connector->state->crtc; in set_best_encoder()
222 crtc_state = drm_atomic_get_new_crtc_state(state, crtc); in set_best_encoder()
233 crtc_state = drm_atomic_get_new_crtc_state(state, crtc); in set_best_encoder()
244 steal_encoder(struct drm_atomic_state *state, in steal_encoder() argument
252 …for_each_oldnew_connector_in_state(state, connector, old_connector_state, new_connector_state, i) { in steal_encoder()
264 set_best_encoder(state, new_connector_state, NULL); in steal_encoder()
266 crtc_state = drm_atomic_get_new_crtc_state(state, encoder_crtc); in steal_encoder()
274 update_connector_routing(struct drm_atomic_state *state, in update_connector_routing() argument
289 … crtc_state = drm_atomic_get_new_crtc_state(state, old_connector_state->crtc); in update_connector_routing()
294 … crtc_state = drm_atomic_get_new_crtc_state(state, new_connector_state->crtc); in update_connector_routing()
304 set_best_encoder(state, new_connector_state, NULL); in update_connector_routing()
336 set_best_encoder(state, new_connector_state, new_encoder); in update_connector_routing()
349 steal_encoder(state, new_encoder); in update_connector_routing()
351 set_best_encoder(state, new_connector_state, new_encoder); in update_connector_routing()
353 crtc_state = drm_atomic_get_new_crtc_state(state, new_connector_state->crtc); in update_connector_routing()
368 mode_fixup(struct drm_atomic_state *state) in mode_fixup() argument
377 for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { in mode_fixup()
385 for_each_new_connector_in_state(state, connector, new_conn_state, i) { in mode_fixup()
395 drm_atomic_get_new_crtc_state(state, new_conn_state->crtc); in mode_fixup()
430 for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { in mode_fixup()
487 mode_valid(struct drm_atomic_state *state) in mode_valid() argument
493 for_each_new_connector_in_state(state, connector, conn_state, i) { in mode_valid()
503 crtc_state = drm_atomic_get_new_crtc_state(state, crtc); in mode_valid()
564 struct drm_atomic_state *state) in drm_atomic_helper_check_modeset() argument
573 for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { in drm_atomic_helper_check_modeset()
615 ret = handle_conflicting_encoders(state, false); in drm_atomic_helper_check_modeset()
619 …for_each_oldnew_connector_in_state(state, connector, old_connector_state, new_connector_state, i) { in drm_atomic_helper_check_modeset()
629 ret = update_connector_routing(state, connector, in drm_atomic_helper_check_modeset()
635 new_crtc_state = drm_atomic_get_new_crtc_state(state, in drm_atomic_helper_check_modeset()
656 for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { in drm_atomic_helper_check_modeset()
665 ret = drm_atomic_add_affected_connectors(state, crtc); in drm_atomic_helper_check_modeset()
669 ret = drm_atomic_add_affected_planes(state, crtc); in drm_atomic_helper_check_modeset()
678 …for_each_oldnew_connector_in_state(state, connector, old_connector_state, new_connector_state, i) { in drm_atomic_helper_check_modeset()
690 ret = mode_valid(state); in drm_atomic_helper_check_modeset()
694 return mode_fixup(state); in drm_atomic_helper_check_modeset()
716 struct drm_atomic_state *state) in drm_atomic_helper_check_planes() argument
724 for_each_oldnew_plane_in_state(state, plane, old_plane_state, new_plane_state, i) { in drm_atomic_helper_check_planes()
731 drm_atomic_helper_plane_changed(state, old_plane_state, new_plane_state, plane); in drm_atomic_helper_check_planes()
744 for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { in drm_atomic_helper_check_planes()
786 struct drm_atomic_state *state) in drm_atomic_helper_check() argument
790 ret = drm_atomic_helper_check_modeset(dev, state); in drm_atomic_helper_check()
794 ret = drm_atomic_helper_check_planes(dev, state); in drm_atomic_helper_check()
798 if (state->legacy_cursor_update) in drm_atomic_helper_check()
799 state->async_update = !drm_atomic_helper_async_check(dev, state); in drm_atomic_helper_check()
826 !drm_atomic_crtc_needs_modeset(old_conn_state->crtc->state)) in disable_outputs()
932 (crtc && drm_atomic_crtc_needs_modeset(crtc->state))) { in drm_atomic_helper_update_legacy_modeset_state()
935 if (crtc && crtc->state->active) in drm_atomic_helper_update_legacy_modeset_state()
1012 new_crtc_state = new_conn_state->crtc->state; in crtc_set_mode()
1116 if (!new_conn_state->crtc->state->active || in drm_atomic_helper_commit_modeset_enables()
1117 !drm_atomic_crtc_needs_modeset(new_conn_state->crtc->state)) in drm_atomic_helper_commit_modeset_enables()
1166 struct drm_atomic_state *state, in drm_atomic_helper_wait_for_fences() argument
1173 for_each_new_plane_in_state(state, plane, new_plane_state, i) { in drm_atomic_helper_wait_for_fences()
1376 struct drm_atomic_state *state = container_of(work, in commit_work() local
1379 commit_tail(state); in commit_work()
1396 struct drm_atomic_state *state) in drm_atomic_helper_async_check() argument
1405 for_each_new_crtc_in_state(state, crtc, crtc_state, i) { in drm_atomic_helper_async_check()
1410 for_each_oldnew_plane_in_state(state, plane, old_plane_state, new_plane_state, i) in drm_atomic_helper_async_check()
1452 struct drm_atomic_state *state) in drm_atomic_helper_async_commit() argument
1459 for_each_new_plane_in_state(state, plane, plane_state, i) { in drm_atomic_helper_async_commit()
1485 struct drm_atomic_state *state, in drm_atomic_helper_commit() argument
1490 if (state->async_update) { in drm_atomic_helper_commit()
1491 ret = drm_atomic_helper_prepare_planes(dev, state); in drm_atomic_helper_commit()
1495 drm_atomic_helper_async_commit(dev, state); in drm_atomic_helper_commit()
1496 drm_atomic_helper_cleanup_planes(dev, state); in drm_atomic_helper_commit()
1501 ret = drm_atomic_helper_setup_commit(state, nonblock); in drm_atomic_helper_commit()
1505 INIT_WORK(&state->commit_work, commit_work); in drm_atomic_helper_commit()
1507 ret = drm_atomic_helper_prepare_planes(dev, state); in drm_atomic_helper_commit()
1512 ret = drm_atomic_helper_wait_for_fences(dev, state, true); in drm_atomic_helper_commit()
1523 ret = drm_atomic_helper_swap_state(state, true); in drm_atomic_helper_commit()
1547 drm_atomic_state_get(state); in drm_atomic_helper_commit()
1549 queue_work(system_unbound_wq, &state->commit_work); in drm_atomic_helper_commit()
1551 commit_tail(state); in drm_atomic_helper_commit()
1556 drm_atomic_helper_cleanup_planes(dev, state); in drm_atomic_helper_commit()
1666 crtc_or_fake_commit(struct drm_atomic_state *state, struct drm_crtc *crtc) in crtc_or_fake_commit() argument
1671 new_crtc_state = drm_atomic_get_new_crtc_state(state, crtc); in crtc_or_fake_commit()
1676 if (!state->fake_commit) { in crtc_or_fake_commit()
1677 state->fake_commit = kzalloc(sizeof(*state->fake_commit), GFP_KERNEL); in crtc_or_fake_commit()
1678 if (!state->fake_commit) in crtc_or_fake_commit()
1681 init_commit(state->fake_commit, NULL); in crtc_or_fake_commit()
1684 return state->fake_commit; in crtc_or_fake_commit()
1730 int drm_atomic_helper_setup_commit(struct drm_atomic_state *state, in drm_atomic_helper_setup_commit() argument
1742 for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { in drm_atomic_helper_setup_commit()
1764 if (state->legacy_cursor_update) { in drm_atomic_helper_setup_commit()
1785 for_each_oldnew_connector_in_state(state, conn, old_conn_state, new_conn_state, i) { in drm_atomic_helper_setup_commit()
1796 commit = crtc_or_fake_commit(state, old_conn_state->crtc); in drm_atomic_helper_setup_commit()
1803 for_each_oldnew_plane_in_state(state, plane, old_plane_state, new_plane_state, i) { in drm_atomic_helper_setup_commit()
1814 … commit = crtc_or_fake_commit(state, new_plane_state->crtc ?: old_plane_state->crtc); in drm_atomic_helper_setup_commit()
2013 struct drm_atomic_state *state) in drm_atomic_helper_prepare_planes() argument
2019 for_each_new_plane_in_state(state, plane, new_plane_state, i) { in drm_atomic_helper_prepare_planes()
2034 for_each_new_plane_in_state(state, plane, new_plane_state, j) { in drm_atomic_helper_prepare_planes()
2050 static bool plane_crtc_active(const struct drm_plane_state *state) in plane_crtc_active() argument
2052 return state->crtc && state->crtc->state->active; in plane_crtc_active()
2154 crtc_state = old_plane_state->crtc->state; in drm_atomic_helper_commit_planes()
2204 struct drm_atomic_state *old_state = old_crtc_state->state; in drm_atomic_helper_commit_planes_on_crtc()
2209 plane_mask |= crtc->state->plane_mask; in drm_atomic_helper_commit_planes_on_crtc()
2225 WARN_ON(plane->state->crtc && plane->state->crtc != crtc); in drm_atomic_helper_commit_planes_on_crtc()
2227 if (drm_atomic_plane_disabling(old_plane_state, plane->state) && in drm_atomic_helper_commit_planes_on_crtc()
2230 else if (plane->state->crtc || in drm_atomic_helper_commit_planes_on_crtc()
2231 drm_atomic_plane_disabling(old_plane_state, plane->state)) in drm_atomic_helper_commit_planes_on_crtc()
2312 if (old_plane_state == plane->state) in drm_atomic_helper_cleanup_planes()
2360 int drm_atomic_helper_swap_state(struct drm_atomic_state *state, in drm_atomic_helper_swap_state() argument
2384 for_each_old_crtc_in_state(state, crtc, old_crtc_state, i) { in drm_atomic_helper_swap_state()
2395 for_each_old_connector_in_state(state, connector, old_conn_state, i) { in drm_atomic_helper_swap_state()
2406 for_each_old_plane_in_state(state, plane, old_plane_state, i) { in drm_atomic_helper_swap_state()
2418 for_each_oldnew_connector_in_state(state, connector, old_conn_state, new_conn_state, i) { in drm_atomic_helper_swap_state()
2419 WARN_ON(connector->state != old_conn_state); in drm_atomic_helper_swap_state()
2421 old_conn_state->state = state; in drm_atomic_helper_swap_state()
2422 new_conn_state->state = NULL; in drm_atomic_helper_swap_state()
2424 state->connectors[i].state = old_conn_state; in drm_atomic_helper_swap_state()
2425 connector->state = new_conn_state; in drm_atomic_helper_swap_state()
2428 for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { in drm_atomic_helper_swap_state()
2429 WARN_ON(crtc->state != old_crtc_state); in drm_atomic_helper_swap_state()
2431 old_crtc_state->state = state; in drm_atomic_helper_swap_state()
2432 new_crtc_state->state = NULL; in drm_atomic_helper_swap_state()
2434 state->crtcs[i].state = old_crtc_state; in drm_atomic_helper_swap_state()
2435 crtc->state = new_crtc_state; in drm_atomic_helper_swap_state()
2447 for_each_oldnew_plane_in_state(state, plane, old_plane_state, new_plane_state, i) { in drm_atomic_helper_swap_state()
2448 WARN_ON(plane->state != old_plane_state); in drm_atomic_helper_swap_state()
2450 old_plane_state->state = state; in drm_atomic_helper_swap_state()
2451 new_plane_state->state = NULL; in drm_atomic_helper_swap_state()
2453 state->planes[i].state = old_plane_state; in drm_atomic_helper_swap_state()
2454 plane->state = new_plane_state; in drm_atomic_helper_swap_state()
2457 for_each_oldnew_private_obj_in_state(state, obj, old_obj_state, new_obj_state, i) { in drm_atomic_helper_swap_state()
2458 WARN_ON(obj->state != old_obj_state); in drm_atomic_helper_swap_state()
2460 old_obj_state->state = state; in drm_atomic_helper_swap_state()
2461 new_obj_state->state = NULL; in drm_atomic_helper_swap_state()
2463 state->private_objs[i].state = old_obj_state; in drm_atomic_helper_swap_state()
2464 obj->state = new_obj_state; in drm_atomic_helper_swap_state()
2500 struct drm_atomic_state *state; in drm_atomic_helper_update_plane() local
2504 state = drm_atomic_state_alloc(plane->dev); in drm_atomic_helper_update_plane()
2505 if (!state) in drm_atomic_helper_update_plane()
2508 state->acquire_ctx = ctx; in drm_atomic_helper_update_plane()
2509 plane_state = drm_atomic_get_plane_state(state, plane); in drm_atomic_helper_update_plane()
2529 state->legacy_cursor_update = true; in drm_atomic_helper_update_plane()
2531 ret = drm_atomic_commit(state); in drm_atomic_helper_update_plane()
2533 drm_atomic_state_put(state); in drm_atomic_helper_update_plane()
2551 struct drm_atomic_state *state; in drm_atomic_helper_disable_plane() local
2555 state = drm_atomic_state_alloc(plane->dev); in drm_atomic_helper_disable_plane()
2556 if (!state) in drm_atomic_helper_disable_plane()
2559 state->acquire_ctx = ctx; in drm_atomic_helper_disable_plane()
2560 plane_state = drm_atomic_get_plane_state(state, plane); in drm_atomic_helper_disable_plane()
2567 plane_state->state->legacy_cursor_update = true; in drm_atomic_helper_disable_plane()
2573 ret = drm_atomic_commit(state); in drm_atomic_helper_disable_plane()
2575 drm_atomic_state_put(state); in drm_atomic_helper_disable_plane()
2603 static int update_output_state(struct drm_atomic_state *state, in update_output_state() argument
2614 state->acquire_ctx); in update_output_state()
2619 ret = drm_atomic_add_affected_connectors(state, set->crtc); in update_output_state()
2623 for_each_new_connector_in_state(state, connector, new_conn_state, i) { in update_output_state()
2637 new_conn_state = drm_atomic_get_connector_state(state, in update_output_state()
2648 for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { in update_output_state()
2688 struct drm_atomic_state *state; in drm_atomic_helper_set_config() local
2692 state = drm_atomic_state_alloc(crtc->dev); in drm_atomic_helper_set_config()
2693 if (!state) in drm_atomic_helper_set_config()
2696 state->acquire_ctx = ctx; in drm_atomic_helper_set_config()
2697 ret = __drm_atomic_helper_set_config(set, state); in drm_atomic_helper_set_config()
2701 ret = handle_conflicting_encoders(state, true); in drm_atomic_helper_set_config()
2705 ret = drm_atomic_commit(state); in drm_atomic_helper_set_config()
2708 drm_atomic_state_put(state); in drm_atomic_helper_set_config()
2715 struct drm_atomic_state *state) in __drm_atomic_helper_set_config() argument
2723 crtc_state = drm_atomic_get_crtc_state(state, crtc); in __drm_atomic_helper_set_config()
2727 primary_state = drm_atomic_get_plane_state(state, crtc->primary); in __drm_atomic_helper_set_config()
2781 ret = update_output_state(state, set); in __drm_atomic_helper_set_config()
2814 struct drm_atomic_state *state; in drm_atomic_helper_disable_all() local
2824 state = drm_atomic_state_alloc(dev); in drm_atomic_helper_disable_all()
2825 if (!state) in drm_atomic_helper_disable_all()
2828 state->acquire_ctx = ctx; in drm_atomic_helper_disable_all()
2831 crtc_state = drm_atomic_get_crtc_state(state, crtc); in drm_atomic_helper_disable_all()
2843 ret = drm_atomic_add_affected_planes(state, crtc); in drm_atomic_helper_disable_all()
2847 ret = drm_atomic_add_affected_connectors(state, crtc); in drm_atomic_helper_disable_all()
2852 for_each_new_connector_in_state(state, conn, conn_state, i) { in drm_atomic_helper_disable_all()
2858 for_each_new_plane_in_state(state, plane, plane_state, i) { in drm_atomic_helper_disable_all()
2868 ret = drm_atomic_commit(state); in drm_atomic_helper_disable_all()
2872 drm_atomic_state_put(state); in drm_atomic_helper_disable_all()
2942 struct drm_atomic_state *state; in drm_atomic_helper_suspend() local
2950 state = ERR_PTR(err); in drm_atomic_helper_suspend()
2954 state = drm_atomic_helper_duplicate_state(dev, &ctx); in drm_atomic_helper_suspend()
2955 if (IS_ERR(state)) in drm_atomic_helper_suspend()
2960 drm_atomic_state_put(state); in drm_atomic_helper_suspend()
2961 state = ERR_PTR(err); in drm_atomic_helper_suspend()
2966 if (PTR_ERR(state) == -EDEADLK) { in drm_atomic_helper_suspend()
2973 return state; in drm_atomic_helper_suspend()
2992 int drm_atomic_helper_commit_duplicated_state(struct drm_atomic_state *state, in drm_atomic_helper_commit_duplicated_state() argument
3003 struct drm_device *dev = state->dev; in drm_atomic_helper_commit_duplicated_state()
3006 state->acquire_ctx = ctx; in drm_atomic_helper_commit_duplicated_state()
3008 for_each_new_plane_in_state(state, plane, new_plane_state, i) { in drm_atomic_helper_commit_duplicated_state()
3010 state->planes[i].old_state = plane->state; in drm_atomic_helper_commit_duplicated_state()
3013 for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) in drm_atomic_helper_commit_duplicated_state()
3014 state->crtcs[i].old_state = crtc->state; in drm_atomic_helper_commit_duplicated_state()
3016 for_each_new_connector_in_state(state, connector, new_conn_state, i) in drm_atomic_helper_commit_duplicated_state()
3017 state->connectors[i].old_state = connector->state; in drm_atomic_helper_commit_duplicated_state()
3019 ret = drm_atomic_commit(state); in drm_atomic_helper_commit_duplicated_state()
3044 struct drm_atomic_state *state) in drm_atomic_helper_resume() argument
3057 err = drm_atomic_helper_commit_duplicated_state(state, &ctx); in drm_atomic_helper_resume()
3065 drm_atomic_state_put(state); in drm_atomic_helper_resume()
3073 static int page_flip_common(struct drm_atomic_state *state, in page_flip_common() argument
3084 crtc_state = drm_atomic_get_crtc_state(state, crtc); in page_flip_common()
3091 plane_state = drm_atomic_get_plane_state(state, plane); in page_flip_common()
3101 state->allow_modeset = false; in page_flip_common()
3135 struct drm_atomic_state *state; in drm_atomic_helper_page_flip() local
3138 state = drm_atomic_state_alloc(plane->dev); in drm_atomic_helper_page_flip()
3139 if (!state) in drm_atomic_helper_page_flip()
3142 state->acquire_ctx = ctx; in drm_atomic_helper_page_flip()
3144 ret = page_flip_common(state, crtc, fb, event, flags); in drm_atomic_helper_page_flip()
3148 ret = drm_atomic_nonblocking_commit(state); in drm_atomic_helper_page_flip()
3150 drm_atomic_state_put(state); in drm_atomic_helper_page_flip()
3179 struct drm_atomic_state *state; in drm_atomic_helper_page_flip_target() local
3183 state = drm_atomic_state_alloc(plane->dev); in drm_atomic_helper_page_flip_target()
3184 if (!state) in drm_atomic_helper_page_flip_target()
3187 state->acquire_ctx = ctx; in drm_atomic_helper_page_flip_target()
3189 ret = page_flip_common(state, crtc, fb, event, flags); in drm_atomic_helper_page_flip_target()
3193 crtc_state = drm_atomic_get_new_crtc_state(state, crtc); in drm_atomic_helper_page_flip_target()
3200 ret = drm_atomic_nonblocking_commit(state); in drm_atomic_helper_page_flip_target()
3202 drm_atomic_state_put(state); in drm_atomic_helper_page_flip_target()
3254 if (crtc->state) in drm_atomic_helper_crtc_reset()
3255 __drm_atomic_helper_crtc_destroy_state(crtc->state); in drm_atomic_helper_crtc_reset()
3257 kfree(crtc->state); in drm_atomic_helper_crtc_reset()
3258 crtc->state = kzalloc(sizeof(*crtc->state), GFP_KERNEL); in drm_atomic_helper_crtc_reset()
3260 if (crtc->state) in drm_atomic_helper_crtc_reset()
3261 crtc->state->crtc = crtc; in drm_atomic_helper_crtc_reset()
3274 struct drm_crtc_state *state) in __drm_atomic_helper_crtc_duplicate_state() argument
3276 memcpy(state, crtc->state, sizeof(*state)); in __drm_atomic_helper_crtc_duplicate_state()
3278 if (state->mode_blob) in __drm_atomic_helper_crtc_duplicate_state()
3279 drm_property_blob_get(state->mode_blob); in __drm_atomic_helper_crtc_duplicate_state()
3280 if (state->degamma_lut) in __drm_atomic_helper_crtc_duplicate_state()
3281 drm_property_blob_get(state->degamma_lut); in __drm_atomic_helper_crtc_duplicate_state()
3282 if (state->ctm) in __drm_atomic_helper_crtc_duplicate_state()
3283 drm_property_blob_get(state->ctm); in __drm_atomic_helper_crtc_duplicate_state()
3284 if (state->gamma_lut) in __drm_atomic_helper_crtc_duplicate_state()
3285 drm_property_blob_get(state->gamma_lut); in __drm_atomic_helper_crtc_duplicate_state()
3286 state->mode_changed = false; in __drm_atomic_helper_crtc_duplicate_state()
3287 state->active_changed = false; in __drm_atomic_helper_crtc_duplicate_state()
3288 state->planes_changed = false; in __drm_atomic_helper_crtc_duplicate_state()
3289 state->connectors_changed = false; in __drm_atomic_helper_crtc_duplicate_state()
3290 state->color_mgmt_changed = false; in __drm_atomic_helper_crtc_duplicate_state()
3291 state->zpos_changed = false; in __drm_atomic_helper_crtc_duplicate_state()
3292 state->commit = NULL; in __drm_atomic_helper_crtc_duplicate_state()
3293 state->event = NULL; in __drm_atomic_helper_crtc_duplicate_state()
3294 state->pageflip_flags = 0; in __drm_atomic_helper_crtc_duplicate_state()
3308 struct drm_crtc_state *state; in drm_atomic_helper_crtc_duplicate_state() local
3310 if (WARN_ON(!crtc->state)) in drm_atomic_helper_crtc_duplicate_state()
3313 state = kmalloc(sizeof(*state), M_DRM, GFP_KERNEL); in drm_atomic_helper_crtc_duplicate_state()
3314 if (state) in drm_atomic_helper_crtc_duplicate_state()
3315 __drm_atomic_helper_crtc_duplicate_state(crtc, state); in drm_atomic_helper_crtc_duplicate_state()
3317 return state; in drm_atomic_helper_crtc_duplicate_state()
3329 void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc_state *state) in __drm_atomic_helper_crtc_destroy_state() argument
3331 if (state->commit) { in __drm_atomic_helper_crtc_destroy_state()
3341 if (state->event && state->commit->abort_completion) in __drm_atomic_helper_crtc_destroy_state()
3342 drm_crtc_commit_put(state->commit); in __drm_atomic_helper_crtc_destroy_state()
3344 kfree(state->commit->event); in __drm_atomic_helper_crtc_destroy_state()
3345 state->commit->event = NULL; in __drm_atomic_helper_crtc_destroy_state()
3347 drm_crtc_commit_put(state->commit); in __drm_atomic_helper_crtc_destroy_state()
3350 drm_property_blob_put(state->mode_blob); in __drm_atomic_helper_crtc_destroy_state()
3351 drm_property_blob_put(state->degamma_lut); in __drm_atomic_helper_crtc_destroy_state()
3352 drm_property_blob_put(state->ctm); in __drm_atomic_helper_crtc_destroy_state()
3353 drm_property_blob_put(state->gamma_lut); in __drm_atomic_helper_crtc_destroy_state()
3366 struct drm_crtc_state *state) in drm_atomic_helper_crtc_destroy_state() argument
3368 __drm_atomic_helper_crtc_destroy_state(state); in drm_atomic_helper_crtc_destroy_state()
3369 kfree(state); in drm_atomic_helper_crtc_destroy_state()
3382 if (plane->state) in drm_atomic_helper_plane_reset()
3383 __drm_atomic_helper_plane_destroy_state(plane->state); in drm_atomic_helper_plane_reset()
3385 kfree(plane->state); in drm_atomic_helper_plane_reset()
3386 plane->state = kzalloc(sizeof(*plane->state), GFP_KERNEL); in drm_atomic_helper_plane_reset()
3388 if (plane->state) { in drm_atomic_helper_plane_reset()
3389 plane->state->plane = plane; in drm_atomic_helper_plane_reset()
3390 plane->state->rotation = DRM_MODE_ROTATE_0; in drm_atomic_helper_plane_reset()
3404 struct drm_plane_state *state) in __drm_atomic_helper_plane_duplicate_state() argument
3406 memcpy(state, plane->state, sizeof(*state)); in __drm_atomic_helper_plane_duplicate_state()
3408 if (state->fb) in __drm_atomic_helper_plane_duplicate_state()
3409 drm_framebuffer_get(state->fb); in __drm_atomic_helper_plane_duplicate_state()
3411 state->fence = NULL; in __drm_atomic_helper_plane_duplicate_state()
3412 state->commit = NULL; in __drm_atomic_helper_plane_duplicate_state()
3426 struct drm_plane_state *state; in drm_atomic_helper_plane_duplicate_state() local
3428 if (WARN_ON(!plane->state)) in drm_atomic_helper_plane_duplicate_state()
3431 state = kmalloc(sizeof(*state), M_DRM, GFP_KERNEL); in drm_atomic_helper_plane_duplicate_state()
3432 if (state) in drm_atomic_helper_plane_duplicate_state()
3433 __drm_atomic_helper_plane_duplicate_state(plane, state); in drm_atomic_helper_plane_duplicate_state()
3435 return state; in drm_atomic_helper_plane_duplicate_state()
3447 void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state) in __drm_atomic_helper_plane_destroy_state() argument
3449 if (state->fb) in __drm_atomic_helper_plane_destroy_state()
3450 drm_framebuffer_put(state->fb); in __drm_atomic_helper_plane_destroy_state()
3452 if (state->fence) in __drm_atomic_helper_plane_destroy_state()
3453 dma_fence_put(state->fence); in __drm_atomic_helper_plane_destroy_state()
3455 if (state->commit) in __drm_atomic_helper_plane_destroy_state()
3456 drm_crtc_commit_put(state->commit); in __drm_atomic_helper_plane_destroy_state()
3469 struct drm_plane_state *state) in drm_atomic_helper_plane_destroy_state() argument
3471 __drm_atomic_helper_plane_destroy_state(state); in drm_atomic_helper_plane_destroy_state()
3472 kfree(state); in drm_atomic_helper_plane_destroy_state()
3495 connector->state = conn_state; in __drm_atomic_helper_connector_reset()
3512 if (connector->state) in drm_atomic_helper_connector_reset()
3513 __drm_atomic_helper_connector_destroy_state(connector->state); in drm_atomic_helper_connector_reset()
3515 kfree(connector->state); in drm_atomic_helper_connector_reset()
3530 struct drm_connector_state *state) in __drm_atomic_helper_connector_duplicate_state() argument
3532 memcpy(state, connector->state, sizeof(*state)); in __drm_atomic_helper_connector_duplicate_state()
3533 if (state->crtc) in __drm_atomic_helper_connector_duplicate_state()
3535 state->commit = NULL; in __drm_atomic_helper_connector_duplicate_state()
3549 struct drm_connector_state *state; in drm_atomic_helper_connector_duplicate_state() local
3551 if (WARN_ON(!connector->state)) in drm_atomic_helper_connector_duplicate_state()
3554 state = kmalloc(sizeof(*state), M_DRM, GFP_KERNEL); in drm_atomic_helper_connector_duplicate_state()
3555 if (state) in drm_atomic_helper_connector_duplicate_state()
3556 __drm_atomic_helper_connector_duplicate_state(connector, state); in drm_atomic_helper_connector_duplicate_state()
3558 return state; in drm_atomic_helper_connector_duplicate_state()
3590 struct drm_atomic_state *state; in drm_atomic_helper_duplicate_state() local
3597 state = drm_atomic_state_alloc(dev); in drm_atomic_helper_duplicate_state()
3598 if (!state) in drm_atomic_helper_duplicate_state()
3601 state->acquire_ctx = ctx; in drm_atomic_helper_duplicate_state()
3606 crtc_state = drm_atomic_get_crtc_state(state, crtc); in drm_atomic_helper_duplicate_state()
3616 plane_state = drm_atomic_get_plane_state(state, plane); in drm_atomic_helper_duplicate_state()
3627 conn_state = drm_atomic_get_connector_state(state, conn); in drm_atomic_helper_duplicate_state()
3637 state->acquire_ctx = NULL; in drm_atomic_helper_duplicate_state()
3641 drm_atomic_state_put(state); in drm_atomic_helper_duplicate_state()
3642 state = ERR_PTR(err); in drm_atomic_helper_duplicate_state()
3645 return state; in drm_atomic_helper_duplicate_state()
3658 __drm_atomic_helper_connector_destroy_state(struct drm_connector_state *state) in __drm_atomic_helper_connector_destroy_state() argument
3660 if (state->crtc) in __drm_atomic_helper_connector_destroy_state()
3661 drm_connector_put(state->connector); in __drm_atomic_helper_connector_destroy_state()
3663 if (state->commit) in __drm_atomic_helper_connector_destroy_state()
3664 drm_crtc_commit_put(state->commit); in __drm_atomic_helper_connector_destroy_state()
3677 struct drm_connector_state *state) in drm_atomic_helper_connector_destroy_state() argument
3679 __drm_atomic_helper_connector_destroy_state(state); in drm_atomic_helper_connector_destroy_state()
3680 kfree(state); in drm_atomic_helper_connector_destroy_state()
3704 struct drm_atomic_state *state; in drm_atomic_helper_legacy_gamma_set() local
3711 state = drm_atomic_state_alloc(crtc->dev); in drm_atomic_helper_legacy_gamma_set()
3712 if (!state) in drm_atomic_helper_legacy_gamma_set()
3732 state->acquire_ctx = ctx; in drm_atomic_helper_legacy_gamma_set()
3733 crtc_state = drm_atomic_get_crtc_state(state, crtc); in drm_atomic_helper_legacy_gamma_set()
3745 ret = drm_atomic_commit(state); in drm_atomic_helper_legacy_gamma_set()
3748 drm_atomic_state_put(state); in drm_atomic_helper_legacy_gamma_set()
3763 struct drm_private_state *state) in __drm_atomic_helper_private_obj_duplicate_state() argument
3765 memcpy(state, obj->state, sizeof(*state)); in __drm_atomic_helper_private_obj_duplicate_state()