#include <linux/completion.h>
#include <linux/iopoll.h>
#include <linux/iosys-map.h>
#include <linux/pm_runtime.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <drm/drm_file.h>
#include <drm/drm_gem_shmem_helper.h>
#include <drm/panfrost_drm.h>
#include "panfrost_device.h"
#include "panfrost_features.h"
#include "panfrost_gem.h"
#include "panfrost_issues.h"
#include "panfrost_job.h"
#include "panfrost_mmu.h"
#include "panfrost_perfcnt.h"
#include "panfrost_regs.h"
#define COUNTERS_PER_BLOCK …
#define BYTES_PER_COUNTER …
#define BLOCKS_PER_COREGROUP …
#define V4_SHADERS_PER_COREGROUP …
struct panfrost_perfcnt { … };
void panfrost_perfcnt_clean_cache_done(struct panfrost_device *pfdev)
{ … }
void panfrost_perfcnt_sample_done(struct panfrost_device *pfdev)
{ … }
static int panfrost_perfcnt_dump_locked(struct panfrost_device *pfdev)
{ … }
static int panfrost_perfcnt_enable_locked(struct panfrost_device *pfdev,
struct drm_file *file_priv,
unsigned int counterset)
{ … }
static int panfrost_perfcnt_disable_locked(struct panfrost_device *pfdev,
struct drm_file *file_priv)
{ … }
int panfrost_ioctl_perfcnt_enable(struct drm_device *dev, void *data,
struct drm_file *file_priv)
{ … }
int panfrost_ioctl_perfcnt_dump(struct drm_device *dev, void *data,
struct drm_file *file_priv)
{ … }
void panfrost_perfcnt_close(struct drm_file *file_priv)
{ … }
int panfrost_perfcnt_init(struct panfrost_device *pfdev)
{ … }
void panfrost_perfcnt_fini(struct panfrost_device *pfdev)
{ … }