Synchronize with trunk revision 59636 (just before Alex's CreateProcess revamp).
[reactos.git] / drivers / bus / pcix / pci.h
index 866784a..25774f7 100644 (file)
@@ -298,10 +298,11 @@ typedef struct _PCI_PDO_EXTENSION
     BOOLEAN MovedDevice;
     BOOLEAN DisablePowerDown;
     BOOLEAN NeedsHotPlugConfiguration;
-    BOOLEAN SwitchedIDEToNativeMode;
+    BOOLEAN IDEInNativeMode;
     BOOLEAN BIOSAllowsIDESwitchToNativeMode;
     BOOLEAN IoSpaceUnderNativeIdeControl;
     BOOLEAN OnDebugPath;
+    BOOLEAN IoSpaceNotRequired;
     PCI_POWER_STATE PowerState;
     PCI_HEADER_TYPE_DEPENDENT Dependent;
     ULONGLONG HackFlags;
@@ -450,7 +451,8 @@ typedef VOID (NTAPI *PCI_CONFIGURATOR_SAVE_CURRENT_SETTINGS)(
 );
 
 typedef VOID (NTAPI *PCI_CONFIGURATOR_CHANGE_RESOURCE_SETTINGS)(
-    IN struct _PCI_CONFIGURATOR_CONTEXT* Context
+    IN PPCI_PDO_EXTENSION PdoExtension,
+    IN PPCI_COMMON_HEADER PciData
 );
 
 typedef VOID (NTAPI *PCI_CONFIGURATOR_GET_ADDITIONAL_RESOURCE_DESCRIPTORS)(
@@ -460,7 +462,8 @@ typedef VOID (NTAPI *PCI_CONFIGURATOR_GET_ADDITIONAL_RESOURCE_DESCRIPTORS)(
 );
 
 typedef VOID (NTAPI *PCI_CONFIGURATOR_RESET_DEVICE)(
-    IN struct _PCI_CONFIGURATOR_CONTEXT* Context
+    IN PPCI_PDO_EXTENSION PdoExtension,
+    IN PPCI_COMMON_HEADER PciData
 );
 
 //
@@ -496,7 +499,7 @@ typedef struct _PCI_CONFIGURATOR_CONTEXT
 //
 typedef VOID (NTAPI *PCI_IPI_FUNCTION)(
     IN PVOID Reserved,
-    IN PPCI_CONFIGURATOR_CONTEXT Context
+    IN PVOID Context
 );
 
 //
@@ -506,14 +509,35 @@ typedef struct _PCI_IPI_CONTEXT
 {
     LONG RunCount;
     ULONG Barrier;
-    PPCI_PDO_EXTENSION PdoExtension;
+    PVOID DeviceExtension;
     PCI_IPI_FUNCTION Function;
     PVOID Context;
 } PCI_IPI_CONTEXT, *PPCI_IPI_CONTEXT;
 
+//
+// PCI Legacy Device Location Cache
+//
+typedef struct _PCI_LEGACY_DEVICE
+{
+    struct _PCI_LEGACY_DEVICE *Next;
+    PDEVICE_OBJECT DeviceObject;
+    ULONG BusNumber;
+    ULONG SlotNumber;
+    UCHAR InterruptLine;
+    UCHAR InterruptPin;
+    UCHAR BaseClass;
+    UCHAR SubClass;
+    PDEVICE_OBJECT PhysicalDeviceObject;
+    ROUTING_TOKEN RoutingToken;
+    PPCI_PDO_EXTENSION PdoExtension;
+} PCI_LEGACY_DEVICE, *PPCI_LEGACY_DEVICE;
+
 //
 // IRP Dispatch Routines
 //
+
+DRIVER_DISPATCH PciDispatchIrp;
+
 NTSTATUS
 NTAPI
 PciDispatchIrp(
@@ -589,6 +613,9 @@ PciSetPowerManagedDevicePowerState(
 //
 // Bus FDO Routines
 //
+
+DRIVER_ADD_DEVICE PciAddDevice;
+
 NTSTATUS
 NTAPI
 PciAddDevice(
@@ -1100,6 +1127,8 @@ PciClassifyDeviceType(
     IN PPCI_PDO_EXTENSION PdoExtension
 );
 
+KIPI_BROADCAST_WORKER PciExecuteCriticalSystemRoutine;
+
 ULONG_PTR
 NTAPI
 PciExecuteCriticalSystemRoutine(
@@ -1143,6 +1172,12 @@ PciQueryCapabilities(
     IN OUT PDEVICE_CAPABILITIES DeviceCapability
 );
 
+PCM_PARTIAL_RESOURCE_DESCRIPTOR
+NTAPI
+PciNextPartialDescriptor(
+    PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor
+);
+
 //
 // Configuration Routines
 //
@@ -1261,6 +1296,18 @@ PciDebugPrintIoResReqList(
     IN PIO_RESOURCE_REQUIREMENTS_LIST Requirements
 );
 
+VOID
+NTAPI
+PciDebugPrintCmResList(
+    IN PCM_RESOURCE_LIST ResourceList
+);
+
+VOID
+NTAPI
+PciDebugPrintPartialResource(
+    IN PCM_PARTIAL_RESOURCE_DESCRIPTOR PartialResource
+);
+
 //
 // Interface Support
 //
@@ -1524,6 +1571,29 @@ PciQueryRequirements(
     IN OUT PIO_RESOURCE_REQUIREMENTS_LIST *RequirementsList
 );
 
+BOOLEAN
+NTAPI
+PciComputeNewCurrentSettings(
+    IN PPCI_PDO_EXTENSION PdoExtension,
+    IN PCM_RESOURCE_LIST ResourceList
+);
+
+NTSTATUS
+NTAPI
+PciSetResources(
+    IN PPCI_PDO_EXTENSION PdoExtension,
+    IN BOOLEAN DoReset,
+    IN BOOLEAN SomethingSomethingDarkSide
+);
+
+NTSTATUS
+NTAPI
+PciBuildRequirementsList(
+    IN PPCI_PDO_EXTENSION PdoExtension,
+    IN PPCI_COMMON_HEADER PciData,
+    OUT PIO_RESOURCE_REQUIREMENTS_LIST* Buffer
+);
+
 //
 // Identification Functions
 //
@@ -1589,13 +1659,15 @@ Cardbus_GetAdditionalResourceDescriptors(
 VOID
 NTAPI
 Cardbus_ResetDevice(
-    IN PPCI_CONFIGURATOR_CONTEXT Context
+    IN PPCI_PDO_EXTENSION PdoExtension,
+    IN PPCI_COMMON_HEADER PciData
 );
 
 VOID
 NTAPI
 Cardbus_ChangeResourceSettings(
-    IN PPCI_CONFIGURATOR_CONTEXT Context
+    IN PPCI_PDO_EXTENSION PdoExtension,
+    IN PPCI_COMMON_HEADER PciData
 );
 
 //
@@ -1636,13 +1708,15 @@ Device_GetAdditionalResourceDescriptors(
 VOID
 NTAPI
 Device_ResetDevice(
-    IN PPCI_CONFIGURATOR_CONTEXT Context
+    IN PPCI_PDO_EXTENSION PdoExtension,
+    IN PPCI_COMMON_HEADER PciData
 );
 
 VOID
 NTAPI
 Device_ChangeResourceSettings(
-    IN PPCI_CONFIGURATOR_CONTEXT Context
+    IN PPCI_PDO_EXTENSION PdoExtension,
+    IN PPCI_COMMON_HEADER PciData
 );
 
 //
@@ -1683,13 +1757,42 @@ PPBridge_GetAdditionalResourceDescriptors(
 VOID
 NTAPI
 PPBridge_ResetDevice(
-    IN PPCI_CONFIGURATOR_CONTEXT Context
+    IN PPCI_PDO_EXTENSION PdoExtension,
+    IN PPCI_COMMON_HEADER PciData
 );
 
 VOID
 NTAPI
 PPBridge_ChangeResourceSettings(
-    IN PPCI_CONFIGURATOR_CONTEXT Context
+    IN PPCI_PDO_EXTENSION PdoExtension,
+    IN PPCI_COMMON_HEADER PciData
+);
+
+//
+// Bus Number Routines
+//
+BOOLEAN
+NTAPI
+PciAreBusNumbersConfigured(
+    IN PPCI_PDO_EXTENSION PdoExtension
+);
+
+//
+// Routine Interface
+//
+NTSTATUS
+NTAPI
+PciCacheLegacyDeviceRouting(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN ULONG BusNumber,
+    IN ULONG SlotNumber,
+    IN UCHAR InterruptLine, 
+    IN UCHAR InterruptPin, 
+    IN UCHAR BaseClass, 
+    IN UCHAR SubClass, 
+    IN PDEVICE_OBJECT PhysicalDeviceObject,
+    IN PPCI_PDO_EXTENSION PdoExtension,
+    OUT PDEVICE_OBJECT *pFoundDeviceObject
 );
 
 //