Lines Matching refs:work
44 struct amdgpu_flip_work *work = in amdgpu_display_flip_callback() local
48 schedule_work(&work->flip_work.work); in amdgpu_display_flip_callback()
51 static bool amdgpu_display_flip_handle_fence(struct amdgpu_flip_work *work, in amdgpu_display_flip_handle_fence() argument
61 if (!dma_fence_add_callback(fence, &work->cb, in amdgpu_display_flip_handle_fence()
72 container_of(__work, struct delayed_work, work); in amdgpu_display_flip_work_func()
73 struct amdgpu_flip_work *work = in amdgpu_display_flip_work_func() local
75 struct amdgpu_device *adev = work->adev; in amdgpu_display_flip_work_func()
76 struct amdgpu_crtc *amdgpu_crtc = adev->mode_info.crtcs[work->crtc_id]; in amdgpu_display_flip_work_func()
83 if (amdgpu_display_flip_handle_fence(work, &work->excl)) in amdgpu_display_flip_work_func()
86 for (i = 0; i < work->shared_count; ++i) in amdgpu_display_flip_work_func()
87 if (amdgpu_display_flip_handle_fence(work, &work->shared[i])) in amdgpu_display_flip_work_func()
94 (amdgpu_display_get_crtc_scanoutpos(adev->ddev, work->crtc_id, 0, in amdgpu_display_flip_work_func()
99 (int)(work->target_vblank - in amdgpu_display_flip_work_func()
101 schedule_delayed_work(&work->flip_work, usecs_to_jiffies(1000)); in amdgpu_display_flip_work_func()
109 adev->mode_info.funcs->page_flip(adev, work->crtc_id, work->base, work->async); in amdgpu_display_flip_work_func()
117 amdgpu_crtc->crtc_id, amdgpu_crtc, work); in amdgpu_display_flip_work_func()
126 struct amdgpu_flip_work *work = in amdgpu_display_unpin_work_func() local
131 r = amdgpu_bo_reserve(work->old_abo, true); in amdgpu_display_unpin_work_func()
133 r = amdgpu_bo_unpin(work->old_abo); in amdgpu_display_unpin_work_func()
137 amdgpu_bo_unreserve(work->old_abo); in amdgpu_display_unpin_work_func()
141 amdgpu_bo_unref(&work->old_abo); in amdgpu_display_unpin_work_func()
142 kfree(work->shared); in amdgpu_display_unpin_work_func()
143 kfree(work); in amdgpu_display_unpin_work_func()
156 struct amdgpu_flip_work *work; in amdgpu_display_crtc_page_flip_target() local
162 work = kzalloc(sizeof *work, GFP_KERNEL); in amdgpu_display_crtc_page_flip_target()
163 if (work == NULL) in amdgpu_display_crtc_page_flip_target()
166 INIT_DELAYED_WORK(&work->flip_work, amdgpu_display_flip_work_func); in amdgpu_display_crtc_page_flip_target()
167 INIT_WORK(&work->unpin_work, amdgpu_display_unpin_work_func); in amdgpu_display_crtc_page_flip_target()
169 work->event = event; in amdgpu_display_crtc_page_flip_target()
170 work->adev = adev; in amdgpu_display_crtc_page_flip_target()
171 work->crtc_id = amdgpu_crtc->crtc_id; in amdgpu_display_crtc_page_flip_target()
172 work->async = (page_flip_flags & DRM_MODE_PAGE_FLIP_ASYNC) != 0; in amdgpu_display_crtc_page_flip_target()
178 work->old_abo = gem_to_amdgpu_bo(obj); in amdgpu_display_crtc_page_flip_target()
179 amdgpu_bo_ref(work->old_abo); in amdgpu_display_crtc_page_flip_target()
203 r = reservation_object_get_fences_rcu(new_abo->tbo.resv, &work->excl, in amdgpu_display_crtc_page_flip_target()
204 &work->shared_count, in amdgpu_display_crtc_page_flip_target()
205 &work->shared); in amdgpu_display_crtc_page_flip_target()
214 work->base = amdgpu_bo_gpu_offset(new_abo); in amdgpu_display_crtc_page_flip_target()
215 work->target_vblank = target - (uint32_t)drm_crtc_vblank_count(crtc) + in amdgpu_display_crtc_page_flip_target()
216 amdgpu_get_vblank_counter_kms(dev, work->crtc_id); in amdgpu_display_crtc_page_flip_target()
228 amdgpu_crtc->pflip_works = work; in amdgpu_display_crtc_page_flip_target()
232 amdgpu_crtc->crtc_id, amdgpu_crtc, work); in amdgpu_display_crtc_page_flip_target()
236 amdgpu_display_flip_work_func(&work->flip_work.work); in amdgpu_display_crtc_page_flip_target()
252 amdgpu_bo_unref(&work->old_abo); in amdgpu_display_crtc_page_flip_target()
253 dma_fence_put(work->excl); in amdgpu_display_crtc_page_flip_target()
254 for (i = 0; i < work->shared_count; ++i) in amdgpu_display_crtc_page_flip_target()
255 dma_fence_put(work->shared[i]); in amdgpu_display_crtc_page_flip_target()
256 kfree(work->shared); in amdgpu_display_crtc_page_flip_target()
257 kfree(work); in amdgpu_display_crtc_page_flip_target()