18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: MIT */
28c2ecf20Sopenharmony_ci#ifndef __NVIF_IOCTL_H__
38c2ecf20Sopenharmony_ci#define __NVIF_IOCTL_H__
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#define NVIF_VERSION_LATEST                               0x0000000000000100ULL
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cistruct nvif_ioctl_v0 {
88c2ecf20Sopenharmony_ci	__u8  version;
98c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_NOP                                                  0x00
108c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_SCLASS                                               0x01
118c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_NEW                                                  0x02
128c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_DEL                                                  0x03
138c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_MTHD                                                 0x04
148c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_RD                                                   0x05
158c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_WR                                                   0x06
168c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_MAP                                                  0x07
178c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_UNMAP                                                0x08
188c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_NTFY_NEW                                             0x09
198c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_NTFY_DEL                                             0x0a
208c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_NTFY_GET                                             0x0b
218c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_NTFY_PUT                                             0x0c
228c2ecf20Sopenharmony_ci	__u8  type;
238c2ecf20Sopenharmony_ci	__u8  pad02[4];
248c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_OWNER_NVIF                                           0x00
258c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_OWNER_ANY                                            0xff
268c2ecf20Sopenharmony_ci	__u8  owner;
278c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_ROUTE_NVIF                                           0x00
288c2ecf20Sopenharmony_ci#define NVIF_IOCTL_V0_ROUTE_HIDDEN                                         0xff
298c2ecf20Sopenharmony_ci	__u8  route;
308c2ecf20Sopenharmony_ci	__u64 token;
318c2ecf20Sopenharmony_ci	__u64 object;
328c2ecf20Sopenharmony_ci	__u8  data[];		/* ioctl data (below) */
338c2ecf20Sopenharmony_ci};
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_cistruct nvif_ioctl_nop_v0 {
368c2ecf20Sopenharmony_ci	__u64 version;
378c2ecf20Sopenharmony_ci};
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_cistruct nvif_ioctl_sclass_v0 {
408c2ecf20Sopenharmony_ci	/* nvif_ioctl ... */
418c2ecf20Sopenharmony_ci	__u8  version;
428c2ecf20Sopenharmony_ci	__u8  count;
438c2ecf20Sopenharmony_ci	__u8  pad02[6];
448c2ecf20Sopenharmony_ci	struct nvif_ioctl_sclass_oclass_v0 {
458c2ecf20Sopenharmony_ci		__s32 oclass;
468c2ecf20Sopenharmony_ci		__s16 minver;
478c2ecf20Sopenharmony_ci		__s16 maxver;
488c2ecf20Sopenharmony_ci	} oclass[];
498c2ecf20Sopenharmony_ci};
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_cistruct nvif_ioctl_new_v0 {
528c2ecf20Sopenharmony_ci	/* nvif_ioctl ... */
538c2ecf20Sopenharmony_ci	__u8  version;
548c2ecf20Sopenharmony_ci	__u8  pad01[6];
558c2ecf20Sopenharmony_ci	__u8  route;
568c2ecf20Sopenharmony_ci	__u64 token;
578c2ecf20Sopenharmony_ci	__u64 object;
588c2ecf20Sopenharmony_ci	__u32 handle;
598c2ecf20Sopenharmony_ci	__s32 oclass;
608c2ecf20Sopenharmony_ci	__u8  data[];		/* class data (class.h) */
618c2ecf20Sopenharmony_ci};
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_cistruct nvif_ioctl_del {
648c2ecf20Sopenharmony_ci};
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_cistruct nvif_ioctl_rd_v0 {
678c2ecf20Sopenharmony_ci	/* nvif_ioctl ... */
688c2ecf20Sopenharmony_ci	__u8  version;
698c2ecf20Sopenharmony_ci	__u8  size;
708c2ecf20Sopenharmony_ci	__u8  pad02[2];
718c2ecf20Sopenharmony_ci	__u32 data;
728c2ecf20Sopenharmony_ci	__u64 addr;
738c2ecf20Sopenharmony_ci};
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_cistruct nvif_ioctl_wr_v0 {
768c2ecf20Sopenharmony_ci	/* nvif_ioctl ... */
778c2ecf20Sopenharmony_ci	__u8  version;
788c2ecf20Sopenharmony_ci	__u8  size;
798c2ecf20Sopenharmony_ci	__u8  pad02[2];
808c2ecf20Sopenharmony_ci	__u32 data;
818c2ecf20Sopenharmony_ci	__u64 addr;
828c2ecf20Sopenharmony_ci};
838c2ecf20Sopenharmony_ci
848c2ecf20Sopenharmony_cistruct nvif_ioctl_map_v0 {
858c2ecf20Sopenharmony_ci	/* nvif_ioctl ... */
868c2ecf20Sopenharmony_ci	__u8  version;
878c2ecf20Sopenharmony_ci#define NVIF_IOCTL_MAP_V0_IO                                               0x00
888c2ecf20Sopenharmony_ci#define NVIF_IOCTL_MAP_V0_VA                                               0x01
898c2ecf20Sopenharmony_ci	__u8  type;
908c2ecf20Sopenharmony_ci	__u8  pad02[6];
918c2ecf20Sopenharmony_ci	__u64 handle;
928c2ecf20Sopenharmony_ci	__u64 length;
938c2ecf20Sopenharmony_ci	__u8  data[];
948c2ecf20Sopenharmony_ci};
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_cistruct nvif_ioctl_unmap {
978c2ecf20Sopenharmony_ci};
988c2ecf20Sopenharmony_ci
998c2ecf20Sopenharmony_cistruct nvif_ioctl_ntfy_new_v0 {
1008c2ecf20Sopenharmony_ci	/* nvif_ioctl ... */
1018c2ecf20Sopenharmony_ci	__u8  version;
1028c2ecf20Sopenharmony_ci	__u8  event;
1038c2ecf20Sopenharmony_ci	__u8  index;
1048c2ecf20Sopenharmony_ci	__u8  pad03[5];
1058c2ecf20Sopenharmony_ci	__u8  data[];		/* event request data (event.h) */
1068c2ecf20Sopenharmony_ci};
1078c2ecf20Sopenharmony_ci
1088c2ecf20Sopenharmony_cistruct nvif_ioctl_ntfy_del_v0 {
1098c2ecf20Sopenharmony_ci	/* nvif_ioctl ... */
1108c2ecf20Sopenharmony_ci	__u8  version;
1118c2ecf20Sopenharmony_ci	__u8  index;
1128c2ecf20Sopenharmony_ci	__u8  pad02[6];
1138c2ecf20Sopenharmony_ci};
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_cistruct nvif_ioctl_ntfy_get_v0 {
1168c2ecf20Sopenharmony_ci	/* nvif_ioctl ... */
1178c2ecf20Sopenharmony_ci	__u8  version;
1188c2ecf20Sopenharmony_ci	__u8  index;
1198c2ecf20Sopenharmony_ci	__u8  pad02[6];
1208c2ecf20Sopenharmony_ci};
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_cistruct nvif_ioctl_ntfy_put_v0 {
1238c2ecf20Sopenharmony_ci	/* nvif_ioctl ... */
1248c2ecf20Sopenharmony_ci	__u8  version;
1258c2ecf20Sopenharmony_ci	__u8  index;
1268c2ecf20Sopenharmony_ci	__u8  pad02[6];
1278c2ecf20Sopenharmony_ci};
1288c2ecf20Sopenharmony_ci
1298c2ecf20Sopenharmony_cistruct nvif_ioctl_mthd_v0 {
1308c2ecf20Sopenharmony_ci	/* nvif_ioctl ... */
1318c2ecf20Sopenharmony_ci	__u8  version;
1328c2ecf20Sopenharmony_ci	__u8  method;
1338c2ecf20Sopenharmony_ci	__u8  pad02[6];
1348c2ecf20Sopenharmony_ci	__u8  data[];		/* method data (class.h) */
1358c2ecf20Sopenharmony_ci};
1368c2ecf20Sopenharmony_ci
1378c2ecf20Sopenharmony_ci#endif
138