Blame freedreno/kgsl/kgsl_drm.h

Packit 631bab
#ifndef _KGSL_DRM_H_
Packit 631bab
#define _KGSL_DRM_H_
Packit 631bab
Packit 631bab
#include "drm.h"
Packit 631bab
Packit 631bab
#define DRM_KGSL_GEM_CREATE 0x00
Packit 631bab
#define DRM_KGSL_GEM_PREP   0x01
Packit 631bab
#define DRM_KGSL_GEM_SETMEMTYPE 0x02
Packit 631bab
#define DRM_KGSL_GEM_GETMEMTYPE 0x03
Packit 631bab
#define DRM_KGSL_GEM_MMAP 0x04
Packit 631bab
#define DRM_KGSL_GEM_ALLOC 0x05
Packit 631bab
#define DRM_KGSL_GEM_BIND_GPU 0x06
Packit 631bab
#define DRM_KGSL_GEM_UNBIND_GPU 0x07
Packit 631bab
Packit 631bab
#define DRM_KGSL_GEM_GET_BUFINFO 0x08
Packit 631bab
#define DRM_KGSL_GEM_SET_BUFCOUNT 0x09
Packit 631bab
#define DRM_KGSL_GEM_SET_ACTIVE 0x0A
Packit 631bab
#define DRM_KGSL_GEM_LOCK_HANDLE 0x0B
Packit 631bab
#define DRM_KGSL_GEM_UNLOCK_HANDLE 0x0C
Packit 631bab
#define DRM_KGSL_GEM_UNLOCK_ON_TS 0x0D
Packit 631bab
#define DRM_KGSL_GEM_CREATE_FD 0x0E
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_CREATE \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_CREATE, struct drm_kgsl_gem_create)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_PREP \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_PREP, struct drm_kgsl_gem_prep)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_SETMEMTYPE \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_SETMEMTYPE, \
Packit 631bab
struct drm_kgsl_gem_memtype)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_GETMEMTYPE \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_GETMEMTYPE, \
Packit 631bab
struct drm_kgsl_gem_memtype)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_MMAP \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_MMAP, struct drm_kgsl_gem_mmap)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_ALLOC \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_ALLOC, struct drm_kgsl_gem_alloc)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_BIND_GPU \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_BIND_GPU, struct drm_kgsl_gem_bind_gpu)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_UNBIND_GPU \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_UNBIND_GPU, \
Packit 631bab
struct drm_kgsl_gem_bind_gpu)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_GET_BUFINFO \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_GET_BUFINFO, \
Packit 631bab
	 struct drm_kgsl_gem_bufinfo)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_SET_BUFCOUNT \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_SET_BUFCOUNT, \
Packit 631bab
	 struct drm_kgsl_gem_bufcount)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_SET_ACTIVE \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_SET_ACTIVE, \
Packit 631bab
	 struct drm_kgsl_gem_active)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_LOCK_HANDLE \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_LOCK_HANDLE, \
Packit 631bab
struct drm_kgsl_gem_lock_handles)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_UNLOCK_HANDLE \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_UNLOCK_HANDLE, \
Packit 631bab
struct drm_kgsl_gem_unlock_handles)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_UNLOCK_ON_TS \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_UNLOCK_ON_TS, \
Packit 631bab
struct drm_kgsl_gem_unlock_on_ts)
Packit 631bab
Packit 631bab
#define DRM_IOCTL_KGSL_GEM_CREATE_FD \
Packit 631bab
DRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_CREATE_FD, \
Packit 631bab
struct drm_kgsl_gem_create_fd)
Packit 631bab
Packit 631bab
/* Maximum number of sub buffers per GEM object */
Packit 631bab
#define DRM_KGSL_GEM_MAX_BUFFERS 2
Packit 631bab
Packit 631bab
/* Memory types - these define the source and caching policies
Packit 631bab
   of the GEM memory chunk */
