diff options
Diffstat (limited to 'drivers/gpu/drm/sun4i/sun4i_framebuffer.c')
-rw-r--r-- | drivers/gpu/drm/sun4i/sun4i_framebuffer.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/drivers/gpu/drm/sun4i/sun4i_framebuffer.c b/drivers/gpu/drm/sun4i/sun4i_framebuffer.c index 38a36c0dfa2f..5f29850ef8ac 100644 --- a/drivers/gpu/drm/sun4i/sun4i_framebuffer.c +++ b/drivers/gpu/drm/sun4i/sun4i_framebuffer.c | |||
@@ -10,6 +10,7 @@ | |||
10 | * the License, or (at your option) any later version. | 10 | * the License, or (at your option) any later version. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <drm/drm_atomic.h> | ||
13 | #include <drm/drm_atomic_helper.h> | 14 | #include <drm/drm_atomic_helper.h> |
14 | #include <drm/drm_fb_helper.h> | 15 | #include <drm/drm_fb_helper.h> |
15 | #include <drm/drm_fb_cma_helper.h> | 16 | #include <drm/drm_fb_cma_helper.h> |
@@ -19,13 +20,33 @@ | |||
19 | #include "sun4i_drv.h" | 20 | #include "sun4i_drv.h" |
20 | #include "sun4i_framebuffer.h" | 21 | #include "sun4i_framebuffer.h" |
21 | 22 | ||
23 | static int sun4i_de_atomic_check(struct drm_device *dev, | ||
24 | struct drm_atomic_state *state) | ||
25 | { | ||
26 | int ret; | ||
27 | |||
28 | ret = drm_atomic_helper_check_modeset(dev, state); | ||
29 | if (ret) | ||
30 | return ret; | ||
31 | |||
32 | ret = drm_atomic_normalize_zpos(dev, state); | ||
33 | if (ret) | ||
34 | return ret; | ||
35 | |||
36 | return drm_atomic_helper_check_planes(dev, state); | ||
37 | } | ||
38 | |||
22 | static const struct drm_mode_config_funcs sun4i_de_mode_config_funcs = { | 39 | static const struct drm_mode_config_funcs sun4i_de_mode_config_funcs = { |
23 | .output_poll_changed = drm_fb_helper_output_poll_changed, | 40 | .output_poll_changed = drm_fb_helper_output_poll_changed, |
24 | .atomic_check = drm_atomic_helper_check, | 41 | .atomic_check = sun4i_de_atomic_check, |
25 | .atomic_commit = drm_atomic_helper_commit, | 42 | .atomic_commit = drm_atomic_helper_commit, |
26 | .fb_create = drm_gem_fb_create, | 43 | .fb_create = drm_gem_fb_create, |
27 | }; | 44 | }; |
28 | 45 | ||
46 | static struct drm_mode_config_helper_funcs sun4i_de_mode_config_helpers = { | ||
47 | .atomic_commit_tail = drm_atomic_helper_commit_tail_rpm, | ||
48 | }; | ||
49 | |||
29 | int sun4i_framebuffer_init(struct drm_device *drm) | 50 | int sun4i_framebuffer_init(struct drm_device *drm) |
30 | { | 51 | { |
31 | drm_mode_config_reset(drm); | 52 | drm_mode_config_reset(drm); |
@@ -34,6 +55,7 @@ int sun4i_framebuffer_init(struct drm_device *drm) | |||
34 | drm->mode_config.max_height = 8192; | 55 | drm->mode_config.max_height = 8192; |
35 | 56 | ||
36 | drm->mode_config.funcs = &sun4i_de_mode_config_funcs; | 57 | drm->mode_config.funcs = &sun4i_de_mode_config_funcs; |
58 | drm->mode_config.helper_private = &sun4i_de_mode_config_helpers; | ||
37 | 59 | ||
38 | return drm_fb_cma_fbdev_init(drm, 32, 0); | 60 | return drm_fb_cma_fbdev_init(drm, 32, 0); |
39 | } | 61 | } |