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