162306a36Sopenharmony_ci/* SPDX-License-Identifier: MIT */
262306a36Sopenharmony_ci#ifndef __NVIF_IOCTL_H__
362306a36Sopenharmony_ci#define __NVIF_IOCTL_H__
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#define NVIF_VERSION_LATEST                               0x0000000000000100ULL
662306a36Sopenharmony_ci
762306a36Sopenharmony_cistruct nvif_ioctl_v0 {
862306a36Sopenharmony_ci	__u8  version;
962306a36Sopenharmony_ci#define NVIF_IOCTL_V0_NOP                                                  0x00
1062306a36Sopenharmony_ci#define NVIF_IOCTL_V0_SCLASS                                               0x01
1162306a36Sopenharmony_ci#define NVIF_IOCTL_V0_NEW                                                  0x02
1262306a36Sopenharmony_ci#define NVIF_IOCTL_V0_DEL                                                  0x03
1362306a36Sopenharmony_ci#define NVIF_IOCTL_V0_MTHD                                                 0x04
1462306a36Sopenharmony_ci#define NVIF_IOCTL_V0_RD                                                   0x05
1562306a36Sopenharmony_ci#define NVIF_IOCTL_V0_WR                                                   0x06
1662306a36Sopenharmony_ci#define NVIF_IOCTL_V0_MAP                                                  0x07
1762306a36Sopenharmony_ci#define NVIF_IOCTL_V0_UNMAP                                                0x08
1862306a36Sopenharmony_ci	__u8  type;
1962306a36Sopenharmony_ci	__u8  pad02[4];
2062306a36Sopenharmony_ci#define NVIF_IOCTL_V0_OWNER_NVIF                                           0x00
2162306a36Sopenharmony_ci#define NVIF_IOCTL_V0_OWNER_ANY                                            0xff
2262306a36Sopenharmony_ci	__u8  owner;
2362306a36Sopenharmony_ci#define NVIF_IOCTL_V0_ROUTE_NVIF                                           0x00
2462306a36Sopenharmony_ci#define NVIF_IOCTL_V0_ROUTE_HIDDEN                                         0xff
2562306a36Sopenharmony_ci	__u8  route;
2662306a36Sopenharmony_ci	__u64 token;
2762306a36Sopenharmony_ci	__u64 object;
2862306a36Sopenharmony_ci	__u8  data[];		/* ioctl data (below) */
2962306a36Sopenharmony_ci};
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_cistruct nvif_ioctl_nop_v0 {
3262306a36Sopenharmony_ci	__u64 version;
3362306a36Sopenharmony_ci};
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_cistruct nvif_ioctl_sclass_v0 {
3662306a36Sopenharmony_ci	/* nvif_ioctl ... */
3762306a36Sopenharmony_ci	__u8  version;
3862306a36Sopenharmony_ci	__u8  count;
3962306a36Sopenharmony_ci	__u8  pad02[6];
4062306a36Sopenharmony_ci	struct nvif_ioctl_sclass_oclass_v0 {
4162306a36Sopenharmony_ci		__s32 oclass;
4262306a36Sopenharmony_ci		__s16 minver;
4362306a36Sopenharmony_ci		__s16 maxver;
4462306a36Sopenharmony_ci	} oclass[];
4562306a36Sopenharmony_ci};
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_cistruct nvif_ioctl_new_v0 {
4862306a36Sopenharmony_ci	/* nvif_ioctl ... */
4962306a36Sopenharmony_ci	__u8  version;
5062306a36Sopenharmony_ci	__u8  pad01[6];
5162306a36Sopenharmony_ci	__u8  route;
5262306a36Sopenharmony_ci	__u64 token;
5362306a36Sopenharmony_ci	__u64 object;
5462306a36Sopenharmony_ci	__u32 handle;
5562306a36Sopenharmony_ci	__s32 oclass;
5662306a36Sopenharmony_ci	__u8  data[];		/* class data (class.h) */
5762306a36Sopenharmony_ci};
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_cistruct nvif_ioctl_del {
6062306a36Sopenharmony_ci};
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_cistruct nvif_ioctl_mthd_v0 {
6362306a36Sopenharmony_ci	/* nvif_ioctl ... */
6462306a36Sopenharmony_ci	__u8  version;
6562306a36Sopenharmony_ci	__u8  method;
6662306a36Sopenharmony_ci	__u8  pad02[6];
6762306a36Sopenharmony_ci	__u8  data[];		/* method data (class.h) */
6862306a36Sopenharmony_ci};
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_cistruct nvif_ioctl_rd_v0 {
7162306a36Sopenharmony_ci	/* nvif_ioctl ... */
7262306a36Sopenharmony_ci	__u8  version;
7362306a36Sopenharmony_ci	__u8  size;
7462306a36Sopenharmony_ci	__u8  pad02[2];
7562306a36Sopenharmony_ci	__u32 data;
7662306a36Sopenharmony_ci	__u64 addr;
7762306a36Sopenharmony_ci};
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_cistruct nvif_ioctl_wr_v0 {
8062306a36Sopenharmony_ci	/* nvif_ioctl ... */
8162306a36Sopenharmony_ci	__u8  version;
8262306a36Sopenharmony_ci	__u8  size;
8362306a36Sopenharmony_ci	__u8  pad02[2];
8462306a36Sopenharmony_ci	__u32 data;
8562306a36Sopenharmony_ci	__u64 addr;
8662306a36Sopenharmony_ci};
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_cistruct nvif_ioctl_map_v0 {
8962306a36Sopenharmony_ci	/* nvif_ioctl ... */
9062306a36Sopenharmony_ci	__u8  version;
9162306a36Sopenharmony_ci#define NVIF_IOCTL_MAP_V0_IO                                               0x00
9262306a36Sopenharmony_ci#define NVIF_IOCTL_MAP_V0_VA                                               0x01
9362306a36Sopenharmony_ci	__u8  type;
9462306a36Sopenharmony_ci	__u8  pad02[6];
9562306a36Sopenharmony_ci	__u64 handle;
9662306a36Sopenharmony_ci	__u64 length;
9762306a36Sopenharmony_ci	__u8  data[];
9862306a36Sopenharmony_ci};
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_cistruct nvif_ioctl_unmap {
10162306a36Sopenharmony_ci};
10262306a36Sopenharmony_ci#endif
103