1/* 2 * This header was generated from the Linux kernel headers by update_headers.py, 3 * to provide necessary information from kernel to userspace, such as constants, 4 * structures, and macros, and thus, contains no copyrightable information. 5 */ 6#ifndef __NOUVEAU_DRM_H__ 7#define __NOUVEAU_DRM_H__ 8#define DRM_NOUVEAU_EVENT_NVIF 0x80000000 9#include "drm.h" 10#if defined(__cplusplus) 11extern "C" { 12#endif 13#define NOUVEAU_GEM_DOMAIN_CPU (1 << 0) 14#define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1) 15#define NOUVEAU_GEM_DOMAIN_GART (1 << 2) 16#define NOUVEAU_GEM_DOMAIN_MAPPABLE (1 << 3) 17#define NOUVEAU_GEM_DOMAIN_COHERENT (1 << 4) 18#define NOUVEAU_GEM_TILE_COMP 0x00030000 19#define NOUVEAU_GEM_TILE_LAYOUT_MASK 0x0000ff00 20#define NOUVEAU_GEM_TILE_16BPP 0x00000001 21#define NOUVEAU_GEM_TILE_32BPP 0x00000002 22#define NOUVEAU_GEM_TILE_ZETA 0x00000004 23#define NOUVEAU_GEM_TILE_NONCONTIG 0x00000008 24struct drm_nouveau_gem_info { 25 __u32 handle; 26 __u32 domain; 27 __u64 size; 28 __u64 offset; 29 __u64 map_handle; 30 __u32 tile_mode; 31 __u32 tile_flags; 32}; 33struct drm_nouveau_gem_new { 34 struct drm_nouveau_gem_info info; 35 __u32 channel_hint; 36 __u32 align; 37}; 38#define NOUVEAU_GEM_MAX_BUFFERS 1024 39struct drm_nouveau_gem_pushbuf_bo_presumed { 40 __u32 valid; 41 __u32 domain; 42 __u64 offset; 43}; 44struct drm_nouveau_gem_pushbuf_bo { 45 __u64 user_priv; 46 __u32 handle; 47 __u32 read_domains; 48 __u32 write_domains; 49 __u32 valid_domains; 50 struct drm_nouveau_gem_pushbuf_bo_presumed presumed; 51}; 52#define NOUVEAU_GEM_RELOC_LOW (1 << 0) 53#define NOUVEAU_GEM_RELOC_HIGH (1 << 1) 54#define NOUVEAU_GEM_RELOC_OR (1 << 2) 55#define NOUVEAU_GEM_MAX_RELOCS 1024 56struct drm_nouveau_gem_pushbuf_reloc { 57 __u32 reloc_bo_index; 58 __u32 reloc_bo_offset; 59 __u32 bo_index; 60 __u32 flags; 61 __u32 data; 62 __u32 vor; 63 __u32 tor; 64}; 65#define NOUVEAU_GEM_MAX_PUSH 512 66struct drm_nouveau_gem_pushbuf_push { 67 __u32 bo_index; 68 __u32 pad; 69 __u64 offset; 70 __u64 length; 71}; 72struct drm_nouveau_gem_pushbuf { 73 __u32 channel; 74 __u32 nr_buffers; 75 __u64 buffers; 76 __u32 nr_relocs; 77 __u32 nr_push; 78 __u64 relocs; 79 __u64 push; 80 __u32 suffix0; 81 __u32 suffix1; 82 __u64 vram_available; 83 __u64 gart_available; 84}; 85#define NOUVEAU_GEM_CPU_PREP_NOWAIT 0x00000001 86#define NOUVEAU_GEM_CPU_PREP_WRITE 0x00000004 87struct drm_nouveau_gem_cpu_prep { 88 __u32 handle; 89 __u32 flags; 90}; 91struct drm_nouveau_gem_cpu_fini { 92 __u32 handle; 93}; 94#define DRM_NOUVEAU_GETPARAM 0x00 95#define DRM_NOUVEAU_SETPARAM 0x01 96#define DRM_NOUVEAU_CHANNEL_ALLOC 0x02 97#define DRM_NOUVEAU_CHANNEL_FREE 0x03 98#define DRM_NOUVEAU_GROBJ_ALLOC 0x04 99#define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC 0x05 100#define DRM_NOUVEAU_GPUOBJ_FREE 0x06 101#define DRM_NOUVEAU_NVIF 0x07 102#define DRM_NOUVEAU_GEM_NEW 0x40 103#define DRM_NOUVEAU_GEM_PUSHBUF 0x41 104#define DRM_NOUVEAU_GEM_CPU_PREP 0x42 105#define DRM_NOUVEAU_GEM_CPU_FINI 0x43 106#define DRM_NOUVEAU_GEM_INFO 0x44 107#define DRM_IOCTL_NOUVEAU_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_NEW, struct drm_nouveau_gem_new) 108#define DRM_IOCTL_NOUVEAU_GEM_PUSHBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_PUSHBUF, struct drm_nouveau_gem_pushbuf) 109#define DRM_IOCTL_NOUVEAU_GEM_CPU_PREP DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_PREP, struct drm_nouveau_gem_cpu_prep) 110#define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini) 111#define DRM_IOCTL_NOUVEAU_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_INFO, struct drm_nouveau_gem_info) 112#if defined(__cplusplus) 113} 114#endif 115#endif 116