Reintegrate header-work branch. Important changes include continued work on headers...
[reactos.git] / reactos / include / ddk / ntagp.h
1 /*
2 * ntagp.h
3 *
4 * NT AGP bus driver interface
5 *
6 * This file is part of the w32api package.
7 *
8 * Contributors:
9 * Created by Gregor Anich <blight@blight.eu.org>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23 #pragma once
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 DEFINE_GUID(GUID_AGP_BUS_INTERFACE_STANDARD, 0x2ef74803, 0xd8d3, 0x11d1, 0x9c, 0xaa, 0x00, 0xc0, 0xf0, 0x16, 0x56, 0x36);
30
31 #define AGP_BUS_INTERFACE_V1 1
32 #define AGP_BUS_INTERFACE_V2 2
33 #define AGP_BUS_INTERFACE_V3 3
34 #define AGP_BUS_INTERFACE_V4 4
35 #define AGP_BUS_INTERFACE_V5 5
36
37 /* Indicates wether the GART supports mapping of physical memory for the CPU */
38 #define AGP_CAPABILITIES_MAP_PHYSICAL 0x00000001
39 #define AGP_CAPABILITIES_CACHE_COHERENT 0x00000002
40 #define AGP_CAPABILITIES_REQUIRES_GPU_FLUSH 0x00000004
41
42 #define AGP_SET_RATE_DISABLE_SBA 0x00010000
43 #define AGP_SET_RATE_DISABLE_FW 0x00020000
44
45 #define AGP_GUARD_PAGE_CHECK_FIRST_ULONG 0x00000001
46 #define AGP_GUARD_PAGE_CHECK_USE_SAME_OFFSET 0x00000002
47 #define AGP_GUARD_PAGE_CHECK_DO_NOT_BUGCHECK 0x00000004
48
49 #define AGP_BUS_INTERFACE_V1_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD,SetRate))
50 #define AGP_BUS_INTERFACE_V2_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD, AgpSize))
51 #define AGP_BUS_INTERFACE_V3_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD, FlushChipsetCaches))
52 #define AGP_BUS_INTERFACE_V4_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD, MapMemoryEx))
53
54 typedef NTSTATUS
55 (NTAPI *PAGP_BUS_SET_RATE)(
56 IN PVOID AgpContext,
57 IN ULONG AgpRate);
58
59 typedef NTSTATUS
60 (NTAPI *PAGP_BUS_RESERVE_MEMORY)(
61 IN PVOID AgpContext,
62 IN ULONG NumberOfPages,
63 IN MEMORY_CACHING_TYPE MemoryType,
64 OUT PVOID *MapHandle,
65 OUT PHYSICAL_ADDRESS *PhysicalAddress OPTIONAL);
66
67 typedef NTSTATUS
68 (NTAPI *PAGP_BUS_RELEASE_MEMORY)(
69 IN PVOID AgpContext,
70 IN PVOID MapHandle);
71
72 typedef NTSTATUS
73 (NTAPI *PAGP_BUS_COMMIT_MEMORY)(
74 IN PVOID AgpContext,
75 IN PVOID MapHandle,
76 IN ULONG NumberOfPages,
77 IN ULONG OffsetInPages,
78 IN OUT PMDL Mdl OPTIONAL,
79 OUT PHYSICAL_ADDRESS *MemoryBase);
80
81 typedef NTSTATUS
82 (NTAPI *PAGP_BUS_FREE_MEMORY)(
83 IN PVOID AgpContext,
84 IN PVOID MapHandle,
85 IN ULONG NumberOfPages,
86 IN ULONG OffsetInPages);
87
88 typedef NTSTATUS
89 (NTAPI *PAGP_GET_MAPPED_PAGES)(
90 IN PVOID AgpContext,
91 IN PVOID MapHandle,
92 IN ULONG NumberOfPages,
93 IN ULONG OffsetInPages,
94 OUT PMDL Mdl);
95
96 typedef NTSTATUS
97 (NTAPI *PAGP_MAP_MEMORY)(
98 IN PVOID AgpContext,
99 IN PVOID MapHandle,
100 IN ULONG NumberOfPages,
101 IN ULONG OffsetInPages,
102 IN PMDL Mdl,
103 OUT PHYSICAL_ADDRESS *MemoryBase);
104
105 typedef NTSTATUS
106 (NTAPI *PAGP_UNMAP_MEMORY)(
107 IN PVOID AgpContext,
108 IN PVOID MapHandle,
109 IN ULONG NumberOfPages,
110 IN ULONG OffsetInPages,
111 IN PMDL Mdl);
112
113 typedef NTSTATUS
114 (NTAPI *PAGP_FLUSH_CHIPSET_CACHES)(
115 IN PVOID AgpContext);
116
117 typedef NTSTATUS
118 (NTAPI *PAGP_CHECK_INTEGRITY)(
119 IN PVOID AgpContext);
120
121 typedef NTSTATUS
122 (NTAPI *PAGP_MAP_MEMORY_EX)(
123 IN PVOID AgpContext,
124 IN PVOID MapHandle,
125 IN ULONG NumberOfPages,
126 IN ULONG OffsetInPages,
127 IN PMDL Mdl,
128 IN MEMORY_CACHING_TYPE *CacheTypeOverride OPTIONAL,
129 OUT PHYSICAL_ADDRESS *MemoryBase);
130
131 typedef NTSTATUS
132 (NTAPI *PAGP_UNMAP_MEMORY_EX)(
133 IN PVOID AgpContext,
134 IN PVOID MapHandle,
135 IN ULONG NumberOfPages,
136 IN ULONG OffsetInPages,
137 IN PMDL Mdl);
138
139 typedef NTSTATUS
140 (NTAPI *PAGP_FLUSH_GART_TLB)(
141 IN PVOID AgpContext);
142
143 typedef NTSTATUS
144 (NTAPI *PAGP_CHECK_GUARD_PAGE)(
145 IN PVOID AgpContext,
146 IN ULONG Flags,
147 IN ULONG ULongsToCheck);
148
149 typedef struct _AGP_INFO_COMMON {
150 PCI_AGP_CAPABILITY MasterCap;
151 PCI_AGP_CAPABILITY TargetCap;
152 USHORT DeviceId;
153 USHORT VendorId;
154 USHORT SubVendorId;
155 USHORT SubSystemId;
156 UCHAR HwRevisionId;
157 ULONG VerifierFlags;
158 BOOLEAN GuardPageCorruption;
159 } AGP_INFO_COMMON, *PAGP_INFO_COMMON;
160
161 typedef struct _AGP_INFO_DRIVER {
162 ULONG AGPReg1;
163 ULONG AGPReg2;
164 PHYSICAL_ADDRESS ApertureStart;
165 PHYSICAL_ADDRESS GartTranslationTable;
166 ULONG ApertureLength;
167 } AGP_INFO_DRIVER, *PAGP_INFO_DRIVER;
168
169 typedef struct _AGP_INFO {
170 AGP_INFO_COMMON CommonInfo;
171 AGP_INFO_DRIVER DriverInfo;
172 } AGP_INFO, *PAGP_INFO;
173
174 typedef VOID
175 (NTAPI *PAGP_GET_INFO)(
176 IN PVOID AgpContext,
177 OUT PAGP_INFO AgpInfo);
178
179 typedef struct _AGP_BUS_INTERFACE_STANDARD {
180 USHORT Size;
181 USHORT Version;
182 PVOID AgpContext;
183 PINTERFACE_REFERENCE InterfaceReference;
184 PINTERFACE_DEREFERENCE InterfaceDereference;
185 ULONG Capabilities;
186 PAGP_BUS_RESERVE_MEMORY ReserveMemory;
187 PAGP_BUS_RELEASE_MEMORY ReleaseMemory;
188 PAGP_BUS_COMMIT_MEMORY CommitMemory;
189 PAGP_BUS_FREE_MEMORY FreeMemory;
190 PAGP_GET_MAPPED_PAGES GetMappedPages;
191 PAGP_BUS_SET_RATE SetRate;
192 SIZE_T AgpSize;
193 PHYSICAL_ADDRESS AgpBase;
194 PHYSICAL_ADDRESS MaxPhysicalAddress;
195 PAGP_MAP_MEMORY MapMemory;
196 PAGP_UNMAP_MEMORY UnMapMemory;
197 PAGP_FLUSH_CHIPSET_CACHES FlushChipsetCaches;
198 PAGP_CHECK_INTEGRITY CheckIntegrity;
199 PAGP_MAP_MEMORY_EX MapMemoryEx;
200 PAGP_UNMAP_MEMORY_EX UnMapMemoryEx;
201 PAGP_FLUSH_GART_TLB FlushGartTLB;
202 PAGP_CHECK_GUARD_PAGE CheckGuardPage;
203 PAGP_GET_INFO GetAgpInfo;
204 } AGP_BUS_INTERFACE_STANDARD, *PAGP_BUS_INTERFACE_STANDARD;
205
206 #ifdef __cplusplus
207 }
208 #endif