63 BOOLEAN DrainPartial, RangeChange;
73 InterruptResource =
NULL;
110 switch (Partial->
Type)
118 BaseResource = Partial;
127 InterruptResource = Partial;
176 FullList = (
PVOID)Partial;
181 if (!PciResources)
return FALSE;
185 DPRINT1(
"Missing sanity checking code!\n");
188 for (
i = 0;
i < 7;
i++)
191 CurrentDescriptor = &PciResources->
Current[
i];
192 Partial = &ResourceArray[
i];
195 PreviousDescriptor = &PciResources->
Current[(
i == 0) ? (0) : (
i - 1)];
198 if (((Partial->
Type != CurrentDescriptor->
Type) ||
200 ((Partial->
u.
Generic.Start.QuadPart !=
201 CurrentDescriptor->
u.
Generic.Start.QuadPart) ||
217 DbgPrint(
" Previously unset range\n");
225 CurrentDescriptor->
Type = Partial->
Type;
228 CurrentDescriptor = PreviousDescriptor;
233 return ((RangeChange) || (
PdoExtension->UpdateHardware));
358 BOOLEAN HaveVga, HaveMemSpace, HaveIoSpace;
359 USHORT BridgeControl, PciCommand;
386 for (
i = 0;
i < 7;
i++)
389 Partial = &PciResources->
Current[
i];
399 if ((
PdoExtension->InterruptPin) && ((HaveMemSpace) || (HaveIoSpace)))
403 if ((InterruptLine) && (InterruptLine != -1))
Count++;
420 if (HaveMemSpace)
Count++;
421 if (HaveIoSpace)
Count += 2;
438 for (
i = 0;
i < 7;
i++)
441 Partial = &PciResources->
Current[
i];
458 Resource->u.Generic.Start.HighPart = 0;
460 Resource->u.Generic.Start.LowPart = 0xA0000;
461 Resource->u.Generic.Length = 0x20000;
471 Resource->u.Port.Start.QuadPart = 0x3B0u;
478 Resource->u.Port.Start.QuadPart = 0x3C0u;
485 if ((
PdoExtension->InterruptPin) && ((HaveMemSpace) || (HaveIoSpace)))
489 if ((InterruptLine) && (InterruptLine != -1))
498 Resource->u.Interrupt.Affinity = -1;
499 Resource->u.Interrupt.Level = InterruptLine;
500 Resource->u.Interrupt.Vector = InterruptLine;
527 DeviceRelations->
Count = 1;
532 *pDeviceRelations = DeviceRelations;
575 DPRINT1(
"PCI - build resource reqs - early out, 0 resources\n");
601 if ((PciHeader.VendorID == 0xE11) &&
602 (PciHeader.DeviceID == 0xA0F7) &&
603 (PciHeader.RevisionID == 17) &&
615 DPRINT1(
"Returning NULL requirements list\n");
626 DPRINT1(
"PciQueryRequirements returning NULL requirements list\n");
658 UCHAR MasterMode, SlaveMode, MasterFixed, SlaveFixed, ProgIf, NewProgIf;
666 ProgIf = PciData->ProgIf;
667 MasterMode = (ProgIf & 1) == 1;
668 MasterFixed = (ProgIf & 2) == 0;
669 SlaveMode = (ProgIf & 4) == 4;
670 SlaveFixed = (ProgIf & 8) == 0;
682 if ((MasterMode != SlaveMode) || (MasterFixed != SlaveFixed))
685 DPRINT1(
"PCI: Warning unsupported IDE controller configuration for VEN_%04x&DEV_%04x!",
692 if ((MasterMode) && (SlaveMode))
695 if ((Initial) || (
PdoExtension->IoSpaceUnderNativeIdeControl))
704 Command &= ~PCI_ENABLE_IO_SPACE;
719 else if (!(MasterFixed) &&
734 ProgIf = PciData->ProgIf | 5;
745 if (NewProgIf == ProgIf)
748 PciData->ProgIf = ProgIf;
752 PciData->u.type0.BaseAddresses[0] = 0;
753 PciData->u.type0.BaseAddresses[1] = 0;
754 PciData->u.type0.BaseAddresses[2] = 0;
755 PciData->u.type0.BaseAddresses[3] = 0;
757 PciData->u.type0.BaseAddresses,
759 u.type0.BaseAddresses),
764 PciData->u.type0.BaseAddresses,
766 u.type0.BaseAddresses),
771 &PciData->u.type0.InterruptPin,
773 u.type0.InterruptPin),
782 DPRINT1(
"PCI: Warning failed switch to native mode for IDE controller VEN_%04x&DEV_%04x!",
800 ULONG LegacyBaseAddress;
807 switch (OperationType)
820 if ((PciData->VendorID == 0x8086) &&
821 ((PciData->DeviceID == 0x482) || (PciData->DeviceID == 0x484)))
824 PciData->SubClass = PciData->DeviceID == 0x482 ?
857 if ((PciData->VendorID == 0x1045) && (PciData->DeviceID != 0xC621))
860 PciData->ProgIf &= ~5;
861 PciData->u.type0.InterruptPin = 0;
919 if ((PciData->ProgIf & 5) != 5)
922 PciData->u.type0.InterruptPin = 0;
929 !(DeviceExtension->BrokenVideoHackApplied))
936 if ((PciData->VendorID == 0xE11) &&
937 (PciData->DeviceID == 0xA0F7) &&
938 (PciData->RevisionID == 17) &&
1026 PciData->u.type1.MemoryBase = 0xFFFF;
1027 PciData->u.type1.PrefetchBase = 0xFFFF;
1028 PciData->u.type1.IOBase = 0xFF;
1029 PciData->u.type1.IOLimit = 0;
1030 PciData->u.type1.MemoryLimit = 0;
1031 PciData->u.type1.PrefetchLimit = 0;
1032 PciData->u.type1.PrefetchBaseUpper32 = 0;
1033 PciData->u.type1.PrefetchLimitUpper32 = 0;
1034 PciData->u.type1.IOBaseUpper16 = 0;
1035 PciData->u.type1.IOLimitUpper16 = 0;
1053 LegacyBaseAddress = 0;
1066 BOOLEAN IdMatch, RevMatch, SubsysMatch;
1070 IdMatch = (PciData->VendorID == DeviceExtension->VendorId) &&
1071 (PciData->DeviceID == DeviceExtension->DeviceId);
1072 if (!IdMatch)
return FALSE;
1076 (PciData->RevisionID == DeviceExtension->RevisionId);
1077 if (!RevMatch)
return FALSE;
1088 ((DeviceExtension->SubsystemVendorId ==
1089 PciData->u.type0.SubVendorID) &&
1090 (DeviceExtension->SubsystemId ==
1091 PciData->u.type0.SubSystemID));
1112 (Slot.u.bits.DeviceNumber >= 16))
1115 DPRINT1(
" Device (Ven %04x Dev %04x (d=0x%x, f=0x%x)) is a ghost.\n",
1118 Slot.u.bits.DeviceNumber,
1119 Slot.u.bits.FunctionNumber);
1131 ASSERTMSG(
"PCI Skip Function - Operation type unknown.\n",
FALSE);
1145 DPRINT1(
" Vendor %04x, Device %04x has class code of PCI_CLASS_NOT_DEFINED\n",
1157 if ((PciData->VendorID == 0x8086) && (PciData->DeviceID == 8))
break;
1165 DPRINT1(
" Device skipped (not enumerated).\n");
1174 ULONG HeaderType, CapPtr, TargetAgpCapabilityId;
1197 CapPtr = PciData->u.type2.CapabilitiesPtr;
1203 CapPtr = PciData->u.type0.CapabilitiesPtr;
1215 DPRINT1(
"Device has capabilities at: %lx\n", CapPtr);
1230 TargetAgpCapabilityId,
1235 DPRINT1(
"AGP ID: %lx\n", TargetAgpCapabilityId);
1236 PdoExtension->TargetAgpCapabilityId = TargetAgpCapabilityId;
1251 DPRINT1(
"No PM caps, disabling PM\n");
1276 DPRINT1(
"PM Caps Found! Wake Level: %d Power State: %d\n",
1277 WakeLevel,
PdoExtension->PowerState.CurrentDeviceState);
1292 DPRINT1(
"PM is off, so assumed device is: %d based on enables\n",
1323 Current->Command =
Context->Command;
1334 Current->Status =
Context->Status;
1358 Context->Status = Current->Status;
1359 Context->Command = Current->Command;
1362 Current->Status = 0;
1372 Context->Configurator = Configurator;
1431 DPRINT1(
"PCI - CFG space write verify failed at offset 0x%x\n",
Offset);
1468 DPRINT1(
"PCI Resources fail!\n");
1548 for (
PdoExtension = DeviceExtension->ChildBridgePdoList;
1576 USHORT CapOffset, TempOffset;
1589 USHORT SubVendorId, SubSystemId;
1592 DPRINT1(
"PCI Scan Bus: FDO Extension @ 0x%p, Base Bus = 0x%x\n",
1593 DeviceExtension, DeviceExtension->BaseBus);
1599 PdoExtension = DeviceExtension->PhysicalDeviceObject->DeviceExtension;
1610 if (SecondaryBus !=
PdoExtension->Dependent.type1.SecondaryBus)
1617 PciSlot.
u.
bits.Reserved = 0;
1618 i = DeviceExtension->BaseBus;
1619 for (
j = 0;
j < MaxDevice;
j++)
1622 PciSlot.
u.
bits.DeviceNumber =
j;
1626 PciSlot.
u.
bits.FunctionNumber =
k;
1653 DPRINT1(
"Scan Found Device 0x%x (b=0x%x, d=0x%x, f=0x%x)\n",
1665 DPRINT1(
"Device Description \"%S\".\n",
1666 DescriptionText ? DescriptionText :
L"(NULL)");
1687 SubVendorId = PciData->u.type0.SubVendorID;
1688 SubSystemId = PciData->u.type0.SubSystemID;
1696 PciData->RevisionID);
1705 DPRINT1(
"Not allowing PM Because device is critical\n");
1717 DPRINT1(
"Not allowing PM because device is VGA\n");
1761 NewExtension->
VendorId = PciData->VendorID;
1762 NewExtension->
DeviceId = PciData->DeviceID;
1763 NewExtension->
RevisionId = PciData->RevisionID;
1764 NewExtension->
ProgIf = PciData->ProgIf;
1765 NewExtension->
SubClass = PciData->SubClass;
1766 NewExtension->
BaseClass = PciData->BaseClass;
1783 for (BridgeExtension = &DeviceExtension->ChildBridgePdoList;
1785 BridgeExtension = &(*BridgeExtension)->
NextBridge);
1788 *BridgeExtension = NewExtension;
1803 DPRINT1(
"Have BIOS configuration!\n");
1815 if (
BiosData->u.type0.InterruptLine !=
1816 PciData->u.type0.InterruptLine)
1822 u.type0.InterruptLine),
1865 NewExtension->
InterruptPin = PciData->u.type0.InterruptPin;
1896 if (TempOffset != CapOffset)
1899 DPRINT1(
"PCI - Failed to read PCI capability at offset 0x%02x\n",
1901 ASSERT(TempOffset == CapOffset);
1927 Name =
"UNKNOWN CAPABILITY";
1942 if (TempOffset != CapOffset)
1945 DPRINT1(
"- Failed to read capability data. ***\n");
1946 ASSERT(TempOffset == CapOffset);
1951 DPRINT1(
"CAP @%02x ID %02x (%s)\n",
1958 CapOffset = CapHeader.
Next;
1978 ((NewExtension->
VendorId == 0x8086) &&
1979 (NewExtension->
DeviceId == 0x482)))
1986 if (!PciData->CacheLineSize)
2007 if (!(PciData->LatencyTimer) ||
2008 ((TempOffset) && (PciData->LatencyTimer == 64)))
2011 DPRINT1(
"PCI - ScanBus, PDOx %p found unconfigured\n",
2075 DPRINT1(
"PCI - Old device (pdox) %p not found on rescan.\n",
2086 DeviceRelations = *pDeviceRelations;
2101 NewRelations->
Count = 0;
2102 if (DeviceRelations)
2113 DPRINT1(
"PCI QueryDeviceRelations/BusRelations FDOx %p (bus 0x%02x)\n",
2115 DeviceExtension->BaseBus);
2119 ObjectArray = &NewRelations->
Objects[NewRelations->
Count];
2123 DPRINT1(
" QDR PDO %p (x %p)%s\n",
2127 "<Omitted, device flaged not present>" :
"");
2143 DPRINT1(
" QDR Total PDO count = %u (%u already in list)\n",
2144 NewRelations->
Count + PdoCount,
2145 NewRelations->
Count);
2148 NewRelations->
Count += PdoCount;
2149 *pDeviceRelations = NewRelations;
2160 UCHAR NewCacheLineSize, NewLatencyTimer;
2219 PciData.u.type0.InterruptLine =
PdoExtension->RawInterruptLine;
2224 if (PciData.LatencyTimer != NewLatencyTimer)
2227 DPRINT1(
"PCI (pdox %p) changing latency from %02x to %02x.\n",
2229 PciData.LatencyTimer,
2235 if (PciData.CacheLineSize != NewCacheLineSize)
2238 DPRINT1(
"PCI (pdox %p) changing cache line size from %02x to %02x.\n",
2240 PciData.CacheLineSize,
2245 PciData.LatencyTimer =
PdoExtension->SavedLatencyTimer;
2246 PciData.CacheLineSize =
PdoExtension->SavedCacheLineSize;
2247 PciData.u.type0.InterruptLine =
PdoExtension->RawInterruptLine;
2267 PdoExtension->RawInterruptLine = PciData.u.type0.InterruptLine;
VOID NTAPI ario_ApplyBrokenVideoHack(IN PPCI_FDO_EXTENSION FdoExtension)
PDEVICE_OBJECT PhysicalDeviceObject
VOID NTAPI Cardbus_SaveCurrentSettings(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Cardbus_MassageHeaderForLimitsDetermination(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Cardbus_RestoreCurrent(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Cardbus_ChangeResourceSettings(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
VOID NTAPI Cardbus_SaveLimits(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Cardbus_ResetDevice(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
VOID NTAPI Cardbus_GetAdditionalResourceDescriptors(IN PPCI_CONFIGURATOR_CONTEXT Context, IN PPCI_COMMON_HEADER PciData, IN PIO_RESOURCE_DESCRIPTOR IoDescriptor)
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
FORCEINLINE PCM_PARTIAL_RESOURCE_DESCRIPTOR CmiGetNextPartialDescriptor(_In_ const CM_PARTIAL_RESOURCE_DESCRIPTOR *PartialDescriptor)
#define STATUS_NOT_IMPLEMENTED
#define NT_SUCCESS(StatCode)
VOID NTAPI PciDebugPrintPartialResource(IN PCM_PARTIAL_RESOURCE_DESCRIPTOR PartialResource)
VOID NTAPI PciDebugDumpCommonConfig(IN PPCI_COMMON_HEADER PciData)
VOID NTAPI PciDebugPrintIoResReqList(IN PIO_RESOURCE_REQUIREMENTS_LIST Requirements)
VOID NTAPI PciDebugPrintCmResList(IN PCM_RESOURCE_LIST PartialList)
VOID NTAPI Device_GetAdditionalResourceDescriptors(IN PPCI_CONFIGURATOR_CONTEXT Context, IN PPCI_COMMON_HEADER PciData, IN PIO_RESOURCE_DESCRIPTOR IoDescriptor)
VOID NTAPI Device_ChangeResourceSettings(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
VOID NTAPI Device_SaveLimits(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Device_MassageHeaderForLimitsDetermination(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Device_SaveCurrentSettings(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Device_ResetDevice(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
VOID NTAPI Device_RestoreCurrent(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI PciWriteLimitsAndRestoreCurrent(IN PVOID Reserved, IN PVOID Context2)
VOID NTAPI PciGetEnhancedCapabilities(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
NTSTATUS NTAPI PciSetResources(IN PPCI_PDO_EXTENSION PdoExtension, IN BOOLEAN DoReset, IN BOOLEAN SomethingSomethingDarkSide)
BOOLEAN NTAPI PciSkipThisFunction(IN PPCI_COMMON_HEADER PciData, IN PCI_SLOT_NUMBER Slot, IN UCHAR OperationType, IN ULONGLONG HackFlags)
NTSTATUS NTAPI PciBuildRequirementsList(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData, OUT PIO_RESOURCE_REQUIREMENTS_LIST *Buffer)
PCM_RESOURCE_LIST NTAPI PciAllocateCmResourceList(IN ULONG Count, IN ULONG BusNumber)
VOID NTAPI PciProcessBus(IN PPCI_FDO_EXTENSION DeviceExtension)
BOOLEAN NTAPI PcipIsSameDevice(IN PPCI_PDO_EXTENSION DeviceExtension, IN PPCI_COMMON_HEADER PciData)
NTSTATUS NTAPI PciScanBus(IN PPCI_FDO_EXTENSION DeviceExtension)
NTSTATUS NTAPI PciQueryEjectionRelations(IN PPCI_PDO_EXTENSION PdoExtension, IN OUT PDEVICE_RELATIONS *pDeviceRelations)
NTSTATUS NTAPI PciQueryRequirements(IN PPCI_PDO_EXTENSION PdoExtension, IN OUT PIO_RESOURCE_REQUIREMENTS_LIST *RequirementsList)
NTSTATUS NTAPI PciQueryTargetDeviceRelations(IN PPCI_PDO_EXTENSION PdoExtension, IN OUT PDEVICE_RELATIONS *pDeviceRelations)
BOOLEAN NTAPI PciConfigureIdeController(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData, IN BOOLEAN Initial)
NTSTATUS NTAPI PciQueryDeviceRelations(IN PPCI_FDO_EXTENSION DeviceExtension, IN OUT PDEVICE_RELATIONS *pDeviceRelations)
NTSTATUS NTAPI PcipGetFunctionLimits(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI PcipUpdateHardware(IN PVOID Context, IN PVOID Context2)
PIO_RESOURCE_REQUIREMENTS_LIST PciZeroIoResourceRequirements
VOID NTAPI PciUpdateHardware(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
PIO_RESOURCE_REQUIREMENTS_LIST NTAPI PciAllocateIoRequirementsList(IN ULONG Count, IN ULONG BusNumber, IN ULONG SlotNumber)
PCI_CONFIGURATOR PciConfigurators[]
VOID NTAPI PciApplyHacks(IN PPCI_FDO_EXTENSION DeviceExtension, IN PPCI_COMMON_HEADER PciData, IN PCI_SLOT_NUMBER SlotNumber, IN ULONG OperationType, PPCI_PDO_EXTENSION PdoExtension)
BOOLEAN NTAPI PciComputeNewCurrentSettings(IN PPCI_PDO_EXTENSION PdoExtension, IN PCM_RESOURCE_LIST ResourceList)
NTSTATUS NTAPI PciGetFunctionLimits(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER Current, IN ULONGLONG HackFlags)
NTSTATUS NTAPI PciQueryResources(IN PPCI_PDO_EXTENSION PdoExtension, OUT PCM_RESOURCE_LIST *Buffer)
BOOLEAN PciEnableNativeModeATA
VOID NTAPI PciReadSlotConfig(IN PPCI_FDO_EXTENSION DeviceExtension, IN PCI_SLOT_NUMBER Slot, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
NTSYSAPI BOOLEAN InitSafeBootMode
VOID NTAPI PPBridge_SaveCurrentSettings(IN PPCI_CONFIGURATOR_CONTEXT Context)
NTSTATUS NTAPI PciPdoCreate(IN PPCI_FDO_EXTENSION DeviceExtension, IN PCI_SLOT_NUMBER Slot, OUT PDEVICE_OBJECT *PdoDeviceObject)
VOID NTAPI PciWriteDeviceConfig(IN PPCI_PDO_EXTENSION DeviceExtension, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
VOID NTAPI PPBridge_GetAdditionalResourceDescriptors(IN PPCI_CONFIGURATOR_CONTEXT Context, IN PPCI_COMMON_HEADER PciData, IN PIO_RESOURCE_DESCRIPTOR IoDescriptor)
@ PciSynchronizedOperation
PWCHAR NTAPI PciGetDeviceDescriptionMessage(IN UCHAR BaseClass, IN UCHAR SubClass)
BOOLEAN NTAPI PciIsSlotPresentInParentMethod(IN PPCI_PDO_EXTENSION PdoExtension, IN ULONG Method)
BOOLEAN PciAssignBusNumbers
struct _PCI_PDO_EXTENSION * PPCI_PDO_EXTENSION
NTSTATUS NTAPI PciCancelStateTransition(IN PPCI_FDO_EXTENSION DeviceExtension, IN PCI_STATE NewState)
PCI_DEVICE_TYPES NTAPI PciClassifyDeviceType(IN PPCI_PDO_EXTENSION PdoExtension)
NTSTATUS NTAPI PciBeginStateTransition(IN PPCI_FDO_EXTENSION DeviceExtension, IN PCI_STATE NewState)
NTSTATUS NTAPI PciGetBiosConfig(IN PPCI_PDO_EXTENSION DeviceExtension, OUT PPCI_COMMON_HEADER PciData)
VOID NTAPI PPBridge_RestoreCurrent(IN PPCI_CONFIGURATOR_CONTEXT Context)
#define PCI_SKIP_RESOURCE_ENUMERATION
#define PCI_HACK_FIXUP_BEFORE_UPDATE
PPCI_PDO_EXTENSION NTAPI PciFindPdoByFunction(IN PPCI_FDO_EXTENSION DeviceExtension, IN ULONG FunctionNumber, IN PPCI_COMMON_HEADER PciData)
VOID NTAPI PPBridge_MassageHeaderForLimitsDetermination(IN PPCI_CONFIGURATOR_CONTEXT Context)
BOOLEAN NTAPI PciIsDeviceOnDebugPath(IN PPCI_PDO_EXTENSION DeviceExtension)
#define PCI_IS_ROOT_FDO(x)
VOID NTAPI PciDecodeEnable(IN PPCI_PDO_EXTENSION PdoExtension, IN BOOLEAN Enable, OUT PUSHORT Command)
BOOLEAN NTAPI PciIsCriticalDeviceClass(IN UCHAR BaseClass, IN UCHAR SubClass)
UCHAR NTAPI PciReadDeviceCapability(IN PPCI_PDO_EXTENSION DeviceExtension, IN UCHAR Offset, IN ULONG CapabilityId, OUT PPCI_CAPABILITIES_HEADER Buffer, IN ULONG Length)
NTSTATUS NTAPI PciSetPowerManagedDevicePowerState(IN PPCI_PDO_EXTENSION DeviceExtension, IN DEVICE_POWER_STATE DeviceState, IN BOOLEAN IrpSet)
ULONGLONG NTAPI PciGetHackFlags(IN USHORT VendorId, IN USHORT DeviceId, IN USHORT SubVendorId, IN USHORT SubSystemId, IN UCHAR RevisionId)
VOID NTAPI PPBridge_ChangeResourceSettings(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
NTSTATUS NTAPI PciSaveBiosConfig(IN PPCI_PDO_EXTENSION DeviceExtension, OUT PPCI_COMMON_HEADER PciData)
UCHAR NTAPI PciGetAdjustedInterruptLine(IN PPCI_PDO_EXTENSION PdoExtension)
VOID NTAPI PPBridge_SaveLimits(IN PPCI_CONFIGURATOR_CONTEXT Context)
#define PCI_HACK_FIXUP_AFTER_CONFIGURATION
#define PCI_SKIP_DEVICE_ENUMERATION
KIPI_BROADCAST_WORKER PciExecuteCriticalSystemRoutine
#define PCI_HACK_FIXUP_BEFORE_CONFIGURATION
VOID NTAPI PPBridge_ResetDevice(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
VOID NTAPI PciReadDeviceConfig(IN PPCI_PDO_EXTENSION DeviceExtension, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
#define UNIMPLEMENTED_DBGBREAK(...)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define RtlCompareMemory(s1, s2, l)
struct _DEVICE_OBJECT * PDEVICE_OBJECT
#define KeSetEvent(pEvt, foo, foo2)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define CmResourceTypeNull
struct _CM_RESOURCE_LIST CM_RESOURCE_LIST
#define CmResourceTypeMemory
#define CmResourceTypeDevicePrivate
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR CM_PARTIAL_RESOURCE_DESCRIPTOR
#define CmResourceTypePort
#define CmResourceTypeInterrupt
NTSTATUS NTAPI KdDisableDebugger(VOID)
NTSTATUS NTAPI KdEnableDebugger(VOID)
#define KeLeaveCriticalRegion()
#define KeEnterCriticalRegion()
#define ExFreePoolWithTag(_P, _T)
#define CM_RESOURCE_PORT_POSITIVE_DECODE
#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
#define CM_RESOURCE_MEMORY_READ_WRITE
#define CM_RESOURCE_PORT_10_BIT_DECODE
#define ASSERTMSG(msg, exp)
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG Offset
BOOLEAN NTAPI ExIsProcessorFeaturePresent(IN ULONG ProcessorFeature)
ULONG_PTR NTAPI KeIpiGenericCall(_In_ PKIPI_BROADCAST_WORKER Function, _In_ ULONG_PTR Argument)
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
#define STATUS_DEVICE_DOES_NOT_EXIST
struct _IO_RESOURCE_DESCRIPTOR IO_RESOURCE_DESCRIPTOR
#define PCI_HACK_PRESERVE_COMMAND
#define PCI_HACK_CRITICAL_DEVICE
#define PCI_ENABLE_BRIDGE_VGA
#define PCI_HACK_ENUM_NO_RESOURCE
#define PCI_HACK_NO_REVISION_AFTER_D3
#define PCI_HACK_ONE_CHILD
#define PCI_HACK_DONT_DISABLE_DECODES
#define PCI_HACK_NO_SUBSYSTEM_AFTER_D3
#define PCI_HACK_NO_SUBSYSTEM
#define PCI_HACK_FAKE_CLASS_CODE
#define PCI_HACK_VIDEO_LEGACY_DECODE
#define PCI_HACK_NO_ENUM_AT_ALL
#define PCI_HACK_DISABLE_IDE_NATIVE_MODE
#define PCI_HACK_DOUBLE_DECKER
#define PCI_HACK_BROKEN_SUBTRACTIVE_DECODE
#define PCI_HACK_NO_PM_CAPS
CM_PARTIAL_RESOURCE_LIST PartialResourceList
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@392::@399 DevicePrivate
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@392 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@392::@393 Generic
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@392::@395 Interrupt
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
PDEVICE_OBJECT Objects[1]
PCI_CONFIGURATOR_CHANGE_RESOURCE_SETTINGS ChangeResourceSettings
PCI_CONFIGURATOR_SAVE_LIMITS SaveLimits
PCI_CONFIGURATOR_RESET_DEVICE ResetDevice
PCI_CONFIGURATOR_INITIALIZE Initialize
PCI_CONFIGURATOR_SAVE_CURRENT_SETTINGS SaveCurrentSettings
CM_PARTIAL_RESOURCE_DESCRIPTOR Current[7]
PCI_IPI_FUNCTION Function
BOOLEAN AdjustedInterruptLine
BOOLEAN SavedCacheLineSize
BOOLEAN SavedLatencyTimer
struct _PCI_PDO_EXTENSION * NextBridge
BOOLEAN NeedsHotPlugConfiguration
BOOLEAN ExpectedWritebackFailure
union _PCI_SLOT_NUMBER::@4024 u
struct _PCI_SLOT_NUMBER::@4024::@4025 bits
_In_ PNET_PNP_EVENT _In_ PTDI_PNP_CONTEXT _In_ PTDI_PNP_CONTEXT Context2
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_In_ WDFDEVICE _In_ PWDF_DEVICE_POWER_CAPABILITIES PowerCapabilities
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
_In_ WDFIORESREQLIST RequirementsList
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
_Reserved_ PVOID Reserved
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
#define PCI_INVALID_VENDORID
#define PCI_CAPABILITY_ID_AGP
#define PCI_CAPABILITY_ID_PCIX
#define PCI_ENABLE_BUS_MASTER
#define PCI_ENABLE_WRITE_AND_INVALIDATE
#define PCI_SUBCLASS_BR_EISA
#define PCI_SUBCLASS_BR_HOST
#define PCI_TYPE0_ADDRESSES
#define PCI_ENABLE_IO_SPACE
#define PCI_SUBCLASS_BR_PCI_TO_PCI
#define PCI_CLASS_MASS_STORAGE_CTLR
struct _PCI_AGP_CAPABILITY PCI_AGP_CAPABILITY
#define PCI_SUBCLASS_SYS_OTHER
#define PCI_CONFIGURATION_TYPE(PciData)
#define PCI_SUBCLASS_MSC_IDE_CTLR
#define PCI_ENABLE_MEMORY_SPACE
#define PCI_SUBCLASS_BR_MCA
struct _PCI_PM_CAPABILITY PCI_PM_CAPABILITY
#define PCI_COMMON_HDR_LENGTH
#define PCI_SUBCLASS_BR_ISA
#define PCI_CLASS_BRIDGE_DEV
#define PCI_SUBCLASS_BR_CARDBUS
#define PCI_STATUS_CAPABILITIES_LIST
#define PCI_CAPABILITY_ID_POWER_MANAGEMENT
#define PCI_CLASS_NOT_DEFINED
#define PCI_CLASS_BASE_SYSTEM_DEV
#define PCI_CAPABILITY_ID_AGP_TARGET
#define PCI_MULTIFUNCTION_DEVICE(PciData)
#define PCI_CARDBUS_BRIDGE_TYPE
struct _IO_RESOURCE_REQUIREMENTS_LIST IO_RESOURCE_REQUIREMENTS_LIST
#define ObReferenceObject