Home | History | Annotate | Line # | Download | only in nvif
      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