linux/drivers/gpu/drm/panfrost/panfrost_device.h

/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright 2018 Marty E. Plummer <[email protected]> */
/* Copyright 2019 Linaro, Ltd, Rob Herring <[email protected]> */

#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 - Supported kernel power management features
 * @GPU_PM_CLK_DIS:  Allow disabling clocks during system suspend
 * @GPU_PM_VREG_OFF: Allow turning off regulators during system suspend
 */
enum panfrost_gpu_pm {};

struct panfrost_features {};

/*
 * Features that cannot be automatically detected and need matching using the
 * compatible string, typically SoC-specific.
 */
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