/* * @cleanup_work: deferred cleanup of a writeback job * * The job cannot be cleaned up directly in drm_writeback_signal_completion, * because it may be called in interrupt context. Dropping the framebuffer * reference can sleep, and so the cleanup is deferred to a workqueue. */ static void cleanup_work(struct work_struct *work) { struct drm_writeback_job *job = container_of(work, struct drm_writeback_job, cleanup_work); drm_writeback_cleanup_job(job); }
/** * __drm_atomic_helper_connector_destroy_state - release connector state * @state: connector state object to release * * Releases all resources stored in the connector state without actually * freeing the memory of the connector state. This is useful for drivers that * subclass the connector state. */ void __drm_atomic_helper_connector_destroy_state(struct drm_connector_state *state) { if (state->crtc) drm_connector_put(state->connector); if (state->commit) drm_crtc_commit_put(state->commit); if (state->writeback_job) drm_writeback_cleanup_job(state->writeback_job); }