1 /*
2  * This file is auto-generated. Modifications will be lost.
3  *
4  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5  * for more information.
6  */
7 #ifndef __NOUVEAU_DRM_H__
8 #define __NOUVEAU_DRM_H__
9 #define DRM_NOUVEAU_EVENT_NVIF 0x80000000
10 #include "drm.h"
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 #define NOUVEAU_GETPARAM_PCI_VENDOR 3
15 #define NOUVEAU_GETPARAM_PCI_DEVICE 4
16 #define NOUVEAU_GETPARAM_BUS_TYPE 5
17 #define NOUVEAU_GETPARAM_FB_SIZE 8
18 #define NOUVEAU_GETPARAM_AGP_SIZE 9
19 #define NOUVEAU_GETPARAM_CHIPSET_ID 11
20 #define NOUVEAU_GETPARAM_VM_VRAM_BASE 12
21 #define NOUVEAU_GETPARAM_GRAPH_UNITS 13
22 #define NOUVEAU_GETPARAM_PTIMER_TIME 14
23 #define NOUVEAU_GETPARAM_HAS_BO_USAGE 15
24 #define NOUVEAU_GETPARAM_HAS_PAGEFLIP 16
25 #define NOUVEAU_GETPARAM_EXEC_PUSH_MAX 17
26 #define NOUVEAU_GETPARAM_VRAM_BAR_SIZE 18
27 #define NOUVEAU_GETPARAM_VRAM_USED 19
28 struct drm_nouveau_getparam {
29   __u64 param;
30   __u64 value;
31 };
32 struct drm_nouveau_channel_alloc {
33   __u32 fb_ctxdma_handle;
34   __u32 tt_ctxdma_handle;
35   __s32 channel;
36   __u32 pushbuf_domains;
37   __u32 notifier_handle;
38   struct {
39     __u32 handle;
40     __u32 grclass;
41   } subchan[8];
42   __u32 nr_subchan;
43 };
44 struct drm_nouveau_channel_free {
45   __s32 channel;
46 };
47 #define NOUVEAU_GEM_DOMAIN_CPU (1 << 0)
48 #define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1)
49 #define NOUVEAU_GEM_DOMAIN_GART (1 << 2)
50 #define NOUVEAU_GEM_DOMAIN_MAPPABLE (1 << 3)
51 #define NOUVEAU_GEM_DOMAIN_COHERENT (1 << 4)
52 #define NOUVEAU_GEM_DOMAIN_NO_SHARE (1 << 5)
53 #define NOUVEAU_GEM_TILE_COMP 0x00030000
54 #define NOUVEAU_GEM_TILE_LAYOUT_MASK 0x0000ff00
55 #define NOUVEAU_GEM_TILE_16BPP 0x00000001
56 #define NOUVEAU_GEM_TILE_32BPP 0x00000002
57 #define NOUVEAU_GEM_TILE_ZETA 0x00000004
58 #define NOUVEAU_GEM_TILE_NONCONTIG 0x00000008
59 struct drm_nouveau_gem_info {
60   __u32 handle;
61   __u32 domain;
62   __u64 size;
63   __u64 offset;
64   __u64 map_handle;
65   __u32 tile_mode;
66   __u32 tile_flags;
67 };
68 struct drm_nouveau_gem_new {
69   struct drm_nouveau_gem_info info;
70   __u32 channel_hint;
71   __u32 align;
72 };
73 #define NOUVEAU_GEM_MAX_BUFFERS 1024
74 struct drm_nouveau_gem_pushbuf_bo_presumed {
75   __u32 valid;
76   __u32 domain;
77   __u64 offset;
78 };
79 struct drm_nouveau_gem_pushbuf_bo {
80   __u64 user_priv;
81   __u32 handle;
82   __u32 read_domains;
83   __u32 write_domains;
84   __u32 valid_domains;
85   struct drm_nouveau_gem_pushbuf_bo_presumed presumed;
86 };
87 #define NOUVEAU_GEM_RELOC_LOW (1 << 0)
88 #define NOUVEAU_GEM_RELOC_HIGH (1 << 1)
89 #define NOUVEAU_GEM_RELOC_OR (1 << 2)
90 #define NOUVEAU_GEM_MAX_RELOCS 1024
91 struct drm_nouveau_gem_pushbuf_reloc {
92   __u32 reloc_bo_index;
93   __u32 reloc_bo_offset;
94   __u32 bo_index;
95   __u32 flags;
96   __u32 data;
97   __u32 vor;
98   __u32 tor;
99 };
100 #define NOUVEAU_GEM_MAX_PUSH 512
101 struct drm_nouveau_gem_pushbuf_push {
102   __u32 bo_index;
103   __u32 pad;
104   __u64 offset;
105   __u64 length;
106 #define NOUVEAU_GEM_PUSHBUF_NO_PREFETCH (1 << 23)
107 };
108 struct drm_nouveau_gem_pushbuf {
109   __u32 channel;
110   __u32 nr_buffers;
111   __u64 buffers;
112   __u32 nr_relocs;
113   __u32 nr_push;
114   __u64 relocs;
115   __u64 push;
116   __u32 suffix0;
117   __u32 suffix1;
118 #define NOUVEAU_GEM_PUSHBUF_SYNC (1ULL << 0)
119   __u64 vram_available;
120   __u64 gart_available;
121 };
122 #define NOUVEAU_GEM_CPU_PREP_NOWAIT 0x00000001
123 #define NOUVEAU_GEM_CPU_PREP_WRITE 0x00000004
124 struct drm_nouveau_gem_cpu_prep {
125   __u32 handle;
126   __u32 flags;
127 };
128 struct drm_nouveau_gem_cpu_fini {
129   __u32 handle;
130 };
131 struct drm_nouveau_sync {
132   __u32 flags;
133 #define DRM_NOUVEAU_SYNC_SYNCOBJ 0x0
134 #define DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ 0x1
135 #define DRM_NOUVEAU_SYNC_TYPE_MASK 0xf
136   __u32 handle;
137   __u64 timeline_value;
138 };
139 struct drm_nouveau_vm_init {
140   __u64 kernel_managed_addr;
141   __u64 kernel_managed_size;
142 };
143 struct drm_nouveau_vm_bind_op {
144   __u32 op;
145 #define DRM_NOUVEAU_VM_BIND_OP_MAP 0x0
146 #define DRM_NOUVEAU_VM_BIND_OP_UNMAP 0x1
147   __u32 flags;
148 #define DRM_NOUVEAU_VM_BIND_SPARSE (1 << 8)
149   __u32 handle;
150   __u32 pad;
151   __u64 addr;
152   __u64 bo_offset;
153   __u64 range;
154 };
155 struct drm_nouveau_vm_bind {
156   __u32 op_count;
157   __u32 flags;
158 #define DRM_NOUVEAU_VM_BIND_RUN_ASYNC 0x1
159   __u32 wait_count;
160   __u32 sig_count;
161   __u64 wait_ptr;
162   __u64 sig_ptr;
163   __u64 op_ptr;
164 };
165 struct drm_nouveau_exec_push {
166   __u64 va;
167   __u32 va_len;
168   __u32 flags;
169 #define DRM_NOUVEAU_EXEC_PUSH_NO_PREFETCH 0x1
170 };
171 struct drm_nouveau_exec {
172   __u32 channel;
173   __u32 push_count;
174   __u32 wait_count;
175   __u32 sig_count;
176   __u64 wait_ptr;
177   __u64 sig_ptr;
178   __u64 push_ptr;
179 };
180 #define DRM_NOUVEAU_GETPARAM 0x00
181 #define DRM_NOUVEAU_SETPARAM 0x01
182 #define DRM_NOUVEAU_CHANNEL_ALLOC 0x02
183 #define DRM_NOUVEAU_CHANNEL_FREE 0x03
184 #define DRM_NOUVEAU_GROBJ_ALLOC 0x04
185 #define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC 0x05
186 #define DRM_NOUVEAU_GPUOBJ_FREE 0x06
187 #define DRM_NOUVEAU_NVIF 0x07
188 #define DRM_NOUVEAU_SVM_INIT 0x08
189 #define DRM_NOUVEAU_SVM_BIND 0x09
190 #define DRM_NOUVEAU_VM_INIT 0x10
191 #define DRM_NOUVEAU_VM_BIND 0x11
192 #define DRM_NOUVEAU_EXEC 0x12
193 #define DRM_NOUVEAU_GEM_NEW 0x40
194 #define DRM_NOUVEAU_GEM_PUSHBUF 0x41
195 #define DRM_NOUVEAU_GEM_CPU_PREP 0x42
196 #define DRM_NOUVEAU_GEM_CPU_FINI 0x43
197 #define DRM_NOUVEAU_GEM_INFO 0x44
198 struct drm_nouveau_svm_init {
199   __u64 unmanaged_addr;
200   __u64 unmanaged_size;
201 };
202 struct drm_nouveau_svm_bind {
203   __u64 header;
204   __u64 va_start;
205   __u64 va_end;
206   __u64 npages;
207   __u64 stride;
208   __u64 result;
209   __u64 reserved0;
210   __u64 reserved1;
211 };
212 #define NOUVEAU_SVM_BIND_COMMAND_SHIFT 0
213 #define NOUVEAU_SVM_BIND_COMMAND_BITS 8
214 #define NOUVEAU_SVM_BIND_COMMAND_MASK ((1 << 8) - 1)
215 #define NOUVEAU_SVM_BIND_PRIORITY_SHIFT 8
216 #define NOUVEAU_SVM_BIND_PRIORITY_BITS 8
217 #define NOUVEAU_SVM_BIND_PRIORITY_MASK ((1 << 8) - 1)
218 #define NOUVEAU_SVM_BIND_TARGET_SHIFT 16
219 #define NOUVEAU_SVM_BIND_TARGET_BITS 32
220 #define NOUVEAU_SVM_BIND_TARGET_MASK 0xffffffff
221 #define NOUVEAU_SVM_BIND_VALID_BITS 48
222 #define NOUVEAU_SVM_BIND_VALID_MASK ((1ULL << NOUVEAU_SVM_BIND_VALID_BITS) - 1)
223 #define NOUVEAU_SVM_BIND_COMMAND__MIGRATE 0
224 #define NOUVEAU_SVM_BIND_TARGET__GPU_VRAM (1UL << 31)
225 #define DRM_IOCTL_NOUVEAU_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GETPARAM, struct drm_nouveau_getparam)
226 #define DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_ALLOC, struct drm_nouveau_channel_alloc)
227 #define DRM_IOCTL_NOUVEAU_CHANNEL_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_FREE, struct drm_nouveau_channel_free)
228 #define DRM_IOCTL_NOUVEAU_SVM_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_INIT, struct drm_nouveau_svm_init)
229 #define DRM_IOCTL_NOUVEAU_SVM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_BIND, struct drm_nouveau_svm_bind)
230 #define DRM_IOCTL_NOUVEAU_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_NEW, struct drm_nouveau_gem_new)
231 #define DRM_IOCTL_NOUVEAU_GEM_PUSHBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_PUSHBUF, struct drm_nouveau_gem_pushbuf)
232 #define DRM_IOCTL_NOUVEAU_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_PREP, struct drm_nouveau_gem_cpu_prep)
233 #define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI DRM_IOW(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini)
234 #define DRM_IOCTL_NOUVEAU_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_INFO, struct drm_nouveau_gem_info)
235 #define DRM_IOCTL_NOUVEAU_VM_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_VM_INIT, struct drm_nouveau_vm_init)
236 #define DRM_IOCTL_NOUVEAU_VM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_VM_BIND, struct drm_nouveau_vm_bind)
237 #define DRM_IOCTL_NOUVEAU_EXEC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_EXEC, struct drm_nouveau_exec)
238 #ifdef __cplusplus
239 }
240 #endif
241 #endif
242