Lines Matching full:work

46 	struct amdgpu_flip_work *work =  in amdgpu_display_flip_callback()  local
50 schedule_work(&work->flip_work.work); in amdgpu_display_flip_callback()
53 static bool amdgpu_display_flip_handle_fence(struct amdgpu_flip_work *work, in amdgpu_display_flip_handle_fence() argument
63 if (!dma_fence_add_callback(fence, &work->cb, in amdgpu_display_flip_handle_fence()
74 container_of(__work, struct delayed_work, work); in amdgpu_display_flip_work_func()
75 struct amdgpu_flip_work *work = in amdgpu_display_flip_work_func() local
77 struct amdgpu_device *adev = work->adev; in amdgpu_display_flip_work_func()
78 struct amdgpu_crtc *amdgpu_crtc = adev->mode_info.crtcs[work->crtc_id]; in amdgpu_display_flip_work_func()
85 if (amdgpu_display_flip_handle_fence(work, &work->excl)) in amdgpu_display_flip_work_func()
88 for (i = 0; i < work->shared_count; ++i) in amdgpu_display_flip_work_func()
89 if (amdgpu_display_flip_handle_fence(work, &work->shared[i])) in amdgpu_display_flip_work_func()
96 (amdgpu_display_get_crtc_scanoutpos(adev_to_drm(adev), work->crtc_id, 0, in amdgpu_display_flip_work_func()
101 (int)(work->target_vblank - in amdgpu_display_flip_work_func()
103 schedule_delayed_work(&work->flip_work, usecs_to_jiffies(1000)); in amdgpu_display_flip_work_func()
111 adev->mode_info.funcs->page_flip(adev, work->crtc_id, work->base, work->async); in amdgpu_display_flip_work_func()
118 DRM_DEBUG_DRIVER("crtc:%d[%p], pflip_stat:AMDGPU_FLIP_SUBMITTED, work: %p,\n", in amdgpu_display_flip_work_func()
119 amdgpu_crtc->crtc_id, amdgpu_crtc, work); in amdgpu_display_flip_work_func()
128 struct amdgpu_flip_work *work = in amdgpu_display_unpin_work_func() local
133 r = amdgpu_bo_reserve(work->old_abo, true); in amdgpu_display_unpin_work_func()
135 r = amdgpu_bo_unpin(work->old_abo); in amdgpu_display_unpin_work_func()
139 amdgpu_bo_unreserve(work->old_abo); in amdgpu_display_unpin_work_func()
143 amdgpu_bo_unref(&work->old_abo); in amdgpu_display_unpin_work_func()
144 kfree(work->shared); in amdgpu_display_unpin_work_func()
145 kfree(work); in amdgpu_display_unpin_work_func()
158 struct amdgpu_flip_work *work; in amdgpu_display_crtc_page_flip_target() local
164 work = kzalloc(sizeof *work, GFP_KERNEL); in amdgpu_display_crtc_page_flip_target()
165 if (work == NULL) in amdgpu_display_crtc_page_flip_target()
168 INIT_DELAYED_WORK(&work->flip_work, amdgpu_display_flip_work_func); in amdgpu_display_crtc_page_flip_target()
169 INIT_WORK(&work->unpin_work, amdgpu_display_unpin_work_func); in amdgpu_display_crtc_page_flip_target()
171 work->event = event; in amdgpu_display_crtc_page_flip_target()
172 work->adev = adev; in amdgpu_display_crtc_page_flip_target()
173 work->crtc_id = amdgpu_crtc->crtc_id; in amdgpu_display_crtc_page_flip_target()
174 work->async = (page_flip_flags & DRM_MODE_PAGE_FLIP_ASYNC) != 0; in amdgpu_display_crtc_page_flip_target()
180 work->old_abo = gem_to_amdgpu_bo(obj); in amdgpu_display_crtc_page_flip_target()
181 amdgpu_bo_ref(work->old_abo); in amdgpu_display_crtc_page_flip_target()
208 r = dma_resv_get_fences_rcu(new_abo->tbo.base.resv, &work->excl, in amdgpu_display_crtc_page_flip_target()
209 &work->shared_count, in amdgpu_display_crtc_page_flip_target()
210 &work->shared); in amdgpu_display_crtc_page_flip_target()
220 work->base = amdgpu_bo_gpu_offset(new_abo); in amdgpu_display_crtc_page_flip_target()
221 work->target_vblank = target - (uint32_t)drm_crtc_vblank_count(crtc) + in amdgpu_display_crtc_page_flip_target()
234 amdgpu_crtc->pflip_works = work; in amdgpu_display_crtc_page_flip_target()
237 DRM_DEBUG_DRIVER("crtc:%d[%p], pflip_stat:AMDGPU_FLIP_PENDING, work: %p,\n", in amdgpu_display_crtc_page_flip_target()
238 amdgpu_crtc->crtc_id, amdgpu_crtc, work); in amdgpu_display_crtc_page_flip_target()
242 amdgpu_display_flip_work_func(&work->flip_work.work); in amdgpu_display_crtc_page_flip_target()
259 amdgpu_bo_unref(&work->old_abo); in amdgpu_display_crtc_page_flip_target()
260 dma_fence_put(work->excl); in amdgpu_display_crtc_page_flip_target()
261 for (i = 0; i < work->shared_count; ++i) in amdgpu_display_crtc_page_flip_target()
262 dma_fence_put(work->shared[i]); in amdgpu_display_crtc_page_flip_target()
263 kfree(work->shared); in amdgpu_display_crtc_page_flip_target()
264 kfree(work); in amdgpu_display_crtc_page_flip_target()