Lines Matching refs:job
263 int drm_writeback_prepare_job(struct drm_writeback_job *job) in drm_writeback_prepare_job() argument
265 struct drm_writeback_connector *connector = job->connector; in drm_writeback_prepare_job()
271 ret = funcs->prepare_writeback_job(connector, job); in drm_writeback_prepare_job()
276 job->prepared = true; in drm_writeback_prepare_job()
303 struct drm_writeback_job *job; in drm_writeback_queue_job() local
306 job = conn_state->writeback_job; in drm_writeback_queue_job()
310 list_add_tail(&job->list_entry, &wb_connector->job_queue); in drm_writeback_queue_job()
315 void drm_writeback_cleanup_job(struct drm_writeback_job *job) in drm_writeback_cleanup_job() argument
317 struct drm_writeback_connector *connector = job->connector; in drm_writeback_cleanup_job()
321 if (job->prepared && funcs->cleanup_writeback_job) in drm_writeback_cleanup_job()
322 funcs->cleanup_writeback_job(connector, job); in drm_writeback_cleanup_job()
324 if (job->fb) in drm_writeback_cleanup_job()
325 drm_framebuffer_put(job->fb); in drm_writeback_cleanup_job()
327 if (job->out_fence) in drm_writeback_cleanup_job()
328 dma_fence_put(job->out_fence); in drm_writeback_cleanup_job()
330 kfree(job); in drm_writeback_cleanup_job()
343 struct drm_writeback_job *job = container_of(work, in cleanup_work() local
347 drm_writeback_cleanup_job(job); in cleanup_work()
371 struct drm_writeback_job *job; in drm_writeback_signal_completion() local
375 job = list_first_entry_or_null(&wb_connector->job_queue, in drm_writeback_signal_completion()
378 if (job) in drm_writeback_signal_completion()
379 list_del(&job->list_entry); in drm_writeback_signal_completion()
383 if (WARN_ON(!job)) in drm_writeback_signal_completion()
386 out_fence = job->out_fence; in drm_writeback_signal_completion()
392 job->out_fence = NULL; in drm_writeback_signal_completion()
395 INIT_WORK(&job->cleanup_work, cleanup_work); in drm_writeback_signal_completion()
396 queue_work(system_long_wq, &job->cleanup_work); in drm_writeback_signal_completion()