4 * NT AGP bus driver interface
6 * This file is part of the w32api package.
9 * Created by Gregor Anich <blight@blight.eu.org>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
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.
29 DEFINE_GUID(GUID_AGP_BUS_INTERFACE_STANDARD
, 0x2ef74803, 0xd8d3, 0x11d1, 0x9c, 0xaa, 0x00, 0xc0, 0xf0, 0x16, 0x56, 0x36);
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
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
42 #define AGP_SET_RATE_DISABLE_SBA 0x00010000
43 #define AGP_SET_RATE_DISABLE_FW 0x00020000
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
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))
55 (NTAPI
*PAGP_BUS_SET_RATE
)(
60 (NTAPI
*PAGP_BUS_RESERVE_MEMORY
)(
62 IN ULONG NumberOfPages
,
63 IN MEMORY_CACHING_TYPE MemoryType
,
65 OUT PHYSICAL_ADDRESS
*PhysicalAddress OPTIONAL
);
68 (NTAPI
*PAGP_BUS_RELEASE_MEMORY
)(
73 (NTAPI
*PAGP_BUS_COMMIT_MEMORY
)(
76 IN ULONG NumberOfPages
,
77 IN ULONG OffsetInPages
,
78 IN OUT PMDL Mdl OPTIONAL
,
79 OUT PHYSICAL_ADDRESS
*MemoryBase
);
82 (NTAPI
*PAGP_BUS_FREE_MEMORY
)(
85 IN ULONG NumberOfPages
,
86 IN ULONG OffsetInPages
);
89 (NTAPI
*PAGP_GET_MAPPED_PAGES
)(
92 IN ULONG NumberOfPages
,
93 IN ULONG OffsetInPages
,
97 (NTAPI
*PAGP_MAP_MEMORY
)(
100 IN ULONG NumberOfPages
,
101 IN ULONG OffsetInPages
,
103 OUT PHYSICAL_ADDRESS
*MemoryBase
);
106 (NTAPI
*PAGP_UNMAP_MEMORY
)(
109 IN ULONG NumberOfPages
,
110 IN ULONG OffsetInPages
,
114 (NTAPI
*PAGP_FLUSH_CHIPSET_CACHES
)(
115 IN PVOID AgpContext
);
118 (NTAPI
*PAGP_CHECK_INTEGRITY
)(
119 IN PVOID AgpContext
);
122 (NTAPI
*PAGP_MAP_MEMORY_EX
)(
125 IN ULONG NumberOfPages
,
126 IN ULONG OffsetInPages
,
128 IN MEMORY_CACHING_TYPE
*CacheTypeOverride OPTIONAL
,
129 OUT PHYSICAL_ADDRESS
*MemoryBase
);
132 (NTAPI
*PAGP_UNMAP_MEMORY_EX
)(
135 IN ULONG NumberOfPages
,
136 IN ULONG OffsetInPages
,
140 (NTAPI
*PAGP_FLUSH_GART_TLB
)(
141 IN PVOID AgpContext
);
144 (NTAPI
*PAGP_CHECK_GUARD_PAGE
)(
147 IN ULONG ULongsToCheck
);
149 typedef struct _AGP_INFO_COMMON
{
150 PCI_AGP_CAPABILITY MasterCap
;
151 PCI_AGP_CAPABILITY TargetCap
;
158 BOOLEAN GuardPageCorruption
;
159 } AGP_INFO_COMMON
, *PAGP_INFO_COMMON
;
161 typedef struct _AGP_INFO_DRIVER
{
164 PHYSICAL_ADDRESS ApertureStart
;
165 PHYSICAL_ADDRESS GartTranslationTable
;
166 ULONG ApertureLength
;
167 } AGP_INFO_DRIVER
, *PAGP_INFO_DRIVER
;
169 typedef struct _AGP_INFO
{
170 AGP_INFO_COMMON CommonInfo
;
171 AGP_INFO_DRIVER DriverInfo
;
172 } AGP_INFO
, *PAGP_INFO
;
175 (NTAPI
*PAGP_GET_INFO
)(
177 OUT PAGP_INFO AgpInfo
);
179 typedef struct _AGP_BUS_INTERFACE_STANDARD
{
183 PINTERFACE_REFERENCE InterfaceReference
;
184 PINTERFACE_DEREFERENCE InterfaceDereference
;
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
;
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
;