GNU Linux-libre 4.9.309-gnu1
[releases.git] / drivers / gpu / drm / nouveau / include / nvif / ioctl.h
1 #ifndef __NVIF_IOCTL_H__
2 #define __NVIF_IOCTL_H__
3
4 #define NVIF_VERSION_LATEST                               0x0000000000000000ULL
5
6 struct nvif_ioctl_v0 {
7         __u8  version;
8 #define NVIF_IOCTL_V0_NOP                                                  0x00
9 #define NVIF_IOCTL_V0_SCLASS                                               0x01
10 #define NVIF_IOCTL_V0_NEW                                                  0x02
11 #define NVIF_IOCTL_V0_DEL                                                  0x03
12 #define NVIF_IOCTL_V0_MTHD                                                 0x04
13 #define NVIF_IOCTL_V0_RD                                                   0x05
14 #define NVIF_IOCTL_V0_WR                                                   0x06
15 #define NVIF_IOCTL_V0_MAP                                                  0x07
16 #define NVIF_IOCTL_V0_UNMAP                                                0x08
17 #define NVIF_IOCTL_V0_NTFY_NEW                                             0x09
18 #define NVIF_IOCTL_V0_NTFY_DEL                                             0x0a
19 #define NVIF_IOCTL_V0_NTFY_GET                                             0x0b
20 #define NVIF_IOCTL_V0_NTFY_PUT                                             0x0c
21         __u8  type;
22         __u8  pad02[4];
23 #define NVIF_IOCTL_V0_OWNER_NVIF                                           0x00
24 #define NVIF_IOCTL_V0_OWNER_ANY                                            0xff
25         __u8  owner;
26 #define NVIF_IOCTL_V0_ROUTE_NVIF                                           0x00
27 #define NVIF_IOCTL_V0_ROUTE_HIDDEN                                         0xff
28         __u8  route;
29         __u64 token;
30         __u64 object;
31         __u8  data[];           /* ioctl data (below) */
32 };
33
34 struct nvif_ioctl_nop_v0 {
35         __u64 version;
36 };
37
38 struct nvif_ioctl_sclass_v0 {
39         /* nvif_ioctl ... */
40         __u8  version;
41         __u8  count;
42         __u8  pad02[6];
43         struct nvif_ioctl_sclass_oclass_v0 {
44                 __s32 oclass;
45                 __s16 minver;
46                 __s16 maxver;
47         } oclass[];
48 };
49
50 struct nvif_ioctl_new_v0 {
51         /* nvif_ioctl ... */
52         __u8  version;
53         __u8  pad01[6];
54         __u8  route;
55         __u64 token;
56         __u64 object;
57         __u32 handle;
58         __s32 oclass;
59         __u8  data[];           /* class data (class.h) */
60 };
61
62 struct nvif_ioctl_del {
63 };
64
65 struct nvif_ioctl_rd_v0 {
66         /* nvif_ioctl ... */
67         __u8  version;
68         __u8  size;
69         __u8  pad02[2];
70         __u32 data;
71         __u64 addr;
72 };
73
74 struct nvif_ioctl_wr_v0 {
75         /* nvif_ioctl ... */
76         __u8  version;
77         __u8  size;
78         __u8  pad02[2];
79         __u32 data;
80         __u64 addr;
81 };
82
83 struct nvif_ioctl_map_v0 {
84         /* nvif_ioctl ... */
85         __u8  version;
86         __u8  pad01[3];
87         __u32 length;
88         __u64 handle;
89 };
90
91 struct nvif_ioctl_unmap {
92 };
93
94 struct nvif_ioctl_ntfy_new_v0 {
95         /* nvif_ioctl ... */
96         __u8  version;
97         __u8  event;
98         __u8  index;
99         __u8  pad03[5];
100         __u8  data[];           /* event request data (event.h) */
101 };
102
103 struct nvif_ioctl_ntfy_del_v0 {
104         /* nvif_ioctl ... */
105         __u8  version;
106         __u8  index;
107         __u8  pad02[6];
108 };
109
110 struct nvif_ioctl_ntfy_get_v0 {
111         /* nvif_ioctl ... */
112         __u8  version;
113         __u8  index;
114         __u8  pad02[6];
115 };
116
117 struct nvif_ioctl_ntfy_put_v0 {
118         /* nvif_ioctl ... */
119         __u8  version;
120         __u8  index;
121         __u8  pad02[6];
122 };
123
124 struct nvif_ioctl_mthd_v0 {
125         /* nvif_ioctl ... */
126         __u8  version;
127         __u8  method;
128         __u8  pad02[6];
129         __u8  data[];           /* method data (class.h) */
130 };
131
132 #endif