18c2ecf20Sopenharmony_ci#ifndef __NVIF_IF000C_H__
28c2ecf20Sopenharmony_ci#define __NVIF_IF000C_H__
38c2ecf20Sopenharmony_cistruct nvif_vmm_v0 {
48c2ecf20Sopenharmony_ci	__u8  version;
58c2ecf20Sopenharmony_ci	__u8  page_nr;
68c2ecf20Sopenharmony_ci	__u8  managed;
78c2ecf20Sopenharmony_ci	__u8  pad03[5];
88c2ecf20Sopenharmony_ci	__u64 addr;
98c2ecf20Sopenharmony_ci	__u64 size;
108c2ecf20Sopenharmony_ci	__u8  data[];
118c2ecf20Sopenharmony_ci};
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci#define NVIF_VMM_V0_PAGE                                                   0x00
148c2ecf20Sopenharmony_ci#define NVIF_VMM_V0_GET                                                    0x01
158c2ecf20Sopenharmony_ci#define NVIF_VMM_V0_PUT                                                    0x02
168c2ecf20Sopenharmony_ci#define NVIF_VMM_V0_MAP                                                    0x03
178c2ecf20Sopenharmony_ci#define NVIF_VMM_V0_UNMAP                                                  0x04
188c2ecf20Sopenharmony_ci#define NVIF_VMM_V0_PFNMAP                                                 0x05
198c2ecf20Sopenharmony_ci#define NVIF_VMM_V0_PFNCLR                                                 0x06
208c2ecf20Sopenharmony_ci#define NVIF_VMM_V0_MTHD(i)                                         ((i) + 0x80)
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_cistruct nvif_vmm_page_v0 {
238c2ecf20Sopenharmony_ci	__u8  version;
248c2ecf20Sopenharmony_ci	__u8  index;
258c2ecf20Sopenharmony_ci	__u8  shift;
268c2ecf20Sopenharmony_ci	__u8  sparse;
278c2ecf20Sopenharmony_ci	__u8  vram;
288c2ecf20Sopenharmony_ci	__u8  host;
298c2ecf20Sopenharmony_ci	__u8  comp;
308c2ecf20Sopenharmony_ci	__u8  pad07[1];
318c2ecf20Sopenharmony_ci};
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_cistruct nvif_vmm_get_v0 {
348c2ecf20Sopenharmony_ci	__u8  version;
358c2ecf20Sopenharmony_ci#define NVIF_VMM_GET_V0_ADDR                                               0x00
368c2ecf20Sopenharmony_ci#define NVIF_VMM_GET_V0_PTES                                               0x01
378c2ecf20Sopenharmony_ci#define NVIF_VMM_GET_V0_LAZY	                                           0x02
388c2ecf20Sopenharmony_ci	__u8  type;
398c2ecf20Sopenharmony_ci	__u8  sparse;
408c2ecf20Sopenharmony_ci	__u8  page;
418c2ecf20Sopenharmony_ci	__u8  align;
428c2ecf20Sopenharmony_ci	__u8  pad05[3];
438c2ecf20Sopenharmony_ci	__u64 size;
448c2ecf20Sopenharmony_ci	__u64 addr;
458c2ecf20Sopenharmony_ci};
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_cistruct nvif_vmm_put_v0 {
488c2ecf20Sopenharmony_ci	__u8  version;
498c2ecf20Sopenharmony_ci	__u8  pad01[7];
508c2ecf20Sopenharmony_ci	__u64 addr;
518c2ecf20Sopenharmony_ci};
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_cistruct nvif_vmm_map_v0 {
548c2ecf20Sopenharmony_ci	__u8  version;
558c2ecf20Sopenharmony_ci	__u8  pad01[7];
568c2ecf20Sopenharmony_ci	__u64 addr;
578c2ecf20Sopenharmony_ci	__u64 size;
588c2ecf20Sopenharmony_ci	__u64 memory;
598c2ecf20Sopenharmony_ci	__u64 offset;
608c2ecf20Sopenharmony_ci	__u8  data[];
618c2ecf20Sopenharmony_ci};
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_cistruct nvif_vmm_unmap_v0 {
648c2ecf20Sopenharmony_ci	__u8  version;
658c2ecf20Sopenharmony_ci	__u8  pad01[7];
668c2ecf20Sopenharmony_ci	__u64 addr;
678c2ecf20Sopenharmony_ci};
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_cistruct nvif_vmm_pfnmap_v0 {
708c2ecf20Sopenharmony_ci	__u8  version;
718c2ecf20Sopenharmony_ci	__u8  page;
728c2ecf20Sopenharmony_ci	__u8  pad02[6];
738c2ecf20Sopenharmony_ci	__u64 addr;
748c2ecf20Sopenharmony_ci	__u64 size;
758c2ecf20Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_ADDR                           0xfffffffffffff000ULL
768c2ecf20Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_ADDR_SHIFT                                        12
778c2ecf20Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_APER                           0x00000000000000f0ULL
788c2ecf20Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_HOST                           0x0000000000000000ULL
798c2ecf20Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_VRAM                           0x0000000000000010ULL
808c2ecf20Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_W                              0x0000000000000002ULL
818c2ecf20Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_V                              0x0000000000000001ULL
828c2ecf20Sopenharmony_ci#define NVIF_VMM_PFNMAP_V0_NONE                           0x0000000000000000ULL
838c2ecf20Sopenharmony_ci	__u64 phys[];
848c2ecf20Sopenharmony_ci};
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_cistruct nvif_vmm_pfnclr_v0 {
878c2ecf20Sopenharmony_ci	__u8  version;
888c2ecf20Sopenharmony_ci	__u8  pad01[7];
898c2ecf20Sopenharmony_ci	__u64 addr;
908c2ecf20Sopenharmony_ci	__u64 size;
918c2ecf20Sopenharmony_ci};
928c2ecf20Sopenharmony_ci#endif
93