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()
187 struct msm_kms *kms = priv->kms; in msm_atomic_check() local
205 if (kms && kms->funcs && kms->funcs->check_mode_changed) in msm_atomic_check()
206 ret = kms->funcs->check_mode_changed(kms, state); in msm_atomic_check()
217 struct msm_kms *kms = priv->kms; in msm_atomic_commit_tail() local
224 kms->funcs->enable_commit(kms); in msm_atomic_commit_tail()
230 lock_crtcs(kms, crtc_mask); in msm_atomic_commit_tail()
232 kms->funcs->wait_flush(kms, crtc_mask); in msm_atomic_commit_tail()
235 atomic_set(&kms->fault_snapshot_capture, 0); in msm_atomic_commit_tail()
241 if (kms->funcs->prepare_commit) in msm_atomic_commit_tail()
242 kms->funcs->prepare_commit(kms, state); in msm_atomic_commit_tail()
253 &kms->pending_timers[drm_crtc_index(async_crtc)]; in msm_atomic_commit_tail()
262 if (!(kms->pending_crtc_mask & crtc_mask)) { in msm_atomic_commit_tail()
265 kms->pending_crtc_mask |= crtc_mask; in msm_atomic_commit_tail()
276 kms->funcs->disable_commit(kms); in msm_atomic_commit_tail()
277 unlock_crtcs(kms, crtc_mask); in msm_atomic_commit_tail()
296 kms->pending_crtc_mask &= ~crtc_mask; in msm_atomic_commit_tail()
298 vblank_get(kms, crtc_mask); in msm_atomic_commit_tail()
304 kms->funcs->flush_commit(kms, crtc_mask); in msm_atomic_commit_tail()
305 unlock_crtcs(kms, crtc_mask); in msm_atomic_commit_tail()
310 kms->funcs->wait_flush(kms, crtc_mask); in msm_atomic_commit_tail()
313 vblank_put(kms, crtc_mask); in msm_atomic_commit_tail()
315 lock_crtcs(kms, crtc_mask); in msm_atomic_commit_tail()
316 kms->funcs->complete_commit(kms, crtc_mask); in msm_atomic_commit_tail()
317 unlock_crtcs(kms, crtc_mask); in msm_atomic_commit_tail()
318 kms->funcs->disable_commit(kms); in msm_atomic_commit_tail()