Commit | Line | Data |
---|---|---|
9026e0d1 MR |
1 | /* |
2 | * Copyright (C) 2015 Free Electrons | |
3 | * Copyright (C) 2015 NextThing Co | |
4 | * | |
5 | * Maxime Ripard <maxime.ripard@free-electrons.com> | |
6 | * | |
7 | * This program is free software; you can redistribute it and/or | |
8 | * modify it under the terms of the GNU General Public License as | |
9 | * published by the Free Software Foundation; either version 2 of | |
10 | * the License, or (at your option) any later version. | |
11 | */ | |
12 | ||
13 | #include <drm/drm_atomic_helper.h> | |
14 | #include <drm/drm_fb_cma_helper.h> | |
15 | #include <drm/drmP.h> | |
16 | ||
17 | #include "sun4i_drv.h" | |
18 | ||
19 | static void sun4i_de_output_poll_changed(struct drm_device *drm) | |
20 | { | |
21 | struct sun4i_drv *drv = drm->dev_private; | |
22 | ||
29d79ede | 23 | drm_fbdev_cma_hotplug_event(drv->fbdev); |
9026e0d1 MR |
24 | } |
25 | ||
26 | static const struct drm_mode_config_funcs sun4i_de_mode_config_funcs = { | |
27 | .output_poll_changed = sun4i_de_output_poll_changed, | |
28 | .atomic_check = drm_atomic_helper_check, | |
29 | .atomic_commit = drm_atomic_helper_commit, | |
30 | .fb_create = drm_fb_cma_create, | |
31 | }; | |
32 | ||
33 | struct drm_fbdev_cma *sun4i_framebuffer_init(struct drm_device *drm) | |
34 | { | |
35 | drm_mode_config_reset(drm); | |
36 | ||
37 | drm->mode_config.max_width = 8192; | |
38 | drm->mode_config.max_height = 8192; | |
39 | ||
40 | drm->mode_config.funcs = &sun4i_de_mode_config_funcs; | |
41 | ||
42 | return drm_fbdev_cma_init(drm, 32, | |
43 | drm->mode_config.num_crtc, | |
44 | drm->mode_config.num_connector); | |
45 | } | |
46 | ||
47 | void sun4i_framebuffer_free(struct drm_device *drm) | |
48 | { | |
49 | struct sun4i_drv *drv = drm->dev_private; | |
50 | ||
51 | drm_fbdev_cma_fini(drv->fbdev); | |
52 | drm_mode_config_cleanup(drm); | |
53 | } |