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