]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/blame - drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_kms.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
[mirror_ubuntu-eoan-kernel.git] / drivers / gpu / drm / fsl-dcu / fsl_dcu_drm_kms.c
CommitLineData
2874c5fd 1// SPDX-License-Identifier: GPL-2.0-or-later
109eee2f
JW
2/*
3 * Copyright 2015 Freescale Semiconductor, Inc.
4 *
5 * Freescale DCU drm device driver
109eee2f
JW
6 */
7
8#include <drm/drmP.h>
9#include <drm/drm_atomic_helper.h>
109eee2f 10#include <drm/drm_fb_cma_helper.h>
ba22bf67 11#include <drm/drm_gem_framebuffer_helper.h>
fcd70cd3 12#include <drm/drm_probe_helper.h>
109eee2f
JW
13
14#include "fsl_dcu_drm_crtc.h"
15#include "fsl_dcu_drm_drv.h"
16
17static const struct drm_mode_config_funcs fsl_dcu_drm_mode_config_funcs = {
18 .atomic_check = drm_atomic_helper_check,
19 .atomic_commit = drm_atomic_helper_commit,
ba22bf67 20 .fb_create = drm_gem_fb_create,
109eee2f
JW
21};
22
23int fsl_dcu_drm_modeset_init(struct fsl_dcu_drm_device *fsl_dev)
24{
7566e247
SA
25 int ret;
26
109eee2f
JW
27 drm_mode_config_init(fsl_dev->drm);
28
29 fsl_dev->drm->mode_config.min_width = 0;
30 fsl_dev->drm->mode_config.min_height = 0;
31 fsl_dev->drm->mode_config.max_width = 2031;
32 fsl_dev->drm->mode_config.max_height = 2047;
33 fsl_dev->drm->mode_config.funcs = &fsl_dcu_drm_mode_config_funcs;
34
7566e247
SA
35 ret = fsl_dcu_drm_crtc_create(fsl_dev);
36 if (ret)
b7868c68 37 goto err;
7566e247
SA
38
39 ret = fsl_dcu_drm_encoder_create(fsl_dev, &fsl_dev->crtc);
40 if (ret)
b7868c68 41 goto err;
7566e247 42
924591b1 43 ret = fsl_dcu_create_outputs(fsl_dev);
7566e247 44 if (ret)
b7868c68 45 goto err;
7566e247 46
109eee2f 47 drm_mode_config_reset(fsl_dev->drm);
7566e247 48 drm_kms_helper_poll_init(fsl_dev->drm);
109eee2f
JW
49
50 return 0;
b7868c68
SA
51
52err:
53 drm_mode_config_cleanup(fsl_dev->drm);
7566e247 54 return ret;
109eee2f 55}