xref: /netbsd-src/sys/external/bsd/drm2/dist/drm/nouveau/include/nvif/if000c.h (revision 41ec02673d281bbb3d38e6c78504ce6e30c228c1)
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