kgsl_drm.h revision e88f27b3
1e88f27b3Smrg#ifndef _KGSL_DRM_H_ 2e88f27b3Smrg#define _KGSL_DRM_H_ 3e88f27b3Smrg 4e88f27b3Smrg#include "drm.h" 5e88f27b3Smrg 6e88f27b3Smrg#define DRM_KGSL_GEM_CREATE 0x00 7e88f27b3Smrg#define DRM_KGSL_GEM_PREP 0x01 8e88f27b3Smrg#define DRM_KGSL_GEM_SETMEMTYPE 0x02 9e88f27b3Smrg#define DRM_KGSL_GEM_GETMEMTYPE 0x03 10e88f27b3Smrg#define DRM_KGSL_GEM_MMAP 0x04 11e88f27b3Smrg#define DRM_KGSL_GEM_ALLOC 0x05 12e88f27b3Smrg#define DRM_KGSL_GEM_BIND_GPU 0x06 13e88f27b3Smrg#define DRM_KGSL_GEM_UNBIND_GPU 0x07 14e88f27b3Smrg 15e88f27b3Smrg#define DRM_KGSL_GEM_GET_BUFINFO 0x08 16e88f27b3Smrg#define DRM_KGSL_GEM_SET_BUFCOUNT 0x09 17e88f27b3Smrg#define DRM_KGSL_GEM_SET_ACTIVE 0x0A 18e88f27b3Smrg#define DRM_KGSL_GEM_LOCK_HANDLE 0x0B 19e88f27b3Smrg#define DRM_KGSL_GEM_UNLOCK_HANDLE 0x0C 20e88f27b3Smrg#define DRM_KGSL_GEM_UNLOCK_ON_TS 0x0D 21e88f27b3Smrg#define DRM_KGSL_GEM_CREATE_FD 0x0E 22e88f27b3Smrg 23e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_CREATE \ 24e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_CREATE, struct drm_kgsl_gem_create) 25e88f27b3Smrg 26e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_PREP \ 27e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_PREP, struct drm_kgsl_gem_prep) 28e88f27b3Smrg 29e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_SETMEMTYPE \ 30e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_SETMEMTYPE, \ 31e88f27b3Smrgstruct drm_kgsl_gem_memtype) 32e88f27b3Smrg 33e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_GETMEMTYPE \ 34e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_GETMEMTYPE, \ 35e88f27b3Smrgstruct drm_kgsl_gem_memtype) 36e88f27b3Smrg 37e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_MMAP \ 38e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_MMAP, struct drm_kgsl_gem_mmap) 39e88f27b3Smrg 40e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_ALLOC \ 41e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_ALLOC, struct drm_kgsl_gem_alloc) 42e88f27b3Smrg 43e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_BIND_GPU \ 44e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_BIND_GPU, struct drm_kgsl_gem_bind_gpu) 45e88f27b3Smrg 46e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_UNBIND_GPU \ 47e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_UNBIND_GPU, \ 48e88f27b3Smrgstruct drm_kgsl_gem_bind_gpu) 49e88f27b3Smrg 50e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_GET_BUFINFO \ 51e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_GET_BUFINFO, \ 52e88f27b3Smrg struct drm_kgsl_gem_bufinfo) 53e88f27b3Smrg 54e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_SET_BUFCOUNT \ 55e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_SET_BUFCOUNT, \ 56e88f27b3Smrg struct drm_kgsl_gem_bufcount) 57e88f27b3Smrg 58e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_SET_ACTIVE \ 59e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_SET_ACTIVE, \ 60e88f27b3Smrg struct drm_kgsl_gem_active) 61e88f27b3Smrg 62e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_LOCK_HANDLE \ 63e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_LOCK_HANDLE, \ 64e88f27b3Smrgstruct drm_kgsl_gem_lock_handles) 65e88f27b3Smrg 66e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_UNLOCK_HANDLE \ 67e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_UNLOCK_HANDLE, \ 68e88f27b3Smrgstruct drm_kgsl_gem_unlock_handles) 69e88f27b3Smrg 70e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_UNLOCK_ON_TS \ 71e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_UNLOCK_ON_TS, \ 72e88f27b3Smrgstruct drm_kgsl_gem_unlock_on_ts) 73e88f27b3Smrg 74e88f27b3Smrg#define DRM_IOCTL_KGSL_GEM_CREATE_FD \ 75e88f27b3SmrgDRM_IOWR(DRM_COMMAND_BASE + DRM_KGSL_GEM_CREATE_FD, \ 76e88f27b3Smrgstruct drm_kgsl_gem_create_fd) 77e88f27b3Smrg 78e88f27b3Smrg/* Maximum number of sub buffers per GEM object */ 79e88f27b3Smrg#define DRM_KGSL_GEM_MAX_BUFFERS 2 80e88f27b3Smrg 81e88f27b3Smrg/* Memory types - these define the source and caching policies 82e88f27b3Smrg of the GEM memory chunk */ 83e88f27b3Smrg 84e88f27b3Smrg/* Legacy definitions left for compatability */ 85e88f27b3Smrg 86e88f27b3Smrg#define DRM_KGSL_GEM_TYPE_EBI 0 87e88f27b3Smrg#define DRM_KGSL_GEM_TYPE_SMI 1 88e88f27b3Smrg#define DRM_KGSL_GEM_TYPE_KMEM 2 89e88f27b3Smrg#define DRM_KGSL_GEM_TYPE_KMEM_NOCACHE 3 90e88f27b3Smrg#define DRM_KGSL_GEM_TYPE_MEM_MASK 0xF 91e88f27b3Smrg 92e88f27b3Smrg/* Contiguous memory (PMEM) */ 93e88f27b3Smrg#define DRM_KGSL_GEM_TYPE_PMEM 0x000100 94e88f27b3Smrg 95e88f27b3Smrg/* PMEM memory types */ 96e88f27b3Smrg#define DRM_KGSL_GEM_PMEM_EBI 0x001000 97e88f27b3Smrg#define DRM_KGSL_GEM_PMEM_SMI 0x002000 98e88f27b3Smrg 99e88f27b3Smrg/* Standard paged memory */ 100e88f27b3Smrg#define DRM_KGSL_GEM_TYPE_MEM 0x010000 101e88f27b3Smrg 102e88f27b3Smrg/* Caching controls */ 103e88f27b3Smrg#define DRM_KGSL_GEM_CACHE_NONE 0x000000 104e88f27b3Smrg#define DRM_KGSL_GEM_CACHE_WCOMBINE 0x100000 105e88f27b3Smrg#define DRM_KGSL_GEM_CACHE_WTHROUGH 0x200000 106e88f27b3Smrg#define DRM_KGSL_GEM_CACHE_WBACK 0x400000 107e88f27b3Smrg#define DRM_KGSL_GEM_CACHE_WBACKWA 0x800000 108e88f27b3Smrg#define DRM_KGSL_GEM_CACHE_MASK 0xF00000 109e88f27b3Smrg 110e88f27b3Smrg/* FD based objects */ 111e88f27b3Smrg#define DRM_KGSL_GEM_TYPE_FD_FBMEM 0x1000000 112e88f27b3Smrg#define DRM_KGSL_GEM_TYPE_FD_MASK 0xF000000 113e88f27b3Smrg 114e88f27b3Smrg/* Timestamp types */ 115e88f27b3Smrg#define DRM_KGSL_GEM_TS_3D 0x00000430 116e88f27b3Smrg#define DRM_KGSL_GEM_TS_2D 0x00000180 117e88f27b3Smrg 118e88f27b3Smrg 119e88f27b3Smrgstruct drm_kgsl_gem_create { 120e88f27b3Smrg uint32_t size; 121e88f27b3Smrg uint32_t handle; 122e88f27b3Smrg}; 123e88f27b3Smrg 124e88f27b3Smrgstruct drm_kgsl_gem_prep { 125e88f27b3Smrg uint32_t handle; 126e88f27b3Smrg uint32_t phys; 127e88f27b3Smrg uint64_t offset; 128e88f27b3Smrg}; 129e88f27b3Smrg 130e88f27b3Smrgstruct drm_kgsl_gem_memtype { 131e88f27b3Smrg uint32_t handle; 132e88f27b3Smrg uint32_t type; 133e88f27b3Smrg}; 134e88f27b3Smrg 135e88f27b3Smrgstruct drm_kgsl_gem_mmap { 136e88f27b3Smrg uint32_t handle; 137e88f27b3Smrg uint32_t size; 138e88f27b3Smrg uint32_t hostptr; 139e88f27b3Smrg uint64_t offset; 140e88f27b3Smrg}; 141e88f27b3Smrg 142e88f27b3Smrgstruct drm_kgsl_gem_alloc { 143e88f27b3Smrg uint32_t handle; 144e88f27b3Smrg uint64_t offset; 145e88f27b3Smrg}; 146e88f27b3Smrg 147e88f27b3Smrgstruct drm_kgsl_gem_bind_gpu { 148e88f27b3Smrg uint32_t handle; 149e88f27b3Smrg uint32_t gpuptr; 150e88f27b3Smrg}; 151e88f27b3Smrg 152e88f27b3Smrgstruct drm_kgsl_gem_bufinfo { 153e88f27b3Smrg uint32_t handle; 154e88f27b3Smrg uint32_t count; 155e88f27b3Smrg uint32_t active; 156e88f27b3Smrg uint32_t offset[DRM_KGSL_GEM_MAX_BUFFERS]; 157e88f27b3Smrg uint32_t gpuaddr[DRM_KGSL_GEM_MAX_BUFFERS]; 158e88f27b3Smrg}; 159e88f27b3Smrg 160e88f27b3Smrgstruct drm_kgsl_gem_bufcount { 161e88f27b3Smrg uint32_t handle; 162e88f27b3Smrg uint32_t bufcount; 163e88f27b3Smrg}; 164e88f27b3Smrg 165e88f27b3Smrgstruct drm_kgsl_gem_active { 166e88f27b3Smrg uint32_t handle; 167e88f27b3Smrg uint32_t active; 168e88f27b3Smrg}; 169e88f27b3Smrg 170e88f27b3Smrgstruct drm_kgsl_gem_lock_handles { 171e88f27b3Smrg uint32_t num_handles; 172e88f27b3Smrg uint32_t *handle_list; 173e88f27b3Smrg uint32_t pid; 174e88f27b3Smrg uint32_t lock_id; /* Returned lock id used for unlocking */ 175e88f27b3Smrg}; 176e88f27b3Smrg 177e88f27b3Smrgstruct drm_kgsl_gem_unlock_handles { 178e88f27b3Smrg uint32_t lock_id; 179e88f27b3Smrg}; 180e88f27b3Smrg 181e88f27b3Smrgstruct drm_kgsl_gem_unlock_on_ts { 182e88f27b3Smrg uint32_t lock_id; 183e88f27b3Smrg uint32_t timestamp; /* This field is a hw generated ts */ 184e88f27b3Smrg uint32_t type; /* Which pipe to check for ts generation */ 185e88f27b3Smrg}; 186e88f27b3Smrg 187e88f27b3Smrgstruct drm_kgsl_gem_create_fd { 188e88f27b3Smrg uint32_t fd; 189e88f27b3Smrg uint32_t handle; 190e88f27b3Smrg}; 191e88f27b3Smrg 192e88f27b3Smrg#endif 193