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