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
133