diff options
author | Daniel Kurtz <djkurtz@chromium.org> | 2016-08-03 22:59:55 -0400 |
---|---|---|
committer | Sean Paul <seanpaul@chromium.org> | 2016-08-08 14:20:01 -0400 |
commit | f176cbf6f9407d363e72ba9bc2f7cd40853b4388 (patch) | |
tree | 47890a495f8b98de707eefa6f61243af3bf7bcf1 | |
parent | 903daff60fc5629d39ceb5f870afecdc477bcd6c (diff) |
drm/mediatek: plane: Merge mtk_plane_enable into mtk_plane_atomic_update
The mtk_plane_enable is just called once by mtk_plane_atomic_update.
So, merge mtk_plane_enable into mtk_plane_atomic_update.
While we are here, also clean up the function a bit by using an fb local
variables.
Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1470279597-60453-6-git-send-email-bibby.hsieh@mediatek.com
-rw-r--r-- | drivers/gpu/drm/mediatek/mtk_drm_plane.c | 65 |
1 files changed, 23 insertions, 42 deletions
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_plane.c b/drivers/gpu/drm/mediatek/mtk_drm_plane.c index 17172ba40959..b3ddb20b2e58 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_plane.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_plane.c | |||
@@ -30,44 +30,6 @@ static const u32 formats[] = { | |||
30 | DRM_FORMAT_RGB565, | 30 | DRM_FORMAT_RGB565, |
31 | }; | 31 | }; |
32 | 32 | ||
33 | static void mtk_plane_enable(struct drm_plane *plane, | ||
34 | dma_addr_t addr) | ||
35 | { | ||
36 | struct mtk_plane_state *state = to_mtk_plane_state(plane->state); | ||
37 | unsigned int pitch, format; | ||
38 | bool enable; | ||
39 | |||
40 | if (WARN_ON(!plane->state)) | ||
41 | return; | ||
42 | |||
43 | enable = state->base.visible; | ||
44 | |||
45 | if (WARN_ON(enable && !plane->state->fb)) | ||
46 | return; | ||
47 | |||
48 | if (plane->state->fb) { | ||
49 | pitch = plane->state->fb->pitches[0]; | ||
50 | format = plane->state->fb->pixel_format; | ||
51 | } else { | ||
52 | pitch = 0; | ||
53 | format = DRM_FORMAT_RGBA8888; | ||
54 | } | ||
55 | |||
56 | addr += (state->base.src.x1 >> 16) * 4; | ||
57 | addr += (state->base.src.y1 >> 16) * pitch; | ||
58 | |||
59 | state->pending.enable = enable; | ||
60 | state->pending.pitch = pitch; | ||
61 | state->pending.format = format; | ||
62 | state->pending.addr = addr; | ||
63 | state->pending.x = state->base.dst.x1; | ||
64 | state->pending.y = state->base.dst.y1; | ||
65 | state->pending.width = drm_rect_width(&state->base.dst); | ||
66 | state->pending.height = drm_rect_height(&state->base.dst); | ||
67 | wmb(); /* Make sure the above parameters are set before update */ | ||
68 | state->pending.dirty = true; | ||
69 | } | ||
70 | |||
71 | static void mtk_plane_reset(struct drm_plane *plane) | 33 | static void mtk_plane_reset(struct drm_plane *plane) |
72 | { | 34 | { |
73 | struct mtk_plane_state *state; | 35 | struct mtk_plane_state *state; |
@@ -157,16 +119,35 @@ static void mtk_plane_atomic_update(struct drm_plane *plane, | |||
157 | struct drm_plane_state *old_state) | 119 | struct drm_plane_state *old_state) |
158 | { | 120 | { |
159 | struct mtk_plane_state *state = to_mtk_plane_state(plane->state); | 121 | struct mtk_plane_state *state = to_mtk_plane_state(plane->state); |
160 | struct drm_crtc *crtc = state->base.crtc; | 122 | struct drm_crtc *crtc = plane->state->crtc; |
123 | struct drm_framebuffer *fb = plane->state->fb; | ||
161 | struct drm_gem_object *gem; | 124 | struct drm_gem_object *gem; |
162 | struct mtk_drm_gem_obj *mtk_gem; | 125 | struct mtk_drm_gem_obj *mtk_gem; |
126 | unsigned int pitch, format; | ||
127 | dma_addr_t addr; | ||
163 | 128 | ||
164 | if (!crtc) | 129 | if (!crtc || WARN_ON(!fb)) |
165 | return; | 130 | return; |
166 | 131 | ||
167 | gem = mtk_fb_get_gem_obj(state->base.fb); | 132 | gem = mtk_fb_get_gem_obj(fb); |
168 | mtk_gem = to_mtk_gem_obj(gem); | 133 | mtk_gem = to_mtk_gem_obj(gem); |
169 | mtk_plane_enable(plane, mtk_gem->dma_addr); | 134 | addr = mtk_gem->dma_addr; |
135 | pitch = fb->pitches[0]; | ||
136 | format = fb->pixel_format; | ||
137 | |||
138 | addr += (plane->state->src.x1 >> 16) * 4; | ||
139 | addr += (plane->state->src.y1 >> 16) * pitch; | ||
140 | |||
141 | state->pending.enable = true; | ||
142 | state->pending.pitch = pitch; | ||
143 | state->pending.format = format; | ||
144 | state->pending.addr = addr; | ||
145 | state->pending.x = plane->state->dst.x1; | ||
146 | state->pending.y = plane->state->dst.y1; | ||
147 | state->pending.width = drm_rect_width(&plane->state->dst); | ||
148 | state->pending.height = drm_rect_height(&plane->state->dst); | ||
149 | wmb(); /* Make sure the above parameters are set before update */ | ||
150 | state->pending.dirty = true; | ||
170 | } | 151 | } |
171 | 152 | ||
172 | static void mtk_plane_atomic_disable(struct drm_plane *plane, | 153 | static void mtk_plane_atomic_disable(struct drm_plane *plane, |