Lines Matching refs:kms

21 static void vblank_get(struct msm_kms *kms, unsigned crtc_mask)  in vblank_get()  argument
25 for_each_crtc_mask(kms->dev, crtc, crtc_mask) { in vblank_get()
32 static void vblank_put(struct msm_kms *kms, unsigned crtc_mask) in vblank_put() argument
36 for_each_crtc_mask(kms->dev, crtc, crtc_mask) { in vblank_put()
43 static void lock_crtcs(struct msm_kms *kms, unsigned int crtc_mask) in lock_crtcs() argument
48 for_each_crtc_mask(kms->dev, crtc, crtc_mask) { in lock_crtcs()
50 mutex_lock_nested(&kms->commit_lock[crtc_index], crtc_index); in lock_crtcs()
54 static void unlock_crtcs(struct msm_kms *kms, unsigned int crtc_mask) in unlock_crtcs() argument
58 for_each_crtc_mask_reverse(kms->dev, crtc, crtc_mask) in unlock_crtcs()
59 mutex_unlock(&kms->commit_lock[drm_crtc_index(crtc)]); in unlock_crtcs()
62 static void msm_atomic_async_commit(struct msm_kms *kms, int crtc_idx) in msm_atomic_async_commit() argument
68 lock_crtcs(kms, crtc_mask); in msm_atomic_async_commit()
70 if (!(kms->pending_crtc_mask & crtc_mask)) { in msm_atomic_async_commit()
71 unlock_crtcs(kms, crtc_mask); in msm_atomic_async_commit()
75 kms->pending_crtc_mask &= ~crtc_mask; in msm_atomic_async_commit()
77 kms->funcs->enable_commit(kms); in msm_atomic_async_commit()
79 vblank_get(kms, crtc_mask); in msm_atomic_async_commit()
85 kms->funcs->flush_commit(kms, crtc_mask); in msm_atomic_async_commit()
91 kms->funcs->wait_flush(kms, crtc_mask); in msm_atomic_async_commit()
94 vblank_put(kms, crtc_mask); in msm_atomic_async_commit()
96 kms->funcs->complete_commit(kms, crtc_mask); in msm_atomic_async_commit()
97 unlock_crtcs(kms, crtc_mask); in msm_atomic_async_commit()
98 kms->funcs->disable_commit(kms); in msm_atomic_async_commit()
109 msm_atomic_async_commit(timer->kms, timer->crtc_idx); in msm_atomic_pending_work()
113 struct msm_kms *kms, int crtc_idx) in msm_atomic_init_pending_timer() argument
115 timer->kms = kms; in msm_atomic_init_pending_timer()
206 struct msm_kms *kms = priv->kms; in msm_atomic_commit_tail() local
213 kms->funcs->enable_commit(kms); in msm_atomic_commit_tail()
219 lock_crtcs(kms, crtc_mask); in msm_atomic_commit_tail()
221 kms->funcs->wait_flush(kms, crtc_mask); in msm_atomic_commit_tail()
228 if (kms->funcs->prepare_commit) in msm_atomic_commit_tail()
229 kms->funcs->prepare_commit(kms, state); in msm_atomic_commit_tail()
240 &kms->pending_timers[drm_crtc_index(async_crtc)]; in msm_atomic_commit_tail()
249 if (!(kms->pending_crtc_mask & crtc_mask)) { in msm_atomic_commit_tail()
252 kms->pending_crtc_mask |= crtc_mask; in msm_atomic_commit_tail()
263 kms->funcs->disable_commit(kms); in msm_atomic_commit_tail()
264 unlock_crtcs(kms, crtc_mask); in msm_atomic_commit_tail()
283 kms->pending_crtc_mask &= ~crtc_mask; in msm_atomic_commit_tail()
285 vblank_get(kms, crtc_mask); in msm_atomic_commit_tail()
291 kms->funcs->flush_commit(kms, crtc_mask); in msm_atomic_commit_tail()
292 unlock_crtcs(kms, crtc_mask); in msm_atomic_commit_tail()
297 kms->funcs->wait_flush(kms, crtc_mask); in msm_atomic_commit_tail()
300 vblank_put(kms, crtc_mask); in msm_atomic_commit_tail()
302 lock_crtcs(kms, crtc_mask); in msm_atomic_commit_tail()
303 kms->funcs->complete_commit(kms, crtc_mask); in msm_atomic_commit_tail()
304 unlock_crtcs(kms, crtc_mask); in msm_atomic_commit_tail()
305 kms->funcs->disable_commit(kms); in msm_atomic_commit_tail()