3 Copyright (c) Alex Ionescu. All rights reserved.
11 Type definitions for the HAL.
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
27 #ifndef NTOS_MODE_USER
30 // HalShutdownSystem Types
32 typedef enum _FIRMWARE_REENTRY
38 HalInteractiveModeRoutine
,
40 } FIRMWARE_REENTRY
, *PFIRMWARE_REENTRY
;
43 // HAL Private function Types
47 (FASTCALL
*pHalHandlerForConfigSpace
)(
48 IN BUS_DATA_TYPE ConfigSpace
,
54 (NTAPI
*PINSTALL_BUS_HANDLER
)(
60 (NTAPI
*pHalRegisterBusHandler
)(
61 IN INTERFACE_TYPE InterfaceType
,
62 IN BUS_DATA_TYPE ConfigSpace
,
64 IN INTERFACE_TYPE ParentInterfaceType
,
65 IN ULONG ParentBusNumber
,
67 IN PINSTALL_BUS_HANDLER InstallCallback
,
68 OUT PBUS_HANDLER
*BusHandler
73 (NTAPI
*pHalSetWakeEnable
)(
79 (NTAPI
*pHalSetWakeAlarm
)(
80 IN ULONGLONG AlartTime
,
81 IN PTIME_FIELDS TimeFields
86 (NTAPI
*pHalLocateHiberRanges
)(
92 (NTAPI
*pHalAllocateMapRegisters
)(
93 IN PADAPTER_OBJECT AdapterObject
,
96 PMAP_REGISTER_ENTRY Registers
100 // HAL Bus Handler Callback Types
104 (NTAPI
*PADJUSTRESOURCELIST
)(
105 IN PBUS_HANDLER BusHandler
,
106 IN PBUS_HANDLER RootHandler
,
107 IN OUT PIO_RESOURCE_REQUIREMENTS_LIST
*Resources
112 (NTAPI
*PASSIGNSLOTRESOURCES
)(
113 IN PBUS_HANDLER BusHandler
,
114 IN PBUS_HANDLER RootHandler
,
115 IN PUNICODE_STRING RegistryPath
,
116 IN PUNICODE_STRING DriverClassName
,
117 IN PDRIVER_OBJECT DriverObject
,
118 IN PDEVICE_OBJECT DeviceObject
,
120 IN OUT PCM_RESOURCE_LIST
*AllocatedResources
125 (NTAPI
*PGETSETBUSDATA
)(
126 IN PBUS_HANDLER BusHandler
,
127 IN PBUS_HANDLER RootHandler
,
136 (NTAPI
*PGETINTERRUPTVECTOR
)(
137 IN PBUS_HANDLER BusHandler
,
138 IN PBUS_HANDLER RootHandler
,
139 IN ULONG BusInterruptLevel
,
140 IN ULONG BusInterruptVector
,
142 OUT PKAFFINITY Affinity
147 (NTAPI
*PTRANSLATEBUSADDRESS
)(
148 IN PBUS_HANDLER BusHandler
,
149 IN PBUS_HANDLER RootHandler
,
150 IN PHYSICAL_ADDRESS BusAddress
,
151 IN OUT PULONG AddressSpace
,
152 OUT PPHYSICAL_ADDRESS TranslatedAddress
156 // Hal Private dispatch Table
158 #define HAL_PRIVATE_DISPATCH_VERSION 2
159 typedef struct _HAL_PRIVATE_DISPATCH
162 pHalHandlerForBus HalHandlerForBus
;
163 pHalHandlerForConfigSpace HalHandlerForConfigSpace
;
164 pHalLocateHiberRanges HalLocateHiberRanges
;
165 pHalRegisterBusHandler HalRegisterBusHandler
;
166 pHalSetWakeEnable HalSetWakeEnable
;
167 pHalSetWakeAlarm HalSetWakeAlarm
;
168 pHalTranslateBusAddress HalPciTranslateBusAddress
;
169 pHalAssignSlotResources HalPciAssignSlotResources
;
170 pHalHaltSystem HalHaltSystem
;
171 pHalFindBusAddressTranslation HalFindBusAddressTranslation
;
172 pHalResetDisplay HalResetDisplay
;
173 pHalAllocateMapRegisters HalAllocateMapRegisters
;
174 pKdSetupPciDeviceForDebugging KdSetupPciDeviceForDebugging
;
175 pKdReleasePciDeviceForDebugging KdReleasePciDeviceforDebugging
;
176 pKdGetAcpiTablePhase0 KdGetAcpiTablePhase0
;
177 pKdCheckPowerButton KdCheckPowerButton
;
178 pHalVectorToIDTEntry HalVectorToIDTEntry
;
179 pKdMapPhysicalMemory64 KdMapPhysicalMemory64
;
180 pKdUnmapVirtualAddress KdUnmapVirtualAddress
;
181 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
182 pKdGetPciDataByOffset KdGetPciDataByOffset
;
183 pKdSetPciDataByOffset KdSetPciDataByOffset
;
184 PVOID HalGetInterruptVectorOverride
;
185 PVOID HalGetVectorInputOverride
;
187 } HAL_PRIVATE_DISPATCH
, *PHAL_PRIVATE_DISPATCH
;
190 // HAL Supported Range
192 #define HAL_SUPPORTED_RANGE_VERSION 1
193 typedef struct _SUPPORTED_RANGE
195 struct _SUPPORTED_RANGE
*Next
;
196 ULONG SystemAddressSpace
;
200 } SUPPORTED_RANGE
, *PSUPPORTED_RANGE
;
202 typedef struct _SUPPORTED_RANGES
210 SUPPORTED_RANGE Memory
;
211 ULONG NoPrefetchMemory
;
212 SUPPORTED_RANGE PrefetchMemory
;
215 } SUPPORTED_RANGES
, *PSUPPORTED_RANGES
;
220 #define HAL_BUS_HANDLER_VERSION 1
221 typedef struct _BUS_HANDLER
224 INTERFACE_TYPE InterfaceType
;
225 BUS_DATA_TYPE ConfigurationType
;
227 PDEVICE_OBJECT DeviceObject
;
228 struct _BUS_HANDLER
*ParentHandler
;
230 ULONG DeviceControlExtensionSize
;
231 PSUPPORTED_RANGES BusAddresses
;
233 PGETSETBUSDATA GetBusData
;
234 PGETSETBUSDATA SetBusData
;
235 PADJUSTRESOURCELIST AdjustResourceList
;
236 PASSIGNSLOTRESOURCES AssignSlotResources
;
237 PGETINTERRUPTVECTOR GetInterruptVector
;
238 PTRANSLATEBUSADDRESS TranslateBusAddress
;
252 #define HAL_PCI_CHIP_HACK_BROKEN_ACPI_TIMER 0x01
253 #define HAL_PCI_CHIP_HACK_DISABLE_HIBERNATE 0x02
254 #define HAL_PCI_CHIP_HACK_DISABLE_ACPI_IRQ_ROUTING 0x04
255 #define HAL_PCI_CHIP_HACK_USB_SMI_DISABLE 0x08
260 #if defined(_NTDRIVER_) || defined(_NTHAL_)
261 extern NTSYSAPI PHAL_PRIVATE_DISPATCH HalPrivateDispatchTable
;
262 #define HALPRIVATEDISPATCH ((PHAL_PRIVATE_DISPATCH)&HalPrivateDispatchTable)
264 extern NTSYSAPI HAL_PRIVATE_DISPATCH HalPrivateDispatchTable
;
265 #define HALPRIVATEDISPATCH (&HalPrivateDispatchTable)
271 extern PUCHAR NTHALAPI KdComPortInUse
;