Linux Audio
Check our new training course
Embedded Linux Audio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
/* SPDX-License-Identifier: GPL-2.0 */ /* Copyright 2019 Collabora ltd. */ #ifndef __PANFROST_JOB_H__ #define __PANFROST_JOB_H__ #include <uapi/drm/panfrost_drm.h> #include <drm/gpu_scheduler.h> struct panfrost_device; struct panfrost_gem_object; struct panfrost_file_priv; struct panfrost_job { struct drm_sched_job base; struct kref refcount; struct panfrost_device *pfdev; struct panfrost_mmu *mmu; /* Fence to be signaled by IRQ handler when the job is complete. */ struct dma_fence *done_fence; __u64 jc; __u32 requirements; __u32 flush_id; struct panfrost_gem_mapping **mappings; struct drm_gem_object **bos; u32 bo_count; /* Fence to be signaled by drm-sched once its done with the job */ struct dma_fence *render_done_fence; }; int panfrost_job_init(struct panfrost_device *pfdev); void panfrost_job_fini(struct panfrost_device *pfdev); int panfrost_job_open(struct panfrost_file_priv *panfrost_priv); void panfrost_job_close(struct panfrost_file_priv *panfrost_priv); int panfrost_job_get_slot(struct panfrost_job *job); int panfrost_job_push(struct panfrost_job *job); void panfrost_job_put(struct panfrost_job *job); void panfrost_job_enable_interrupts(struct panfrost_device *pfdev); int panfrost_job_is_idle(struct panfrost_device *pfdev); #endif