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