0001 #ifndef __NVIF_IF000C_H__
0002 #define __NVIF_IF000C_H__
0003 struct nvif_vmm_v0 {
0004 __u8 version;
0005 __u8 page_nr;
0006 __u8 managed;
0007 __u8 pad03[5];
0008 __u64 addr;
0009 __u64 size;
0010 __u8 data[];
0011 };
0012
0013 #define NVIF_VMM_V0_PAGE 0x00
0014 #define NVIF_VMM_V0_GET 0x01
0015 #define NVIF_VMM_V0_PUT 0x02
0016 #define NVIF_VMM_V0_MAP 0x03
0017 #define NVIF_VMM_V0_UNMAP 0x04
0018 #define NVIF_VMM_V0_PFNMAP 0x05
0019 #define NVIF_VMM_V0_PFNCLR 0x06
0020 #define NVIF_VMM_V0_MTHD(i) ((i) + 0x80)
0021
0022 struct nvif_vmm_page_v0 {
0023 __u8 version;
0024 __u8 index;
0025 __u8 shift;
0026 __u8 sparse;
0027 __u8 vram;
0028 __u8 host;
0029 __u8 comp;
0030 __u8 pad07[1];
0031 };
0032
0033 struct nvif_vmm_get_v0 {
0034 __u8 version;
0035 #define NVIF_VMM_GET_V0_ADDR 0x00
0036 #define NVIF_VMM_GET_V0_PTES 0x01
0037 #define NVIF_VMM_GET_V0_LAZY 0x02
0038 __u8 type;
0039 __u8 sparse;
0040 __u8 page;
0041 __u8 align;
0042 __u8 pad05[3];
0043 __u64 size;
0044 __u64 addr;
0045 };
0046
0047 struct nvif_vmm_put_v0 {
0048 __u8 version;
0049 __u8 pad01[7];
0050 __u64 addr;
0051 };
0052
0053 struct nvif_vmm_map_v0 {
0054 __u8 version;
0055 __u8 pad01[7];
0056 __u64 addr;
0057 __u64 size;
0058 __u64 memory;
0059 __u64 offset;
0060 __u8 data[];
0061 };
0062
0063 struct nvif_vmm_unmap_v0 {
0064 __u8 version;
0065 __u8 pad01[7];
0066 __u64 addr;
0067 };
0068
0069 struct nvif_vmm_pfnmap_v0 {
0070 __u8 version;
0071 __u8 page;
0072 __u8 pad02[6];
0073 __u64 addr;
0074 __u64 size;
0075 #define NVIF_VMM_PFNMAP_V0_ADDR 0xfffffffffffff000ULL
0076 #define NVIF_VMM_PFNMAP_V0_ADDR_SHIFT 12
0077 #define NVIF_VMM_PFNMAP_V0_APER 0x00000000000000f0ULL
0078 #define NVIF_VMM_PFNMAP_V0_HOST 0x0000000000000000ULL
0079 #define NVIF_VMM_PFNMAP_V0_VRAM 0x0000000000000010ULL
0080 #define NVIF_VMM_PFNMAP_V0_A 0x0000000000000004ULL
0081 #define NVIF_VMM_PFNMAP_V0_W 0x0000000000000002ULL
0082 #define NVIF_VMM_PFNMAP_V0_V 0x0000000000000001ULL
0083 #define NVIF_VMM_PFNMAP_V0_NONE 0x0000000000000000ULL
0084 __u64 phys[];
0085 };
0086
0087 struct nvif_vmm_pfnclr_v0 {
0088 __u8 version;
0089 __u8 pad01[7];
0090 __u64 addr;
0091 __u64 size;
0092 };
0093 #endif