19ef8a9dcSDaniel Vetter /*
29ef8a9dcSDaniel Vetter  * Copyright (C) 2018 Intel Corp.
39ef8a9dcSDaniel Vetter  *
49ef8a9dcSDaniel Vetter  * Permission is hereby granted, free of charge, to any person obtaining a
59ef8a9dcSDaniel Vetter  * copy of this software and associated documentation files (the "Software"),
69ef8a9dcSDaniel Vetter  * to deal in the Software without restriction, including without limitation
79ef8a9dcSDaniel Vetter  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
89ef8a9dcSDaniel Vetter  * and/or sell copies of the Software, and to permit persons to whom the
99ef8a9dcSDaniel Vetter  * Software is furnished to do so, subject to the following conditions:
109ef8a9dcSDaniel Vetter  *
119ef8a9dcSDaniel Vetter  * The above copyright notice and this permission notice shall be included in
129ef8a9dcSDaniel Vetter  * all copies or substantial portions of the Software.
139ef8a9dcSDaniel Vetter  *
149ef8a9dcSDaniel Vetter  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
159ef8a9dcSDaniel Vetter  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
169ef8a9dcSDaniel Vetter  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
179ef8a9dcSDaniel Vetter  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
189ef8a9dcSDaniel Vetter  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
199ef8a9dcSDaniel Vetter  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
209ef8a9dcSDaniel Vetter  * OTHER DEALINGS IN THE SOFTWARE.
219ef8a9dcSDaniel Vetter  *
229ef8a9dcSDaniel Vetter  * Authors:
239ef8a9dcSDaniel Vetter  * Rob Clark <robdclark@gmail.com>
249ef8a9dcSDaniel Vetter  * Daniel Vetter <daniel.vetter@ffwll.ch>
259ef8a9dcSDaniel Vetter  */
269ef8a9dcSDaniel Vetter 
279ef8a9dcSDaniel Vetter #include <linux/types.h>
289ef8a9dcSDaniel Vetter 
29*5a28cefdSMaxime Ripard struct drm_atomic_state;
3075146591SBoris Brezillon struct drm_bridge;
3175146591SBoris Brezillon struct drm_bridge_state;
329ef8a9dcSDaniel Vetter struct drm_crtc;
339ef8a9dcSDaniel Vetter struct drm_crtc_state;
349ef8a9dcSDaniel Vetter struct drm_plane;
359ef8a9dcSDaniel Vetter struct drm_plane_state;
369ef8a9dcSDaniel Vetter struct drm_connector;
379ef8a9dcSDaniel Vetter struct drm_connector_state;
389ef8a9dcSDaniel Vetter struct drm_private_obj;
399ef8a9dcSDaniel Vetter struct drm_private_state;
409ef8a9dcSDaniel Vetter struct drm_modeset_acquire_ctx;
419ef8a9dcSDaniel Vetter struct drm_device;
429ef8a9dcSDaniel Vetter 
43ab2dd990SVille Syrjälä void __drm_atomic_helper_crtc_state_reset(struct drm_crtc_state *state,
44ab2dd990SVille Syrjälä 					  struct drm_crtc *crtc);
457d26097bSMaarten Lankhorst void __drm_atomic_helper_crtc_reset(struct drm_crtc *crtc,
467d26097bSMaarten Lankhorst 				    struct drm_crtc_state *state);
479ef8a9dcSDaniel Vetter void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc);
489ef8a9dcSDaniel Vetter void __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc,
499ef8a9dcSDaniel Vetter 					      struct drm_crtc_state *state);
509ef8a9dcSDaniel Vetter struct drm_crtc_state *
519ef8a9dcSDaniel Vetter drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc);
529ef8a9dcSDaniel Vetter void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc_state *state);
539ef8a9dcSDaniel Vetter void drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc,
549ef8a9dcSDaniel Vetter 					  struct drm_crtc_state *state);
559ef8a9dcSDaniel Vetter 
56ab2dd990SVille Syrjälä void __drm_atomic_helper_plane_state_reset(struct drm_plane_state *state,
57ab2dd990SVille Syrjälä 					   struct drm_plane *plane);
589ef8a9dcSDaniel Vetter void __drm_atomic_helper_plane_reset(struct drm_plane *plane,
599ef8a9dcSDaniel Vetter 				     struct drm_plane_state *state);
609ef8a9dcSDaniel Vetter void drm_atomic_helper_plane_reset(struct drm_plane *plane);
619ef8a9dcSDaniel Vetter void __drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane,
629ef8a9dcSDaniel Vetter 					       struct drm_plane_state *state);
639ef8a9dcSDaniel Vetter struct drm_plane_state *
649ef8a9dcSDaniel Vetter drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane);
659ef8a9dcSDaniel Vetter void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state);
669ef8a9dcSDaniel Vetter void drm_atomic_helper_plane_destroy_state(struct drm_plane *plane,
679ef8a9dcSDaniel Vetter 					  struct drm_plane_state *state);
689ef8a9dcSDaniel Vetter 
69ab2dd990SVille Syrjälä void __drm_atomic_helper_connector_state_reset(struct drm_connector_state *conn_state,
70ab2dd990SVille Syrjälä 					       struct drm_connector *connector);
719ef8a9dcSDaniel Vetter void __drm_atomic_helper_connector_reset(struct drm_connector *connector,
729ef8a9dcSDaniel Vetter 					 struct drm_connector_state *conn_state);
739ef8a9dcSDaniel Vetter void drm_atomic_helper_connector_reset(struct drm_connector *connector);
7400e77a69SMaxime Ripard void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector);
75*5a28cefdSMaxime Ripard int drm_atomic_helper_connector_tv_check(struct drm_connector *connector,
76*5a28cefdSMaxime Ripard 					 struct drm_atomic_state *state);
7705e70e32SMaxime Ripard void drm_atomic_helper_connector_tv_margins_reset(struct drm_connector *connector);
789ef8a9dcSDaniel Vetter void
799ef8a9dcSDaniel Vetter __drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector,
809ef8a9dcSDaniel Vetter 					   struct drm_connector_state *state);
819ef8a9dcSDaniel Vetter struct drm_connector_state *
829ef8a9dcSDaniel Vetter drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector);
839ef8a9dcSDaniel Vetter void
849ef8a9dcSDaniel Vetter __drm_atomic_helper_connector_destroy_state(struct drm_connector_state *state);
859ef8a9dcSDaniel Vetter void drm_atomic_helper_connector_destroy_state(struct drm_connector *connector,
869ef8a9dcSDaniel Vetter 					  struct drm_connector_state *state);
879ef8a9dcSDaniel Vetter void __drm_atomic_helper_private_obj_duplicate_state(struct drm_private_obj *obj,
889ef8a9dcSDaniel Vetter 						     struct drm_private_state *state);
8975146591SBoris Brezillon 
9075146591SBoris Brezillon void __drm_atomic_helper_bridge_duplicate_state(struct drm_bridge *bridge,
9175146591SBoris Brezillon 						struct drm_bridge_state *state);
9275146591SBoris Brezillon struct drm_bridge_state *
9375146591SBoris Brezillon drm_atomic_helper_bridge_duplicate_state(struct drm_bridge *bridge);
9475146591SBoris Brezillon void drm_atomic_helper_bridge_destroy_state(struct drm_bridge *bridge,
9575146591SBoris Brezillon 					    struct drm_bridge_state *state);
9675146591SBoris Brezillon void __drm_atomic_helper_bridge_reset(struct drm_bridge *bridge,
9775146591SBoris Brezillon 				      struct drm_bridge_state *state);
9875146591SBoris Brezillon struct drm_bridge_state *
9975146591SBoris Brezillon drm_atomic_helper_bridge_reset(struct drm_bridge *bridge);
100