xref: /OK3568_Linux_fs/kernel/drivers/gpu/drm/nouveau/include/nvif/ioctl.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: MIT */
2*4882a593Smuzhiyun #ifndef __NVIF_IOCTL_H__
3*4882a593Smuzhiyun #define __NVIF_IOCTL_H__
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #define NVIF_VERSION_LATEST                               0x0000000000000100ULL
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun struct nvif_ioctl_v0 {
8*4882a593Smuzhiyun 	__u8  version;
9*4882a593Smuzhiyun #define NVIF_IOCTL_V0_NOP                                                  0x00
10*4882a593Smuzhiyun #define NVIF_IOCTL_V0_SCLASS                                               0x01
11*4882a593Smuzhiyun #define NVIF_IOCTL_V0_NEW                                                  0x02
12*4882a593Smuzhiyun #define NVIF_IOCTL_V0_DEL                                                  0x03
13*4882a593Smuzhiyun #define NVIF_IOCTL_V0_MTHD                                                 0x04
14*4882a593Smuzhiyun #define NVIF_IOCTL_V0_RD                                                   0x05
15*4882a593Smuzhiyun #define NVIF_IOCTL_V0_WR                                                   0x06
16*4882a593Smuzhiyun #define NVIF_IOCTL_V0_MAP                                                  0x07
17*4882a593Smuzhiyun #define NVIF_IOCTL_V0_UNMAP                                                0x08
18*4882a593Smuzhiyun #define NVIF_IOCTL_V0_NTFY_NEW                                             0x09
19*4882a593Smuzhiyun #define NVIF_IOCTL_V0_NTFY_DEL                                             0x0a
20*4882a593Smuzhiyun #define NVIF_IOCTL_V0_NTFY_GET                                             0x0b
21*4882a593Smuzhiyun #define NVIF_IOCTL_V0_NTFY_PUT                                             0x0c
22*4882a593Smuzhiyun 	__u8  type;
23*4882a593Smuzhiyun 	__u8  pad02[4];
24*4882a593Smuzhiyun #define NVIF_IOCTL_V0_OWNER_NVIF                                           0x00
25*4882a593Smuzhiyun #define NVIF_IOCTL_V0_OWNER_ANY                                            0xff
26*4882a593Smuzhiyun 	__u8  owner;
27*4882a593Smuzhiyun #define NVIF_IOCTL_V0_ROUTE_NVIF                                           0x00
28*4882a593Smuzhiyun #define NVIF_IOCTL_V0_ROUTE_HIDDEN                                         0xff
29*4882a593Smuzhiyun 	__u8  route;
30*4882a593Smuzhiyun 	__u64 token;
31*4882a593Smuzhiyun 	__u64 object;
32*4882a593Smuzhiyun 	__u8  data[];		/* ioctl data (below) */
33*4882a593Smuzhiyun };
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun struct nvif_ioctl_nop_v0 {
36*4882a593Smuzhiyun 	__u64 version;
37*4882a593Smuzhiyun };
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun struct nvif_ioctl_sclass_v0 {
40*4882a593Smuzhiyun 	/* nvif_ioctl ... */
41*4882a593Smuzhiyun 	__u8  version;
42*4882a593Smuzhiyun 	__u8  count;
43*4882a593Smuzhiyun 	__u8  pad02[6];
44*4882a593Smuzhiyun 	struct nvif_ioctl_sclass_oclass_v0 {
45*4882a593Smuzhiyun 		__s32 oclass;
46*4882a593Smuzhiyun 		__s16 minver;
47*4882a593Smuzhiyun 		__s16 maxver;
48*4882a593Smuzhiyun 	} oclass[];
49*4882a593Smuzhiyun };
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun struct nvif_ioctl_new_v0 {
52*4882a593Smuzhiyun 	/* nvif_ioctl ... */
53*4882a593Smuzhiyun 	__u8  version;
54*4882a593Smuzhiyun 	__u8  pad01[6];
55*4882a593Smuzhiyun 	__u8  route;
56*4882a593Smuzhiyun 	__u64 token;
57*4882a593Smuzhiyun 	__u64 object;
58*4882a593Smuzhiyun 	__u32 handle;
59*4882a593Smuzhiyun 	__s32 oclass;
60*4882a593Smuzhiyun 	__u8  data[];		/* class data (class.h) */
61*4882a593Smuzhiyun };
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun struct nvif_ioctl_del {
64*4882a593Smuzhiyun };
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun struct nvif_ioctl_rd_v0 {
67*4882a593Smuzhiyun 	/* nvif_ioctl ... */
68*4882a593Smuzhiyun 	__u8  version;
69*4882a593Smuzhiyun 	__u8  size;
70*4882a593Smuzhiyun 	__u8  pad02[2];
71*4882a593Smuzhiyun 	__u32 data;
72*4882a593Smuzhiyun 	__u64 addr;
73*4882a593Smuzhiyun };
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun struct nvif_ioctl_wr_v0 {
76*4882a593Smuzhiyun 	/* nvif_ioctl ... */
77*4882a593Smuzhiyun 	__u8  version;
78*4882a593Smuzhiyun 	__u8  size;
79*4882a593Smuzhiyun 	__u8  pad02[2];
80*4882a593Smuzhiyun 	__u32 data;
81*4882a593Smuzhiyun 	__u64 addr;
82*4882a593Smuzhiyun };
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun struct nvif_ioctl_map_v0 {
85*4882a593Smuzhiyun 	/* nvif_ioctl ... */
86*4882a593Smuzhiyun 	__u8  version;
87*4882a593Smuzhiyun #define NVIF_IOCTL_MAP_V0_IO                                               0x00
88*4882a593Smuzhiyun #define NVIF_IOCTL_MAP_V0_VA                                               0x01
89*4882a593Smuzhiyun 	__u8  type;
90*4882a593Smuzhiyun 	__u8  pad02[6];
91*4882a593Smuzhiyun 	__u64 handle;
92*4882a593Smuzhiyun 	__u64 length;
93*4882a593Smuzhiyun 	__u8  data[];
94*4882a593Smuzhiyun };
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun struct nvif_ioctl_unmap {
97*4882a593Smuzhiyun };
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun struct nvif_ioctl_ntfy_new_v0 {
100*4882a593Smuzhiyun 	/* nvif_ioctl ... */
101*4882a593Smuzhiyun 	__u8  version;
102*4882a593Smuzhiyun 	__u8  event;
103*4882a593Smuzhiyun 	__u8  index;
104*4882a593Smuzhiyun 	__u8  pad03[5];
105*4882a593Smuzhiyun 	__u8  data[];		/* event request data (event.h) */
106*4882a593Smuzhiyun };
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun struct nvif_ioctl_ntfy_del_v0 {
109*4882a593Smuzhiyun 	/* nvif_ioctl ... */
110*4882a593Smuzhiyun 	__u8  version;
111*4882a593Smuzhiyun 	__u8  index;
112*4882a593Smuzhiyun 	__u8  pad02[6];
113*4882a593Smuzhiyun };
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun struct nvif_ioctl_ntfy_get_v0 {
116*4882a593Smuzhiyun 	/* nvif_ioctl ... */
117*4882a593Smuzhiyun 	__u8  version;
118*4882a593Smuzhiyun 	__u8  index;
119*4882a593Smuzhiyun 	__u8  pad02[6];
120*4882a593Smuzhiyun };
121*4882a593Smuzhiyun 
122*4882a593Smuzhiyun struct nvif_ioctl_ntfy_put_v0 {
123*4882a593Smuzhiyun 	/* nvif_ioctl ... */
124*4882a593Smuzhiyun 	__u8  version;
125*4882a593Smuzhiyun 	__u8  index;
126*4882a593Smuzhiyun 	__u8  pad02[6];
127*4882a593Smuzhiyun };
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun struct nvif_ioctl_mthd_v0 {
130*4882a593Smuzhiyun 	/* nvif_ioctl ... */
131*4882a593Smuzhiyun 	__u8  version;
132*4882a593Smuzhiyun 	__u8  method;
133*4882a593Smuzhiyun 	__u8  pad02[6];
134*4882a593Smuzhiyun 	__u8  data[];		/* method data (class.h) */
135*4882a593Smuzhiyun };
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun #endif
138