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