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 /* these class numbers are made up by us, and not nvidia-assigned */
59 #define NVIF_IOCTL_NEW_V0_CONTROL                                            -1
60 #define NVIF_IOCTL_NEW_V0_PERFMON                                            -2
61 #define NVIF_IOCTL_NEW_V0_PERFDOM                                            -3
62 #define NVIF_IOCTL_NEW_V0_SW_NV04                                            -4
63 #define NVIF_IOCTL_NEW_V0_SW_NV10                                            -5
64 #define NVIF_IOCTL_NEW_V0_SW_NV50                                            -6
65 #define NVIF_IOCTL_NEW_V0_SW_GF100                                           -7
66 	__s32 oclass;
67 	__u8  data[];		/* class data (class.h) */
68 };
69 
70 struct nvif_ioctl_del {
71 };
72 
73 struct nvif_ioctl_rd_v0 {
74 	/* nvif_ioctl ... */
75 	__u8  version;
76 	__u8  size;
77 	__u8  pad02[2];
78 	__u32 data;
79 	__u64 addr;
80 };
81 
82 struct nvif_ioctl_wr_v0 {
83 	/* nvif_ioctl ... */
84 	__u8  version;
85 	__u8  size;
86 	__u8  pad02[2];
87 	__u32 data;
88 	__u64 addr;
89 };
90 
91 struct nvif_ioctl_map_v0 {
92 	/* nvif_ioctl ... */
93 	__u8  version;
94 	__u8  pad01[3];
95 	__u32 length;
96 	__u64 handle;
97 };
98 
99 struct nvif_ioctl_unmap {
100 };
101 
102 struct nvif_ioctl_ntfy_new_v0 {
103 	/* nvif_ioctl ... */
104 	__u8  version;
105 	__u8  event;
106 	__u8  index;
107 	__u8  pad03[5];
108 	__u8  data[];		/* event request data (event.h) */
109 };
110 
111 struct nvif_ioctl_ntfy_del_v0 {
112 	/* nvif_ioctl ... */
113 	__u8  version;
114 	__u8  index;
115 	__u8  pad02[6];
116 };
117 
118 struct nvif_ioctl_ntfy_get_v0 {
119 	/* nvif_ioctl ... */
120 	__u8  version;
121 	__u8  index;
122 	__u8  pad02[6];
123 };
124 
125 struct nvif_ioctl_ntfy_put_v0 {
126 	/* nvif_ioctl ... */
127 	__u8  version;
128 	__u8  index;
129 	__u8  pad02[6];
130 };
131 
132 struct nvif_ioctl_mthd_v0 {
133 	/* nvif_ioctl ... */
134 	__u8  version;
135 	__u8  method;
136 	__u8  pad02[6];
137 	__u8  data[];		/* method data (class.h) */
138 };
139 
140 #endif
141