#ifndef __PANFROST_DEVICE_H__
#define __PANFROST_DEVICE_H__
#include <linux/atomic.h>
#include <linux/io-pgtable.h>
#include <linux/pm.h>
#include <linux/regulator/consumer.h>
#include <linux/spinlock.h>
#include <drm/drm_device.h>
#include <drm/drm_mm.h>
#include <drm/gpu_scheduler.h>
#include "panfrost_devfreq.h"
struct panfrost_device;
struct panfrost_mmu;
struct panfrost_job_slot;
struct panfrost_job;
struct panfrost_perfcnt;
#define NUM_JOB_SLOTS …
#define MAX_PM_DOMAINS …
enum panfrost_drv_comp_bits { … };
enum panfrost_gpu_pm { … };
struct panfrost_features { … };
struct panfrost_compatible { … };
struct panfrost_device { … };
struct panfrost_mmu { … };
struct panfrost_engine_usage { … };
struct panfrost_file_priv { … };
static inline struct panfrost_device *to_panfrost_device(struct drm_device *ddev)
{ … }
static inline int panfrost_model_cmp(struct panfrost_device *pfdev, s32 id)
{ … }
static inline bool panfrost_model_is_bifrost(struct panfrost_device *pfdev)
{ … }
static inline bool panfrost_model_eq(struct panfrost_device *pfdev, s32 id)
{ … }
int panfrost_unstable_ioctl_check(void);
int panfrost_device_init(struct panfrost_device *pfdev);
void panfrost_device_fini(struct panfrost_device *pfdev);
void panfrost_device_reset(struct panfrost_device *pfdev);
extern const struct dev_pm_ops panfrost_pm_ops;
enum drm_panfrost_exception_type { … };
static inline bool
panfrost_exception_is_fault(u32 exception_code)
{ … }
const char *panfrost_exception_name(u32 exception_code);
bool panfrost_exception_needs_reset(const struct panfrost_device *pfdev,
u32 exception_code);
static inline void
panfrost_device_schedule_reset(struct panfrost_device *pfdev)
{ … }
#endif