13f012e29Smrg#ifndef __NVIF_IOCTL_H__
23f012e29Smrg#define __NVIF_IOCTL_H__
33f012e29Smrg
43f012e29Smrg#define NVIF_VERSION_LATEST                               0x0000000000000000ULL
53f012e29Smrg
63f012e29Smrgstruct nvif_ioctl_v0 {
73f012e29Smrg	__u8  version;
83f012e29Smrg#define NVIF_IOCTL_V0_NOP                                                  0x00
93f012e29Smrg#define NVIF_IOCTL_V0_SCLASS                                               0x01
103f012e29Smrg#define NVIF_IOCTL_V0_NEW                                                  0x02
113f012e29Smrg#define NVIF_IOCTL_V0_DEL                                                  0x03
123f012e29Smrg#define NVIF_IOCTL_V0_MTHD                                                 0x04
133f012e29Smrg#define NVIF_IOCTL_V0_RD                                                   0x05
143f012e29Smrg#define NVIF_IOCTL_V0_WR                                                   0x06
153f012e29Smrg#define NVIF_IOCTL_V0_MAP                                                  0x07
163f012e29Smrg#define NVIF_IOCTL_V0_UNMAP                                                0x08
173f012e29Smrg#define NVIF_IOCTL_V0_NTFY_NEW                                             0x09
183f012e29Smrg#define NVIF_IOCTL_V0_NTFY_DEL                                             0x0a
193f012e29Smrg#define NVIF_IOCTL_V0_NTFY_GET                                             0x0b
203f012e29Smrg#define NVIF_IOCTL_V0_NTFY_PUT                                             0x0c
213f012e29Smrg	__u8  type;
223f012e29Smrg	__u8  pad02[4];
233f012e29Smrg#define NVIF_IOCTL_V0_OWNER_NVIF                                           0x00
243f012e29Smrg#define NVIF_IOCTL_V0_OWNER_ANY                                            0xff
253f012e29Smrg	__u8  owner;
263f012e29Smrg#define NVIF_IOCTL_V0_ROUTE_NVIF                                           0x00
273f012e29Smrg#define NVIF_IOCTL_V0_ROUTE_HIDDEN                                         0xff
283f012e29Smrg	__u8  route;
293f012e29Smrg	__u64 token;
303f012e29Smrg	__u64 object;
313f012e29Smrg	__u8  data[];		/* ioctl data (below) */
323f012e29Smrg};
333f012e29Smrg
343f012e29Smrgstruct nvif_ioctl_nop_v0 {
353f012e29Smrg	__u64 version;
363f012e29Smrg};
373f012e29Smrg
383f012e29Smrgstruct nvif_ioctl_sclass_v0 {
393f012e29Smrg	/* nvif_ioctl ... */
403f012e29Smrg	__u8  version;
413f012e29Smrg	__u8  count;
423f012e29Smrg	__u8  pad02[6];
433f012e29Smrg	struct nvif_ioctl_sclass_oclass_v0 {
443f012e29Smrg		__s32 oclass;
453f012e29Smrg		__s16 minver;
463f012e29Smrg		__s16 maxver;
473f012e29Smrg	} oclass[];
483f012e29Smrg};
493f012e29Smrg
503f012e29Smrgstruct nvif_ioctl_new_v0 {
513f012e29Smrg	/* nvif_ioctl ... */
523f012e29Smrg	__u8  version;
533f012e29Smrg	__u8  pad01[6];
543f012e29Smrg	__u8  route;
553f012e29Smrg	__u64 token;
563f012e29Smrg	__u64 object;
573f012e29Smrg	__u32 handle;
583f012e29Smrg	__s32 oclass;
593f012e29Smrg	__u8  data[];		/* class data (class.h) */
603f012e29Smrg};
613f012e29Smrg
623f012e29Smrgstruct nvif_ioctl_del {
633f012e29Smrg};
643f012e29Smrg
653f012e29Smrgstruct nvif_ioctl_rd_v0 {
663f012e29Smrg	/* nvif_ioctl ... */
673f012e29Smrg	__u8  version;
683f012e29Smrg	__u8  size;
693f012e29Smrg	__u8  pad02[2];
703f012e29Smrg	__u32 data;
713f012e29Smrg	__u64 addr;
723f012e29Smrg};
733f012e29Smrg
743f012e29Smrgstruct nvif_ioctl_wr_v0 {
753f012e29Smrg	/* nvif_ioctl ... */
763f012e29Smrg	__u8  version;
773f012e29Smrg	__u8  size;
783f012e29Smrg	__u8  pad02[2];
793f012e29Smrg	__u32 data;
803f012e29Smrg	__u64 addr;
813f012e29Smrg};
823f012e29Smrg
833f012e29Smrgstruct nvif_ioctl_map_v0 {
843f012e29Smrg	/* nvif_ioctl ... */
853f012e29Smrg	__u8  version;
863f012e29Smrg	__u8  pad01[3];
873f012e29Smrg	__u32 length;
883f012e29Smrg	__u64 handle;
893f012e29Smrg};
903f012e29Smrg
913f012e29Smrgstruct nvif_ioctl_unmap {
923f012e29Smrg};
933f012e29Smrg
943f012e29Smrgstruct nvif_ioctl_ntfy_new_v0 {
953f012e29Smrg	/* nvif_ioctl ... */
963f012e29Smrg	__u8  version;
973f012e29Smrg	__u8  event;
983f012e29Smrg	__u8  index;
993f012e29Smrg	__u8  pad03[5];
1003f012e29Smrg	__u8  data[];		/* event request data (event.h) */
1013f012e29Smrg};
1023f012e29Smrg
1033f012e29Smrgstruct nvif_ioctl_ntfy_del_v0 {
1043f012e29Smrg	/* nvif_ioctl ... */
1053f012e29Smrg	__u8  version;
1063f012e29Smrg	__u8  index;
1073f012e29Smrg	__u8  pad02[6];
1083f012e29Smrg};
1093f012e29Smrg
1103f012e29Smrgstruct nvif_ioctl_ntfy_get_v0 {
1113f012e29Smrg	/* nvif_ioctl ... */
1123f012e29Smrg	__u8  version;
1133f012e29Smrg	__u8  index;
1143f012e29Smrg	__u8  pad02[6];
1153f012e29Smrg};
1163f012e29Smrg
1173f012e29Smrgstruct nvif_ioctl_ntfy_put_v0 {
1183f012e29Smrg	/* nvif_ioctl ... */
1193f012e29Smrg	__u8  version;
1203f012e29Smrg	__u8  index;
1213f012e29Smrg	__u8  pad02[6];
1223f012e29Smrg};
1233f012e29Smrg
1243f012e29Smrgstruct nvif_ioctl_mthd_v0 {
1253f012e29Smrg	/* nvif_ioctl ... */
1263f012e29Smrg	__u8  version;
1273f012e29Smrg	__u8  method;
1283f012e29Smrg	__u8  pad02[6];
1293f012e29Smrg	__u8  data[];		/* method data (class.h) */
1303f012e29Smrg};
1313f012e29Smrg
1323f012e29Smrg#endif
133