diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-06-02 09:41:53 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-06-02 09:42:52 -0400 |
commit | 8d76b79faaaefb1bd16a56dc66f799c9afd82c6f (patch) | |
tree | 39be737315d42730a12f664139d51ce011933c3e /drivers/gpu/drm/msm/msm_atomic.c | |
parent | 831655e52e52d2b13aae6988935cce63830b1b4f (diff) |
drm/msm: Use for_each_*_in_state
We want to hide drm_atomic_state internals
v2: Review from Maarten:
- remove whitespace change in rockchip driver that slipped in.
- use drm_crtc_mask insted of open-coding it.
Cc: Rob Clark <robdclark@gmail.com>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1464818821-5736-4-git-send-email-daniel.vetter@ffwll.ch
Diffstat (limited to 'drivers/gpu/drm/msm/msm_atomic.c')
-rw-r--r-- | drivers/gpu/drm/msm/msm_atomic.c | 37 |
1 files changed, 12 insertions, 25 deletions
diff --git a/drivers/gpu/drm/msm/msm_atomic.c b/drivers/gpu/drm/msm/msm_atomic.c index e3892c263f27..8c3b463620bd 100644 --- a/drivers/gpu/drm/msm/msm_atomic.c +++ b/drivers/gpu/drm/msm/msm_atomic.c | |||
@@ -84,17 +84,12 @@ static void msm_atomic_wait_for_commit_done(struct drm_device *dev, | |||
84 | struct drm_atomic_state *old_state) | 84 | struct drm_atomic_state *old_state) |
85 | { | 85 | { |
86 | struct drm_crtc *crtc; | 86 | struct drm_crtc *crtc; |
87 | struct drm_crtc_state *crtc_state; | ||
87 | struct msm_drm_private *priv = old_state->dev->dev_private; | 88 | struct msm_drm_private *priv = old_state->dev->dev_private; |
88 | struct msm_kms *kms = priv->kms; | 89 | struct msm_kms *kms = priv->kms; |
89 | int ncrtcs = old_state->dev->mode_config.num_crtc; | ||
90 | int i; | 90 | int i; |
91 | 91 | ||
92 | for (i = 0; i < ncrtcs; i++) { | 92 | for_each_crtc_in_state(old_state, crtc, crtc_state, i) { |
93 | crtc = old_state->crtcs[i]; | ||
94 | |||
95 | if (!crtc) | ||
96 | continue; | ||
97 | |||
98 | if (!crtc->state->enable) | 93 | if (!crtc->state->enable) |
99 | continue; | 94 | continue; |
100 | 95 | ||
@@ -192,9 +187,11 @@ int msm_atomic_commit(struct drm_device *dev, | |||
192 | struct drm_atomic_state *state, bool nonblock) | 187 | struct drm_atomic_state *state, bool nonblock) |
193 | { | 188 | { |
194 | struct msm_drm_private *priv = dev->dev_private; | 189 | struct msm_drm_private *priv = dev->dev_private; |
195 | int nplanes = dev->mode_config.num_total_plane; | ||
196 | int ncrtcs = dev->mode_config.num_crtc; | ||
197 | struct msm_commit *c; | 190 | struct msm_commit *c; |
191 | struct drm_crtc *crtc; | ||
192 | struct drm_crtc_state *crtc_state; | ||
193 | struct drm_plane *plane; | ||
194 | struct drm_plane_state *plane_state; | ||
198 | int i, ret; | 195 | int i, ret; |
199 | 196 | ||
200 | ret = drm_atomic_helper_prepare_planes(dev, state); | 197 | ret = drm_atomic_helper_prepare_planes(dev, state); |
@@ -210,28 +207,18 @@ int msm_atomic_commit(struct drm_device *dev, | |||
210 | /* | 207 | /* |
211 | * Figure out what crtcs we have: | 208 | * Figure out what crtcs we have: |
212 | */ | 209 | */ |
213 | for (i = 0; i < ncrtcs; i++) { | 210 | for_each_crtc_in_state(state, crtc, crtc_state, i) |
214 | struct drm_crtc *crtc = state->crtcs[i]; | 211 | c->crtc_mask |= drm_crtc_mask(crtc); |
215 | if (!crtc) | ||
216 | continue; | ||
217 | c->crtc_mask |= (1 << drm_crtc_index(crtc)); | ||
218 | } | ||
219 | 212 | ||
220 | /* | 213 | /* |
221 | * Figure out what fence to wait for: | 214 | * Figure out what fence to wait for: |
222 | */ | 215 | */ |
223 | for (i = 0; i < nplanes; i++) { | 216 | for_each_plane_in_state(state, plane, plane_state, i) { |
224 | struct drm_plane *plane = state->planes[i]; | 217 | if ((plane->state->fb != plane_state->fb) && plane_state->fb) { |
225 | struct drm_plane_state *new_state = state->plane_states[i]; | 218 | struct drm_gem_object *obj = msm_framebuffer_bo(plane_state->fb, 0); |
226 | |||
227 | if (!plane) | ||
228 | continue; | ||
229 | |||
230 | if ((plane->state->fb != new_state->fb) && new_state->fb) { | ||
231 | struct drm_gem_object *obj = msm_framebuffer_bo(new_state->fb, 0); | ||
232 | struct msm_gem_object *msm_obj = to_msm_bo(obj); | 219 | struct msm_gem_object *msm_obj = to_msm_bo(obj); |
233 | 220 | ||
234 | new_state->fence = reservation_object_get_excl_rcu(msm_obj->resv); | 221 | plane_state->fence = reservation_object_get_excl_rcu(msm_obj->resv); |
235 | } | 222 | } |
236 | } | 223 | } |
237 | 224 | ||