1 /* $NetBSD: if000c.h,v 1.2 2021/12/18 23:45:33 riastradh Exp $ */ 2 3 #ifndef __NVIF_IF000C_H__ 4 #define __NVIF_IF000C_H__ 5 struct nvif_vmm_v0 { 6 __u8 version; 7 __u8 page_nr; 8 __u8 managed; 9 __u8 pad03[5]; 10 __u64 addr; 11 __u64 size; 12 __u8 data[]; 13 }; 14 15 #define NVIF_VMM_V0_PAGE 0x00 16 #define NVIF_VMM_V0_GET 0x01 17 #define NVIF_VMM_V0_PUT 0x02 18 #define NVIF_VMM_V0_MAP 0x03 19 #define NVIF_VMM_V0_UNMAP 0x04 20 #define NVIF_VMM_V0_PFNMAP 0x05 21 #define NVIF_VMM_V0_PFNCLR 0x06 22 #define NVIF_VMM_V0_MTHD(i) ((i) + 0x80) 23 24 struct nvif_vmm_page_v0 { 25 __u8 version; 26 __u8 index; 27 __u8 shift; 28 __u8 sparse; 29 __u8 vram; 30 __u8 host; 31 __u8 comp; 32 __u8 pad07[1]; 33 }; 34 35 struct nvif_vmm_get_v0 { 36 __u8 version; 37 #define NVIF_VMM_GET_V0_ADDR 0x00 38 #define NVIF_VMM_GET_V0_PTES 0x01 39 #define NVIF_VMM_GET_V0_LAZY 0x02 40 __u8 type; 41 __u8 sparse; 42 __u8 page; 43 __u8 align; 44 __u8 pad05[3]; 45 __u64 size; 46 __u64 addr; 47 }; 48 49 struct nvif_vmm_put_v0 { 50 __u8 version; 51 __u8 pad01[7]; 52 __u64 addr; 53 }; 54 55 struct nvif_vmm_map_v0 { 56 __u8 version; 57 __u8 pad01[7]; 58 __u64 addr; 59 __u64 size; 60 __u64 memory; 61 __u64 offset; 62 __u8 data[]; 63 }; 64 65 struct nvif_vmm_unmap_v0 { 66 __u8 version; 67 __u8 pad01[7]; 68 __u64 addr; 69 }; 70 71 struct nvif_vmm_pfnmap_v0 { 72 __u8 version; 73 __u8 page; 74 __u8 pad02[6]; 75 __u64 addr; 76 __u64 size; 77 #define NVIF_VMM_PFNMAP_V0_ADDR 0xfffffffffffff000ULL 78 #define NVIF_VMM_PFNMAP_V0_ADDR_SHIFT 12 79 #define NVIF_VMM_PFNMAP_V0_APER 0x00000000000000f0ULL 80 #define NVIF_VMM_PFNMAP_V0_HOST 0x0000000000000000ULL 81 #define NVIF_VMM_PFNMAP_V0_VRAM 0x0000000000000010ULL 82 #define NVIF_VMM_PFNMAP_V0_W 0x0000000000000002ULL 83 #define NVIF_VMM_PFNMAP_V0_V 0x0000000000000001ULL 84 #define NVIF_VMM_PFNMAP_V0_NONE 0x0000000000000000ULL 85 __u64 phys[]; 86 }; 87 88 struct nvif_vmm_pfnclr_v0 { 89 __u8 version; 90 __u8 pad01[7]; 91 __u64 addr; 92 __u64 size; 93 }; 94 #endif 95