1 #ifndef __NVIF_IOCTL_H__
2 #define __NVIF_IOCTL_H__
3 
4 struct nvif_ioctl_v0 {
5 	__u8  version;
6 #define NVIF_IOCTL_V0_OWNER_NVIF                                           0x00
7 #define NVIF_IOCTL_V0_OWNER_ANY                                            0xff
8 	__u8  owner;
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  path_nr;
24 #define NVIF_IOCTL_V0_ROUTE_NVIF                                           0x00
25 #define NVIF_IOCTL_V0_ROUTE_HIDDEN                                         0xff
26 	__u8  pad04[3];
27 	__u8  route;
28 	__u64 token;
29 	__u32 path[8];		/* in reverse */
30 	__u8  data[];		/* ioctl data (below) */
31 };
32 
33 struct nvif_ioctl_nop {
34 };
35 
36 struct nvif_ioctl_sclass_v0 {
37 	/* nvif_ioctl ... */
38 	__u8  version;
39 	__u8  count;
40 	__u8  pad02[6];
41 	__u32 oclass[];
42 };
43 
44 struct nvif_ioctl_new_v0 {
45 	/* nvif_ioctl ... */
46 	__u8  version;
47 	__u8  pad01[6];
48 	__u8  route;
49 	__u64 token;
50 	__u32 handle;
51 /* these class numbers are made up by us, and not nvidia-assigned */
52 #define NVIF_IOCTL_NEW_V0_PERFMON                                    0x0000ffff
53 #define NVIF_IOCTL_NEW_V0_PERFDOM                                    0x0000fffe
54 #define NVIF_IOCTL_NEW_V0_CONTROL                                    0x0000fffd
55 	__u32 oclass;
56 	__u8  data[];		/* class data (class.h) */
57 };
58 
59 struct nvif_ioctl_del {
60 };
61 
62 struct nvif_ioctl_rd_v0 {
63 	/* nvif_ioctl ... */
64 	__u8  version;
65 	__u8  size;
66 	__u8  pad02[2];
67 	__u32 data;
68 	__u64 addr;
69 };
70 
71 struct nvif_ioctl_wr_v0 {
72 	/* nvif_ioctl ... */
73 	__u8  version;
74 	__u8  size;
75 	__u8  pad02[2];
76 	__u32 data;
77 	__u64 addr;
78 };
79 
80 struct nvif_ioctl_map_v0 {
81 	/* nvif_ioctl ... */
82 	__u8  version;
83 	__u8  pad01[3];
84 	__u32 length;
85 	__u64 handle;
86 };
87 
88 struct nvif_ioctl_unmap {
89 };
90 
91 struct nvif_ioctl_ntfy_new_v0 {
92 	/* nvif_ioctl ... */
93 	__u8  version;
94 	__u8  event;
95 	__u8  index;
96 	__u8  pad03[5];
97 	__u8  data[];		/* event request data (event.h) */
98 };
99 
100 struct nvif_ioctl_ntfy_del_v0 {
101 	/* nvif_ioctl ... */
102 	__u8  version;
103 	__u8  index;
104 	__u8  pad02[6];
105 };
106 
107 struct nvif_ioctl_ntfy_get_v0 {
108 	/* nvif_ioctl ... */
109 	__u8  version;
110 	__u8  index;
111 	__u8  pad02[6];
112 };
113 
114 struct nvif_ioctl_ntfy_put_v0 {
115 	/* nvif_ioctl ... */
116 	__u8  version;
117 	__u8  index;
118 	__u8  pad02[6];
119 };
120 
121 struct nvif_ioctl_mthd_v0 {
122 	/* nvif_ioctl ... */
123 	__u8  version;
124 	__u8  method;
125 	__u8  pad02[6];
126 	__u8  data[];		/* method data (class.h) */
127 };
128 
129 #endif
130