1#ifndef __NVIF_IOCTL_H__
2#define __NVIF_IOCTL_H__
3
4#define NVIF_VERSION_LATEST                               0x0000000000000000ULL
5
6struct 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
34struct nvif_ioctl_nop_v0 {
35	__u64 version;
36};
37
38struct 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
50struct 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
62struct nvif_ioctl_del {
63};
64
65struct 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
74struct 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
83struct nvif_ioctl_map_v0 {
84	/* nvif_ioctl ... */
85	__u8  version;
86	__u8  pad01[3];
87	__u32 length;
88	__u64 handle;
89};
90
91struct nvif_ioctl_unmap {
92};
93
94struct 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
103struct nvif_ioctl_ntfy_del_v0 {
104	/* nvif_ioctl ... */
105	__u8  version;
106	__u8  index;
107	__u8  pad02[6];
108};
109
110struct nvif_ioctl_ntfy_get_v0 {
111	/* nvif_ioctl ... */
112	__u8  version;
113	__u8  index;
114	__u8  pad02[6];
115};
116
117struct nvif_ioctl_ntfy_put_v0 {
118	/* nvif_ioctl ... */
119	__u8  version;
120	__u8  index;
121	__u8  pad02[6];
122};
123
124struct 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