Packit 631bab
Packit 631bab
/* Legacy definitions left for compatibility */
Packit 631bab
Packit 631bab
#define DRM_KGSL_GEM_TYPE_EBI          0
Packit 631bab
#define DRM_KGSL_GEM_TYPE_SMI          1
Packit 631bab
#define DRM_KGSL_GEM_TYPE_KMEM         2
Packit 631bab
#define DRM_KGSL_GEM_TYPE_KMEM_NOCACHE 3
Packit 631bab
#define DRM_KGSL_GEM_TYPE_MEM_MASK     0xF
Packit 631bab
Packit 631bab
/* Contiguous memory (PMEM) */
Packit 631bab
#define DRM_KGSL_GEM_TYPE_PMEM       0x000100
Packit 631bab
Packit 631bab
/* PMEM memory types */
Packit 631bab
#define DRM_KGSL_GEM_PMEM_EBI        0x001000
Packit 631bab
#define DRM_KGSL_GEM_PMEM_SMI        0x002000
Packit 631bab
Packit 631bab
/* Standard paged memory */
Packit 631bab
#define DRM_KGSL_GEM_TYPE_MEM        0x010000
Packit 631bab
Packit 631bab
/* Caching controls */
Packit 631bab
#define DRM_KGSL_GEM_CACHE_NONE      0x000000
Packit 631bab
#define DRM_KGSL_GEM_CACHE_WCOMBINE  0x100000
Packit 631bab
#define DRM_KGSL_GEM_CACHE_WTHROUGH  0x200000
Packit 631bab
#define DRM_KGSL_GEM_CACHE_WBACK     0x400000
Packit 631bab
#define DRM_KGSL_GEM_CACHE_WBACKWA   0x800000
Packit 631bab
#define DRM_KGSL_GEM_CACHE_MASK      0xF00000
Packit 631bab
Packit 631bab
/* FD based objects */
Packit 631bab
#define DRM_KGSL_GEM_TYPE_FD_FBMEM   0x1000000
Packit 631bab
#define DRM_KGSL_GEM_TYPE_FD_MASK    0xF000000
Packit 631bab
Packit 631bab
/* Timestamp types */
Packit 631bab
#define DRM_KGSL_GEM_TS_3D         0x00000430
Packit 631bab
#define DRM_KGSL_GEM_TS_2D         0x00000180
Packit 631bab
Packit 631bab
Packit 631bab
struct drm_kgsl_gem_create {
Packit 631bab
	uint32_t size;
Packit 631bab
	uint32_t handle;
Packit 631bab
};
Packit 631bab
Packit 631bab
struct drm_kgsl_gem_prep {
Packit 631bab
	uint32_t handle;
Packit 631bab
	uint32_t phys;
Packit 631bab
	uint64_t offset;
Packit 631bab
};
Packit 631bab
Packit 631bab
struct drm_kgsl_gem_memtype {
Packit 631bab
	uint32_t handle;
Packit 631bab
	uint32_t type;
Packit 631bab
};
Packit 631bab
Packit 631bab
struct drm_kgsl_gem_mmap {
Packit 631bab
	uint32_t handle;
Packit 631bab
	uint32_t size;
Packit 631bab
	uint32_t hostptr;
Packit 631bab
	uint64_t offset;
Packit 631bab
};
Packit 631bab
Packit 631bab
struct drm_kgsl_gem_alloc {
Packit 631bab
	uint32_t handle;
Packit 631bab
	uint64_t offset;
Packit 631bab
};
Packit 631bab
Packit 631bab
struct drm_kgsl_gem_bind_gpu {
Packit 631bab
	uint32_t handle;
Packit 631bab
	uint32_t gpuptr;
Packit 631bab
};
Packit 631bab
Packit 631bab
struct drm_kgsl_gem_bufinfo {
Packit 631bab
	uint32_t handle;
Packit 631bab
	uint32_t count;
Packit 631bab
	uint32_t active;
Packit 631bab
	uint32_t offset[DRM_KGSL_GEM_MAX_BUFFERS];
Packit 631bab
	uint32_t gpuaddr[DRM_KGSL_GEM_MAX_BUFFERS];
Packit 631bab
};
Packit 631bab
Packit 631bab
struct drm_kgsl_gem_bufcount {
Packit 631bab
	uint32_t handle;
Packit 631bab
	uint32_t bufcount;
Packit 631bab
};
Packit 631bab
Packit 631bab
struct drm_kgsl_gem_active {
Packit 631bab
	uint32_t handle;
Packit 631bab
	uint32_t active;
Packit 631bab
};
Packit 631bab
Packit 631bab
struct drm_kgsl_gem_lock_handles {
Packit 631bab
	uint32_t num_handles;
Packit 631bab
	uint32_t *handle_list;
Packit 631bab
	uint32_t pid;
Packit 631bab
	uint32_t lock_id;	  /* Returned lock id used for unlocking */
Packit 631bab
};
Packit 631bab
Packit 631bab
struct drm_kgsl_gem_unlock_handles {
Packit 631bab
	uint32_t lock_id;
Packit 631bab
};
Packit 631bab
Packit 631bab
struct drm_kgsl_gem_unlock_on_ts {
Packit 631bab
	uint32_t lock_id;
Packit 631bab
	uint32_t timestamp;	 /* This field is a hw generated ts */
Packit 631bab
	uint32_t type;		 /* Which pipe to check for ts generation */
Packit 631bab
};
Packit 631bab
Packit 631bab
struct drm_kgsl_gem_create_fd {
Packit 631bab
	uint32_t fd;
Packit 631bab
	uint32_t handle;
Packit 631bab
};
Packit 631bab
Packit 631bab
#endif