mirror of
https://github.com/reactos/reactos.git
synced 2024-11-09 08:08:38 +00:00
b819608ed8
svn path=/branches/condrv_restructure/; revision=63104
208 lines
5.5 KiB
C
208 lines
5.5 KiB
C
/*
|
|
* ntagp.h
|
|
*
|
|
* NT AGP bus driver interface
|
|
*
|
|
* This file is part of the w32api package.
|
|
*
|
|
* Contributors:
|
|
* Created by Gregor Anich <blight@blight.eu.org>
|
|
*
|
|
* THIS SOFTWARE IS NOT COPYRIGHTED
|
|
*
|
|
* This source code is offered for use in the public domain. You may
|
|
* use, modify or distribute it freely.
|
|
*
|
|
* This code is distributed in the hope that it will be useful but
|
|
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
|
* DISCLAIMED. This includes but is not limited to warranties of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
DEFINE_GUID(GUID_AGP_BUS_INTERFACE_STANDARD, 0x2ef74803, 0xd8d3, 0x11d1, 0x9c, 0xaa, 0x00, 0xc0, 0xf0, 0x16, 0x56, 0x36);
|
|
|
|
#define AGP_BUS_INTERFACE_V1 1
|
|
#define AGP_BUS_INTERFACE_V2 2
|
|
#define AGP_BUS_INTERFACE_V3 3
|
|
#define AGP_BUS_INTERFACE_V4 4
|
|
#define AGP_BUS_INTERFACE_V5 5
|
|
|
|
/* Indicates wether the GART supports mapping of physical memory for the CPU */
|
|
#define AGP_CAPABILITIES_MAP_PHYSICAL 0x00000001
|
|
#define AGP_CAPABILITIES_CACHE_COHERENT 0x00000002
|
|
#define AGP_CAPABILITIES_REQUIRES_GPU_FLUSH 0x00000004
|
|
|
|
#define AGP_SET_RATE_DISABLE_SBA 0x00010000
|
|
#define AGP_SET_RATE_DISABLE_FW 0x00020000
|
|
|
|
#define AGP_GUARD_PAGE_CHECK_FIRST_ULONG 0x00000001
|
|
#define AGP_GUARD_PAGE_CHECK_USE_SAME_OFFSET 0x00000002
|
|
#define AGP_GUARD_PAGE_CHECK_DO_NOT_BUGCHECK 0x00000004
|
|
|
|
#define AGP_BUS_INTERFACE_V1_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD,SetRate))
|
|
#define AGP_BUS_INTERFACE_V2_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD, AgpSize))
|
|
#define AGP_BUS_INTERFACE_V3_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD, FlushChipsetCaches))
|
|
#define AGP_BUS_INTERFACE_V4_SIZE (FIELD_OFFSET(AGP_BUS_INTERFACE_STANDARD, MapMemoryEx))
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_BUS_SET_RATE)(
|
|
IN PVOID AgpContext,
|
|
IN ULONG AgpRate);
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_BUS_RESERVE_MEMORY)(
|
|
IN PVOID AgpContext,
|
|
IN ULONG NumberOfPages,
|
|
IN MEMORY_CACHING_TYPE MemoryType,
|
|
OUT PVOID *MapHandle,
|
|
OUT PHYSICAL_ADDRESS *PhysicalAddress OPTIONAL);
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_BUS_RELEASE_MEMORY)(
|
|
IN PVOID AgpContext,
|
|
IN PVOID MapHandle);
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_BUS_COMMIT_MEMORY)(
|
|
IN PVOID AgpContext,
|
|
IN PVOID MapHandle,
|
|
IN ULONG NumberOfPages,
|
|
IN ULONG OffsetInPages,
|
|
IN OUT PMDL Mdl OPTIONAL,
|
|
OUT PHYSICAL_ADDRESS *MemoryBase);
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_BUS_FREE_MEMORY)(
|
|
IN PVOID AgpContext,
|
|
IN PVOID MapHandle,
|
|
IN ULONG NumberOfPages,
|
|
IN ULONG OffsetInPages);
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_GET_MAPPED_PAGES)(
|
|
IN PVOID AgpContext,
|
|
IN PVOID MapHandle,
|
|
IN ULONG NumberOfPages,
|
|
IN ULONG OffsetInPages,
|
|
OUT PMDL Mdl);
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_MAP_MEMORY)(
|
|
IN PVOID AgpContext,
|
|
IN PVOID MapHandle,
|
|
IN ULONG NumberOfPages,
|
|
IN ULONG OffsetInPages,
|
|
IN PMDL Mdl,
|
|
OUT PHYSICAL_ADDRESS *MemoryBase);
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_UNMAP_MEMORY)(
|
|
IN PVOID AgpContext,
|
|
IN PVOID MapHandle,
|
|
IN ULONG NumberOfPages,
|
|
IN ULONG OffsetInPages,
|
|
IN PMDL Mdl);
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_FLUSH_CHIPSET_CACHES)(
|
|
IN PVOID AgpContext);
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_CHECK_INTEGRITY)(
|
|
IN PVOID AgpContext);
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_MAP_MEMORY_EX)(
|
|
IN PVOID AgpContext,
|
|
IN PVOID MapHandle,
|
|
IN ULONG NumberOfPages,
|
|
IN ULONG OffsetInPages,
|
|
IN PMDL Mdl,
|
|
IN MEMORY_CACHING_TYPE *CacheTypeOverride OPTIONAL,
|
|
OUT PHYSICAL_ADDRESS *MemoryBase);
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_UNMAP_MEMORY_EX)(
|
|
IN PVOID AgpContext,
|
|
IN PVOID MapHandle,
|
|
IN ULONG NumberOfPages,
|
|
IN ULONG OffsetInPages,
|
|
IN PMDL Mdl);
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_FLUSH_GART_TLB)(
|
|
IN PVOID AgpContext);
|
|
|
|
typedef NTSTATUS
|
|
(NTAPI *PAGP_CHECK_GUARD_PAGE)(
|
|
IN PVOID AgpContext,
|
|
IN ULONG Flags,
|
|
IN ULONG ULongsToCheck);
|
|
|
|
typedef struct _AGP_INFO_COMMON {
|
|
PCI_AGP_CAPABILITY MasterCap;
|
|
PCI_AGP_CAPABILITY TargetCap;
|
|
USHORT DeviceId;
|
|
USHORT VendorId;
|
|
USHORT SubVendorId;
|
|
USHORT SubSystemId;
|
|
UCHAR HwRevisionId;
|
|
ULONG VerifierFlags;
|
|
BOOLEAN GuardPageCorruption;
|
|
} AGP_INFO_COMMON, *PAGP_INFO_COMMON;
|
|
|
|
typedef struct _AGP_INFO_DRIVER {
|
|
ULONG AGPReg1;
|
|
ULONG AGPReg2;
|
|
PHYSICAL_ADDRESS ApertureStart;
|
|
PHYSICAL_ADDRESS GartTranslationTable;
|
|
ULONG ApertureLength;
|
|
} AGP_INFO_DRIVER, *PAGP_INFO_DRIVER;
|
|
|
|
typedef struct _AGP_INFO {
|
|
AGP_INFO_COMMON CommonInfo;
|
|
AGP_INFO_DRIVER DriverInfo;
|
|
} AGP_INFO, *PAGP_INFO;
|
|
|
|
typedef VOID
|
|
(NTAPI *PAGP_GET_INFO)(
|
|
IN PVOID AgpContext,
|
|
OUT PAGP_INFO AgpInfo);
|
|
|
|
typedef struct _AGP_BUS_INTERFACE_STANDARD {
|
|
USHORT Size;
|
|
USHORT Version;
|
|
PVOID AgpContext;
|
|
PINTERFACE_REFERENCE InterfaceReference;
|
|
PINTERFACE_DEREFERENCE InterfaceDereference;
|
|
ULONG Capabilities;
|
|
PAGP_BUS_RESERVE_MEMORY ReserveMemory;
|
|
PAGP_BUS_RELEASE_MEMORY ReleaseMemory;
|
|
PAGP_BUS_COMMIT_MEMORY CommitMemory;
|
|
PAGP_BUS_FREE_MEMORY FreeMemory;
|
|
PAGP_GET_MAPPED_PAGES GetMappedPages;
|
|
PAGP_BUS_SET_RATE SetRate;
|
|
SIZE_T AgpSize;
|
|
PHYSICAL_ADDRESS AgpBase;
|
|
PHYSICAL_ADDRESS MaxPhysicalAddress;
|
|
PAGP_MAP_MEMORY MapMemory;
|
|
PAGP_UNMAP_MEMORY UnMapMemory;
|
|
PAGP_FLUSH_CHIPSET_CACHES FlushChipsetCaches;
|
|
PAGP_CHECK_INTEGRITY CheckIntegrity;
|
|
PAGP_MAP_MEMORY_EX MapMemoryEx;
|
|
PAGP_UNMAP_MEMORY_EX UnMapMemoryEx;
|
|
PAGP_FLUSH_GART_TLB FlushGartTLB;
|
|
PAGP_CHECK_GUARD_PAGE CheckGuardPage;
|
|
PAGP_GET_INFO GetAgpInfo;
|
|
} AGP_BUS_INTERFACE_STANDARD, *PAGP_BUS_INTERFACE_STANDARD;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|