Lines Matching full:job

306 int drm_writeback_prepare_job(struct drm_writeback_job *job)  in drm_writeback_prepare_job()  argument
308 struct drm_writeback_connector *connector = job->connector; in drm_writeback_prepare_job()
314 ret = funcs->prepare_writeback_job(connector, job); in drm_writeback_prepare_job()
319 job->prepared = true; in drm_writeback_prepare_job()
325 * drm_writeback_queue_job - Queue a writeback job for later signalling
326 * @wb_connector: The writeback connector to queue a job on
327 * @conn_state: The connector state containing the job to queue
329 * This function adds the job contained in @conn_state to the job_queue for a
330 * writeback connector. It takes ownership of the writeback job and sets the
331 * @conn_state->writeback_job to NULL, and so no access to the job may be
346 struct drm_writeback_job *job; in drm_writeback_queue_job() local
349 job = conn_state->writeback_job; in drm_writeback_queue_job()
353 list_add_tail(&job->list_entry, &wb_connector->job_queue); in drm_writeback_queue_job()
358 void drm_writeback_cleanup_job(struct drm_writeback_job *job) in drm_writeback_cleanup_job() argument
360 struct drm_writeback_connector *connector = job->connector; in drm_writeback_cleanup_job()
364 if (job->prepared && funcs->cleanup_writeback_job) in drm_writeback_cleanup_job()
365 funcs->cleanup_writeback_job(connector, job); in drm_writeback_cleanup_job()
367 if (job->fb) in drm_writeback_cleanup_job()
368 drm_framebuffer_put(job->fb); in drm_writeback_cleanup_job()
370 if (job->out_fence) in drm_writeback_cleanup_job()
371 dma_fence_put(job->out_fence); in drm_writeback_cleanup_job()
373 kfree(job); in drm_writeback_cleanup_job()
378 * @cleanup_work: deferred cleanup of a writeback job
380 * The job cannot be cleaned up directly in drm_writeback_signal_completion,
386 struct drm_writeback_job *job = container_of(work, in cleanup_work() local
390 drm_writeback_cleanup_job(job); in cleanup_work()
394 * drm_writeback_signal_completion - Signal the completion of a writeback job
395 * @wb_connector: The writeback connector whose job is complete
399 * writeback job. It should be called as soon as possible after the hardware
414 struct drm_writeback_job *job; in drm_writeback_signal_completion() local
418 job = list_first_entry_or_null(&wb_connector->job_queue, in drm_writeback_signal_completion()
421 if (job) in drm_writeback_signal_completion()
422 list_del(&job->list_entry); in drm_writeback_signal_completion()
426 if (WARN_ON(!job)) in drm_writeback_signal_completion()
429 out_fence = job->out_fence; in drm_writeback_signal_completion()
435 job->out_fence = NULL; in drm_writeback_signal_completion()
438 INIT_WORK(&job->cleanup_work, cleanup_work); in drm_writeback_signal_completion()
439 queue_work(system_long_wq, &job->cleanup_work); in drm_writeback_signal_completion()