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 2975146591SBoris Brezillon struct drm_bridge; 3075146591SBoris Brezillon struct drm_bridge_state; 319ef8a9dcSDaniel Vetter struct drm_crtc; 329ef8a9dcSDaniel Vetter struct drm_crtc_state; 339ef8a9dcSDaniel Vetter struct drm_plane; 349ef8a9dcSDaniel Vetter struct drm_plane_state; 359ef8a9dcSDaniel Vetter struct drm_connector; 369ef8a9dcSDaniel Vetter struct drm_connector_state; 379ef8a9dcSDaniel Vetter struct drm_private_obj; 389ef8a9dcSDaniel Vetter struct drm_private_state; 399ef8a9dcSDaniel Vetter struct drm_modeset_acquire_ctx; 409ef8a9dcSDaniel Vetter struct drm_device; 419ef8a9dcSDaniel Vetter 42ab2dd990SVille Syrjälä void __drm_atomic_helper_crtc_state_reset(struct drm_crtc_state *state, 43ab2dd990SVille Syrjälä struct drm_crtc *crtc); 447d26097bSMaarten Lankhorst void __drm_atomic_helper_crtc_reset(struct drm_crtc *crtc, 457d26097bSMaarten Lankhorst struct drm_crtc_state *state); 469ef8a9dcSDaniel Vetter void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc); 479ef8a9dcSDaniel Vetter void __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc, 489ef8a9dcSDaniel Vetter struct drm_crtc_state *state); 499ef8a9dcSDaniel Vetter struct drm_crtc_state * 509ef8a9dcSDaniel Vetter drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc); 519ef8a9dcSDaniel Vetter void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc_state *state); 529ef8a9dcSDaniel Vetter void drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc, 539ef8a9dcSDaniel Vetter struct drm_crtc_state *state); 549ef8a9dcSDaniel Vetter 55ab2dd990SVille Syrjälä void __drm_atomic_helper_plane_state_reset(struct drm_plane_state *state, 56ab2dd990SVille Syrjälä struct drm_plane *plane); 579ef8a9dcSDaniel Vetter void __drm_atomic_helper_plane_reset(struct drm_plane *plane, 589ef8a9dcSDaniel Vetter struct drm_plane_state *state); 599ef8a9dcSDaniel Vetter void drm_atomic_helper_plane_reset(struct drm_plane *plane); 609ef8a9dcSDaniel Vetter void __drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane, 619ef8a9dcSDaniel Vetter struct drm_plane_state *state); 629ef8a9dcSDaniel Vetter struct drm_plane_state * 639ef8a9dcSDaniel Vetter drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane); 649ef8a9dcSDaniel Vetter void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state); 659ef8a9dcSDaniel Vetter void drm_atomic_helper_plane_destroy_state(struct drm_plane *plane, 669ef8a9dcSDaniel Vetter struct drm_plane_state *state); 679ef8a9dcSDaniel Vetter 68ab2dd990SVille Syrjälä void __drm_atomic_helper_connector_state_reset(struct drm_connector_state *conn_state, 69ab2dd990SVille Syrjälä struct drm_connector *connector); 709ef8a9dcSDaniel Vetter void __drm_atomic_helper_connector_reset(struct drm_connector *connector, 719ef8a9dcSDaniel Vetter struct drm_connector_state *conn_state); 729ef8a9dcSDaniel Vetter void drm_atomic_helper_connector_reset(struct drm_connector *connector); 73*00e77a69SMaxime Ripard void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector); 7405e70e32SMaxime Ripard void drm_atomic_helper_connector_tv_margins_reset(struct drm_connector *connector); 759ef8a9dcSDaniel Vetter void 769ef8a9dcSDaniel Vetter __drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector, 779ef8a9dcSDaniel Vetter struct drm_connector_state *state); 789ef8a9dcSDaniel Vetter struct drm_connector_state * 799ef8a9dcSDaniel Vetter drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector); 809ef8a9dcSDaniel Vetter void 819ef8a9dcSDaniel Vetter __drm_atomic_helper_connector_destroy_state(struct drm_connector_state *state); 829ef8a9dcSDaniel Vetter void drm_atomic_helper_connector_destroy_state(struct drm_connector *connector, 839ef8a9dcSDaniel Vetter struct drm_connector_state *state); 849ef8a9dcSDaniel Vetter void __drm_atomic_helper_private_obj_duplicate_state(struct drm_private_obj *obj, 859ef8a9dcSDaniel Vetter struct drm_private_state *state); 8675146591SBoris Brezillon 8775146591SBoris Brezillon void __drm_atomic_helper_bridge_duplicate_state(struct drm_bridge *bridge, 8875146591SBoris Brezillon struct drm_bridge_state *state); 8975146591SBoris Brezillon struct drm_bridge_state * 9075146591SBoris Brezillon drm_atomic_helper_bridge_duplicate_state(struct drm_bridge *bridge); 9175146591SBoris Brezillon void drm_atomic_helper_bridge_destroy_state(struct drm_bridge *bridge, 9275146591SBoris Brezillon struct drm_bridge_state *state); 9375146591SBoris Brezillon void __drm_atomic_helper_bridge_reset(struct drm_bridge *bridge, 9475146591SBoris Brezillon struct drm_bridge_state *state); 9575146591SBoris Brezillon struct drm_bridge_state * 9675146591SBoris Brezillon drm_atomic_helper_bridge_reset(struct drm_bridge *bridge); 97