1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-or-later 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (C) 2015 Free Electrons 4*4882a593Smuzhiyun * Copyright (C) 2015 NextThing Co 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Maxime Ripard <maxime.ripard@free-electrons.com> 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #include <drm/drm_atomic.h> 10*4882a593Smuzhiyun #include <drm/drm_atomic_helper.h> 11*4882a593Smuzhiyun #include <drm/drm_gem_framebuffer_helper.h> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include "sun4i_drv.h" 14*4882a593Smuzhiyun #include "sun4i_framebuffer.h" 15*4882a593Smuzhiyun sun4i_de_atomic_check(struct drm_device * dev,struct drm_atomic_state * state)16*4882a593Smuzhiyunstatic int sun4i_de_atomic_check(struct drm_device *dev, 17*4882a593Smuzhiyun struct drm_atomic_state *state) 18*4882a593Smuzhiyun { 19*4882a593Smuzhiyun int ret; 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun ret = drm_atomic_helper_check_modeset(dev, state); 22*4882a593Smuzhiyun if (ret) 23*4882a593Smuzhiyun return ret; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun ret = drm_atomic_normalize_zpos(dev, state); 26*4882a593Smuzhiyun if (ret) 27*4882a593Smuzhiyun return ret; 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun return drm_atomic_helper_check_planes(dev, state); 30*4882a593Smuzhiyun } 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun static const struct drm_mode_config_funcs sun4i_de_mode_config_funcs = { 33*4882a593Smuzhiyun .atomic_check = sun4i_de_atomic_check, 34*4882a593Smuzhiyun .atomic_commit = drm_atomic_helper_commit, 35*4882a593Smuzhiyun .fb_create = drm_gem_fb_create, 36*4882a593Smuzhiyun }; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun static const struct drm_mode_config_helper_funcs sun4i_de_mode_config_helpers = { 39*4882a593Smuzhiyun .atomic_commit_tail = drm_atomic_helper_commit_tail_rpm, 40*4882a593Smuzhiyun }; 41*4882a593Smuzhiyun sun4i_framebuffer_init(struct drm_device * drm)42*4882a593Smuzhiyunvoid sun4i_framebuffer_init(struct drm_device *drm) 43*4882a593Smuzhiyun { 44*4882a593Smuzhiyun drm_mode_config_reset(drm); 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun drm->mode_config.max_width = 8192; 47*4882a593Smuzhiyun drm->mode_config.max_height = 8192; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun drm->mode_config.funcs = &sun4i_de_mode_config_funcs; 50*4882a593Smuzhiyun drm->mode_config.helper_private = &sun4i_de_mode_config_helpers; 51*4882a593Smuzhiyun } 52