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