162306a36Sopenharmony_ci#ifndef __NVIF_IF000C_H__
262306a36Sopenharmony_ci#define __NVIF_IF000C_H__
362306a36Sopenharmony_cistruct nvif_vmm_v0 {
462306a36Sopenharmony_ci	__u8  version;
562306a36Sopenharmony_ci	__u8  page_nr;
662306a36Sopenharmony_ci#define NVIF_VMM_V0_TYPE_UNMANAGED                                         0x00
762306a36Sopenharmony_ci#define NVIF_VMM_V0_TYPE_MANAGED                                           0x01
862306a36Sopenharmony_ci#define NVIF_VMM_V0_TYPE_RAW                                               0x02
962306a36Sopenharmony_ci	__u8  type;
1062306a36Sopenharmony_ci	__u8  pad03[5];
1162306a36Sopenharmony_ci	__u64 addr;
1262306a36Sopenharmony_ci	__u64 size;
1362306a36Sopenharmony_ci	__u8  data[];
1462306a36Sopenharmony_ci};
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#define NVIF_VMM_V0_PAGE                                                   0x00
1762306a36Sopenharmony_ci#define NVIF_VMM_V0_GET                                                    0x01
1862306a36Sopenharmony_ci#define NVIF_VMM_V0_PUT                                                    0x02
1962306a36Sopenharmony_ci#define NVIF_VMM_V0_MAP                                                    0x03
2062306a36Sopenharmony_ci#define NVIF_VMM_V0_UNMAP                                                  0x04
2162306a36Sopenharmony_ci#define NVIF_VMM_V0_PFNMAP                                                 0x05
2262306a36Sopenharmony_ci#define NVIF_VMM_V0_PFNCLR                                                 0x06
2362306a36Sopenharmony_ci#define NVIF_VMM_V0_RAW                                                    0x07
2462306a36Sopenharmony_ci#define NVIF_VMM_V0_MTHD(i)                                         ((i) + 0x80)
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_cistruct nvif_vmm_page_v0 {
2762306a36Sopenharmony_ci	__u8  version;
2862306a36Sopenharmony_ci	__u8  index;
2962306a36Sopenharmony_ci	__u8  shift;
3062306a36Sopenharmony_ci	__u8  sparse;
3162306a36Sopenharmony_ci	__u8  vram;
3262306a36Sopenharmony_ci	__u8  host;
3362306a36Sopenharmony_ci	__u8  comp;
3462306a36Sopenharmony_ci	__u8  pad07[1];
3562306a36Sopenharmony_ci};
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_cistruct nvif_vmm_get_v0 {
3862306a36Sopenharmony_ci	__u8  version;
3962306a36Sopenharmony_ci#define NVIF_VMM_GET_V0_ADDR                                               0x00
4062306a36Sopenharmony_ci#define NVIF_VMM_GET_V0_PTES                                               0x01
4162306a36Sopenharmony_ci#define NVIF_VMM_GET_V0_LAZY	                                           0x02
4262306a36Sopenharmony_ci	__u8  type;
4362306a36Sopenharmony_ci	__u8  sparse;
4462306a36Sopenharmony_ci	__u8  page;
4562306a36Sopenharmony_ci	__u8  align;
4662306a36Sopenharmony_ci	__u8  pad05[3];
4762306a36Sopenharmony_ci	__u64 size;
4862306a36Sopenharmony_ci	__u64 addr;
4962306a36Sopenharmony_ci};
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_cistruct nvif_vmm_put_v0 {
5262306a36Sopenharmony_ci	__u8  version;
5362306a36Sopenharmony_ci	__u8  pad01[7];
5462306a36Sopenharmony_ci	__u64 addr;
5562306a36Sopenharmony_ci};
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_cistruct nvif_vmm_map_v0 {
5862306a36Sopenharmony_ci	__u8  version;
5962306a36Sopenharmony_ci	__u8  pad01[7];
6062306a36Sopenharmony_ci	__u64 addr;
6162306a36Sopenharmony_ci	__u64 size;
6262306a36Sopenharmony_ci	__u64 memory;
6362306a36Sopenharmony_ci	__u64 offset;
6462306a36Sopenharmony_ci	__u8  data[];
6562306a36Sopenharmony_ci};
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_cistruct nvif_vmm_unmap_v0 {
6862306a36Sopenharmony_ci	__u8  version;
6962306a36Sopenharmony_ci	__u8  pad01[7];
7062306a36Sopenharmony_ci	__u64 addr;
7162306a36Sopenharmony_ci};
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_cistruct nvif_vmm_raw_v0 {
7462306a36Sopenharmony_ci	__u8 version;
7562306a36Sopenharmony_ci#define NVIF_VMM_RAW_V0_GET	0x0
7662306a36Sopenharmony_ci#define NVIF_VMM_RAW_V0_PUT	0x1
7762306a36Sopenharmony_ci#define NVIF_VMM_RAW_V0_MAP	0x2
7862306a36Sopenharmony_ci#define NVIF_VMM_RAW_V0_UNMAP	0x3
7962306a36Sopenharmony_ci#define NVIF_VMM_RAW_V0_SPARSE	0x4
8062306a36Sopenharmony_ci	__u8  op;
8162306a36Sopenharmony_ci	__u8  sparse;
8262306a36Sopenharmony_ci	__u8  ref;
8362306a36Sopenharmony_ci	__u8  shift;
8462306a36Sopenharmony_ci	__u32 argc;
8562306a36Sopenharmony_ci	__u8  pad01[7];
8662306a36Sopenharmony_ci	__u64 addr;
8762306a36Sopenharmony_ci	__u64 size;
8862306a36Sopenharmony_ci	__u64 offset;
8962306a36Sopenharmony_ci	__u64 memory;
9062306a36Sopenharmony_ci	__u64 argv;
9162306a36Sopenharmony_ci};
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_cistruct nvif_vmm_pfnmap_v0 {
9462306a36Sopenharmony_ci	__u8  version;
9562306a36Sopenharmony_ci	__u8  page;
9662306a36Sopenharmony_ci	__u8  pad02[6];
9762306a36Sopenharmony_ci	__u64 addr;
9862306a36Sopenharmony_ci	__u64 size;
9962306a36Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_ADDR                           0xfffffffffffff000ULL
10062306a36Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_ADDR_SHIFT                                        12
10162306a36Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_APER                           0x00000000000000f0ULL
10262306a36Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_HOST                           0x0000000000000000ULL
10362306a36Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_VRAM                           0x0000000000000010ULL
10462306a36Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_A				  0x0000000000000004ULL
10562306a36Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_W                              0x0000000000000002ULL
10662306a36Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_V                              0x0000000000000001ULL
10762306a36Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_NONE                           0x0000000000000000ULL
10862306a36Sopenharmony_ci	__u64 phys[];
10962306a36Sopenharmony_ci};
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_cistruct nvif_vmm_pfnclr_v0 {
11262306a36Sopenharmony_ci	__u8  version;
11362306a36Sopenharmony_ci	__u8  pad01[7];
11462306a36Sopenharmony_ci	__u64 addr;
11562306a36Sopenharmony_ci	__u64 size;
11662306a36Sopenharmony_ci};
11762306a36Sopenharmony_ci#endif
118