1#ifndef __NVIF_IOCTL_H__
2#define __NVIF_IOCTL_H__
3
4struct 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
33struct nvif_ioctl_nop {
34};
35
36struct nvif_ioctl_sclass_v0 {
37	/* nvif_ioctl ... */
38	__u8  version;
39	__u8  count;
40	__u8  pad02[6];
41	__u32 oclass[];
42};
43
44struct 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_PERFCTR                                    0x0000ffff
53#define NVIF_IOCTL_NEW_V0_CONTROL                                    0x0000fffe
54	__u32 oclass;
55	__u8  data[];		/* class data (class.h) */
56};
57
58struct nvif_ioctl_del {
59};
60
61struct nvif_ioctl_rd_v0 {
62	/* nvif_ioctl ... */
63	__u8  version;
64	__u8  size;
65	__u8  pad02[2];
66	__u32 data;
67	__u64 addr;
68};
69
70struct nvif_ioctl_wr_v0 {
71	/* nvif_ioctl ... */
72	__u8  version;
73	__u8  size;
74	__u8  pad02[2];
75	__u32 data;
76	__u64 addr;
77};
78
79struct nvif_ioctl_map_v0 {
80	/* nvif_ioctl ... */
81	__u8  version;
82	__u8  pad01[3];
83	__u32 length;
84	__u64 handle;
85};
86
87struct nvif_ioctl_unmap {
88};
89
90struct nvif_ioctl_ntfy_new_v0 {
91	/* nvif_ioctl ... */
92	__u8  version;
93	__u8  event;
94	__u8  index;
95	__u8  pad03[5];
96	__u8  data[];		/* event request data (event.h) */
97};
98
99struct nvif_ioctl_ntfy_del_v0 {
100	/* nvif_ioctl ... */
101	__u8  version;
102	__u8  index;
103	__u8  pad02[6];
104};
105
106struct nvif_ioctl_ntfy_get_v0 {
107	/* nvif_ioctl ... */
108	__u8  version;
109	__u8  index;
110	__u8  pad02[6];
111};
112
113struct nvif_ioctl_ntfy_put_v0 {
114	/* nvif_ioctl ... */
115	__u8  version;
116	__u8  index;
117	__u8  pad02[6];
118};
119
120struct nvif_ioctl_mthd_v0 {
121	/* nvif_ioctl ... */
122	__u8  version;
123	__u8  method;
124	__u8  pad02[6];
125	__u8  data[];		/* method data (class.h) */
126};
127
128#endif
129