diff options
author | Gustavo Padovan <gustavo.padovan@collabora.co.uk> | 2014-11-25 08:21:17 -0500 |
---|---|---|
committer | Inki Dae <daeinki@gmail.com> | 2015-01-25 07:28:05 -0500 |
commit | 0e0a649faa27333efea9cce14bff9bab75230f25 (patch) | |
tree | 6f04a5942b31e2a149284ab4d11432cdb2b7ecba /drivers/gpu | |
parent | 9d5310c024691cadb2dcab1a74b5ab067255f1be (diff) |
drm/exynos: unify plane update on exynos_update_plane()
We can safely use the exynos_update_plane() to update the plane
framebuffer for both the overlay and primary planes.
Note that this patch removes a call to manager->ops->commit() in
exynos_drm_crtc_mode_set_commit(). The commit() call is used only by the
fimd driver to set underlying timings and need only in full modeset
operations. For plane update only win_commit is needed.
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_crtc.c | 17 | ||||
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_plane.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_plane.h | 5 |
3 files changed, 8 insertions, 16 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c index a43e25d57a02..4c8bd4d1e861 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c | |||
@@ -117,12 +117,9 @@ static int exynos_drm_crtc_mode_set_commit(struct drm_crtc *crtc, int x, int y, | |||
117 | struct drm_framebuffer *old_fb) | 117 | struct drm_framebuffer *old_fb) |
118 | { | 118 | { |
119 | struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); | 119 | struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); |
120 | struct exynos_drm_manager *manager = exynos_crtc->manager; | ||
121 | struct exynos_drm_plane *exynos_plane = to_exynos_plane(crtc->primary); | ||
122 | struct drm_framebuffer *fb = crtc->primary->fb; | 120 | struct drm_framebuffer *fb = crtc->primary->fb; |
123 | unsigned int crtc_w; | 121 | unsigned int crtc_w; |
124 | unsigned int crtc_h; | 122 | unsigned int crtc_h; |
125 | int ret; | ||
126 | 123 | ||
127 | /* when framebuffer changing is requested, crtc's dpms should be on */ | 124 | /* when framebuffer changing is requested, crtc's dpms should be on */ |
128 | if (exynos_crtc->dpms > DRM_MODE_DPMS_ON) { | 125 | if (exynos_crtc->dpms > DRM_MODE_DPMS_ON) { |
@@ -133,18 +130,8 @@ static int exynos_drm_crtc_mode_set_commit(struct drm_crtc *crtc, int x, int y, | |||
133 | crtc_w = fb->width - x; | 130 | crtc_w = fb->width - x; |
134 | crtc_h = fb->height - y; | 131 | crtc_h = fb->height - y; |
135 | 132 | ||
136 | ret = exynos_plane_mode_set(crtc->primary, crtc, fb, 0, 0, | 133 | return exynos_update_plane(crtc->primary, crtc, fb, 0, 0, |
137 | crtc_w, crtc_h, x, y, crtc_w, crtc_h); | 134 | crtc_w, crtc_h, x, y, crtc_w, crtc_h); |
138 | if (ret) | ||
139 | return ret; | ||
140 | |||
141 | if (manager->ops->win_commit) | ||
142 | manager->ops->win_commit(manager, exynos_plane->zpos); | ||
143 | |||
144 | if (manager->ops->commit) | ||
145 | manager->ops->commit(manager); | ||
146 | |||
147 | return 0; | ||
148 | } | 135 | } |
149 | 136 | ||
150 | static int exynos_drm_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y, | 137 | static int exynos_drm_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y, |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_plane.c b/drivers/gpu/drm/exynos/exynos_drm_plane.c index aa9cc9a0a033..dadd30631c18 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_plane.c +++ b/drivers/gpu/drm/exynos/exynos_drm_plane.c | |||
@@ -165,7 +165,7 @@ void exynos_plane_dpms(struct drm_plane *plane, int mode) | |||
165 | } | 165 | } |
166 | } | 166 | } |
167 | 167 | ||
168 | static int | 168 | int |
169 | exynos_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, | 169 | exynos_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, |
170 | struct drm_framebuffer *fb, int crtc_x, int crtc_y, | 170 | struct drm_framebuffer *fb, int crtc_x, int crtc_y, |
171 | unsigned int crtc_w, unsigned int crtc_h, | 171 | unsigned int crtc_w, unsigned int crtc_h, |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_plane.h b/drivers/gpu/drm/exynos/exynos_drm_plane.h index 3c239891926e..d25c079a3f44 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_plane.h +++ b/drivers/gpu/drm/exynos/exynos_drm_plane.h | |||
@@ -14,6 +14,11 @@ int exynos_plane_mode_set(struct drm_plane *plane, struct drm_crtc *crtc, | |||
14 | unsigned int crtc_w, unsigned int crtc_h, | 14 | unsigned int crtc_w, unsigned int crtc_h, |
15 | uint32_t src_x, uint32_t src_y, | 15 | uint32_t src_x, uint32_t src_y, |
16 | uint32_t src_w, uint32_t src_h); | 16 | uint32_t src_w, uint32_t src_h); |
17 | int exynos_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, | ||
18 | struct drm_framebuffer *fb, int crtc_x, int crtc_y, | ||
19 | unsigned int crtc_w, unsigned int crtc_h, | ||
20 | uint32_t src_x, uint32_t src_y, | ||
21 | uint32_t src_w, uint32_t src_h); | ||
17 | void exynos_plane_dpms(struct drm_plane *plane, int mode); | 22 | void exynos_plane_dpms(struct drm_plane *plane, int mode); |
18 | struct drm_plane *exynos_plane_init(struct drm_device *dev, | 23 | struct drm_plane *exynos_plane_init(struct drm_device *dev, |
19 | unsigned long possible_crtcs, | 24 | unsigned long possible_crtcs, |