]>
Commit | Line | Data |
---|---|---|
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 | ||
17 | static 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 | ||
23 | int 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 | |
52 | err: | |
53 | drm_mode_config_cleanup(fsl_dev->drm); | |
7566e247 | 54 | return ret; |
109eee2f | 55 | } |