/* SPDX-License-Identifier: GPL-2.0 or MIT */ /* Copyright 2023 Collabora ltd. */ #ifndef __PANTHOR_SCHED_H__ #define __PANTHOR_SCHED_H__ struct drm_exec; struct dma_fence; struct drm_file; struct drm_gem_object; struct drm_sched_job; struct drm_panthor_group_create; struct drm_panthor_queue_create; struct drm_panthor_group_get_state; struct drm_panthor_queue_submit; struct panthor_device; struct panthor_file; struct panthor_group_pool; struct panthor_job; int panthor_group_create(struct panthor_file *pfile, const struct drm_panthor_group_create *group_args, const struct drm_panthor_queue_create *queue_args); int panthor_group_destroy(struct panthor_file *pfile, u32 group_handle); int panthor_group_get_state(struct panthor_file *pfile, struct drm_panthor_group_get_state *get_state); struct drm_sched_job * panthor_job_create(struct panthor_file *pfile, u16 group_handle, const struct drm_panthor_queue_submit *qsubmit); struct drm_sched_job *panthor_job_get(struct drm_sched_job *job); struct panthor_vm *panthor_job_vm(struct drm_sched_job *sched_job); void panthor_job_put(struct drm_sched_job *job); void panthor_job_update_resvs(struct drm_exec *exec, struct drm_sched_job *job); int panthor_group_pool_create(struct panthor_file *pfile); void panthor_group_pool_destroy(struct panthor_file *pfile); int panthor_sched_init(struct panthor_device *ptdev); void panthor_sched_unplug(struct panthor_device *ptdev); void panthor_sched_pre_reset(struct panthor_device *ptdev); void panthor_sched_post_reset(struct panthor_device *ptdev, bool reset_failed); void panthor_sched_suspend(struct panthor_device *ptdev); void panthor_sched_resume(struct panthor_device *ptdev); void panthor_sched_report_mmu_fault(struct panthor_device *ptdev); void panthor_sched_report_fw_events(struct panthor_device *ptdev, u32 events); #endif