#ifndef __PANTHOR_DEVICE_H__
#define __PANTHOR_DEVICE_H__
#include <linux/atomic.h>
#include <linux/io-pgtable.h>
#include <linux/regulator/consumer.h>
#include <linux/sched.h>
#include <linux/spinlock.h>
#include <drm/drm_device.h>
#include <drm/drm_mm.h>
#include <drm/gpu_scheduler.h>
#include <drm/panthor_drm.h>
struct panthor_csf;
struct panthor_csf_ctx;
struct panthor_device;
struct panthor_gpu;
struct panthor_group_pool;
struct panthor_heap_pool;
struct panthor_job;
struct panthor_mmu;
struct panthor_fw;
struct panthor_perfcnt;
struct panthor_vm;
struct panthor_vm_pool;
enum panthor_device_pm_state { … };
struct panthor_irq { … };
struct panthor_device { … };
struct panthor_file { … };
int panthor_device_init(struct panthor_device *ptdev);
void panthor_device_unplug(struct panthor_device *ptdev);
static inline void panthor_device_schedule_reset(struct panthor_device *ptdev)
{ … }
static inline bool panthor_device_reset_is_pending(struct panthor_device *ptdev)
{ … }
int panthor_device_mmap_io(struct panthor_device *ptdev,
struct vm_area_struct *vma);
int panthor_device_resume(struct device *dev);
int panthor_device_suspend(struct device *dev);
enum drm_panthor_exception_type { … };
static inline bool
panthor_exception_is_fault(u32 exception_code)
{ … }
const char *panthor_exception_name(struct panthor_device *ptdev,
u32 exception_code);
#define PANTHOR_IRQ_HANDLER(__name, __reg_prefix, __handler) …
extern struct workqueue_struct *panthor_cleanup_wq;
#endif