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 299ef8a9dcSDaniel Vetter struct drm_crtc; 309ef8a9dcSDaniel Vetter struct drm_crtc_state; 319ef8a9dcSDaniel Vetter struct drm_plane; 329ef8a9dcSDaniel Vetter struct drm_plane_state; 339ef8a9dcSDaniel Vetter struct drm_connector; 349ef8a9dcSDaniel Vetter struct drm_connector_state; 359ef8a9dcSDaniel Vetter struct drm_private_obj; 369ef8a9dcSDaniel Vetter struct drm_private_state; 379ef8a9dcSDaniel Vetter struct drm_modeset_acquire_ctx; 389ef8a9dcSDaniel Vetter struct drm_device; 399ef8a9dcSDaniel Vetter 409ef8a9dcSDaniel Vetter void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc); 419ef8a9dcSDaniel Vetter void __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc, 429ef8a9dcSDaniel Vetter struct drm_crtc_state *state); 439ef8a9dcSDaniel Vetter struct drm_crtc_state * 449ef8a9dcSDaniel Vetter drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc); 459ef8a9dcSDaniel Vetter void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc_state *state); 469ef8a9dcSDaniel Vetter void drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc, 479ef8a9dcSDaniel Vetter struct drm_crtc_state *state); 489ef8a9dcSDaniel Vetter 499ef8a9dcSDaniel Vetter void __drm_atomic_helper_plane_reset(struct drm_plane *plane, 509ef8a9dcSDaniel Vetter struct drm_plane_state *state); 519ef8a9dcSDaniel Vetter void drm_atomic_helper_plane_reset(struct drm_plane *plane); 529ef8a9dcSDaniel Vetter void __drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane, 539ef8a9dcSDaniel Vetter struct drm_plane_state *state); 549ef8a9dcSDaniel Vetter struct drm_plane_state * 559ef8a9dcSDaniel Vetter drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane); 569ef8a9dcSDaniel Vetter void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state); 579ef8a9dcSDaniel Vetter void drm_atomic_helper_plane_destroy_state(struct drm_plane *plane, 589ef8a9dcSDaniel Vetter struct drm_plane_state *state); 599ef8a9dcSDaniel Vetter 609ef8a9dcSDaniel Vetter void __drm_atomic_helper_connector_reset(struct drm_connector *connector, 619ef8a9dcSDaniel Vetter struct drm_connector_state *conn_state); 629ef8a9dcSDaniel Vetter void drm_atomic_helper_connector_reset(struct drm_connector *connector); 639ef8a9dcSDaniel Vetter void 649ef8a9dcSDaniel Vetter __drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector, 659ef8a9dcSDaniel Vetter struct drm_connector_state *state); 669ef8a9dcSDaniel Vetter struct drm_connector_state * 679ef8a9dcSDaniel Vetter drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector); 689ef8a9dcSDaniel Vetter struct drm_atomic_state * 699ef8a9dcSDaniel Vetter drm_atomic_helper_duplicate_state(struct drm_device *dev, 709ef8a9dcSDaniel Vetter struct drm_modeset_acquire_ctx *ctx); 719ef8a9dcSDaniel Vetter void 729ef8a9dcSDaniel Vetter __drm_atomic_helper_connector_destroy_state(struct drm_connector_state *state); 739ef8a9dcSDaniel Vetter void drm_atomic_helper_connector_destroy_state(struct drm_connector *connector, 749ef8a9dcSDaniel Vetter struct drm_connector_state *state); 759ef8a9dcSDaniel Vetter int drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc, 769ef8a9dcSDaniel Vetter u16 *red, u16 *green, u16 *blue, 779ef8a9dcSDaniel Vetter uint32_t size, 789ef8a9dcSDaniel Vetter struct drm_modeset_acquire_ctx *ctx); 799ef8a9dcSDaniel Vetter void __drm_atomic_helper_private_obj_duplicate_state(struct drm_private_obj *obj, 809ef8a9dcSDaniel Vetter struct drm_private_state *state); 81