29#if defined(_M_IX86) || defined(_M_AMD64)
30#define PCI_MAX_BUSES (PCI_MAX_BRIDGE_NUMBER + 1)
32#define PCI_HEADER_TYPE_MASK 0x7F
33#define PCI_HEADER_TYPE_BRIDGE PCI_BRIDGE_TYPE
90 &acpi2_guid,
sizeof(acpi2_guid)))
173 if (PartialResourceList ==
NULL)
175 ERR(
"Failed to allocate resource descriptor\n");
180 PartialResourceList->
Version = 0;
182 PartialResourceList->
Count = 1;
194 TRACE(
"ACPI >1.0, using XSDT address\n");
199 TRACE(
"ACPI 1.0, using RSDT address\n");
203 AcpiBiosData->
Count = 0;
239 if (PartialResourceList ==
NULL)
241 ERR(
"Failed to allocate resource descriptor\n");
247 PartialResourceList->
Version = 1;
249 PartialResourceList->
Count = 2;
263 PartialDescriptor->
Flags = 0;
269 FramebufData->Version = 1;
270 FramebufData->Revision = 3;
271 FramebufData->VideoClock = 0;
279 "UEFI GOP Framebuffer",
299 if (PartialResourceList ==
NULL)
301 ERR(
"Failed to allocate resource descriptor\n");
307 PartialResourceList->
Version = 1;
309 PartialResourceList->
Count = 0;
332#if defined(_M_IX86) || defined(_M_AMD64)
344 Cfg.
u.
bits.Enable = 1;
345 Cfg.
u.
bits.BusNumber = Bus;
362 ULONG VendorDevice, HeaderTypeDword;
365 *MaxBridgeBusNumber = 0;
368 if ((VendorDevice & 0xFFFF) == 0xFFFF)
371 HeaderTypeDword = PciReadConfigDword(Bus,
Device,
Function, 0x0C);
372 HeaderType = (
UCHAR)((HeaderTypeDword >> 16) & 0xFF);
377 UCHAR SecondaryBus = (
UCHAR)((BridgeBusNumbers >> 8) & 0xFF);
378 UCHAR SubordinateBus = (
UCHAR)((BridgeBusNumbers >> 16) & 0xFF);
380 if (SecondaryBus > SubordinateBus)
382 ERR(
"Misconfigured PCI bridge: SecondaryBus (%u) > SubordinateBus (%u)\n",
383 SecondaryBus, SubordinateBus);
388 *MaxBridgeBusNumber = SubordinateBus;
402 UCHAR Bus = 0, HighestBus;
413 ULONG McfgCount, McfgIndex;
418 for (McfgIndex = 0; McfgIndex < McfgCount; ++McfgIndex)
423 if (
Alloc->PciSegmentGroup != 0)
426 if (
Alloc->EndBusNumber <
Alloc->StartBusNumber)
429 FoundMcfgSegment0 =
TRUE;
430 HighestBus =
max(HighestBus,
Alloc->EndBusNumber);
433 if (FoundMcfgSegment0)
435 BusData->MajorRevision = 3;
436 BusData->MinorRevision = 0;
437 BusData->NoBuses = HighestBus + 1;
438 BusData->HardwareMechanism = 1;
440 TRACE(
"UEFI PCI: %u bus(es) found via MCFG\n", BusData->NoBuses);
453 ULONG HeaderTypeDword;
454 UCHAR SubordinateBus = 0;
456 if (!PciScanFunction(Bus, (
UCHAR)
Device, 0, &SubordinateBus))
460 HighestBus =
max(HighestBus, SubordinateBus);
462 HeaderTypeDword = PciReadConfigDword(Bus, (
UCHAR)
Device, 0, 0x0C);
472 HighestBus =
max(HighestBus, SubordinateBus);
479 WARN(
"No PCI devices found\n");
483 BusData->MajorRevision = 3;
484 BusData->MinorRevision = 0;
485 BusData->NoBuses = HighestBus + 1;
486 BusData->HardwareMechanism = 1;
488 TRACE(
"UEFI PCI probe: %u bus(es) found\n", BusData->NoBuses);
500 TRACE(
"DetectHardware()\n");
503#if defined(_M_IX86) || defined(_M_AMD64)
505#elif defined(_M_IA64)
507#elif defined(_M_ARM) || defined(_M_ARM64)
510 #error Please define a system key for your architecture
515#if defined(_M_IX86) || defined(_M_AMD64)
520 TRACE(
"DetectHardware() Done\n");
#define EFI_ACPI_20_TABLE_GUID
VOID FldrCreateSystemKey(_Out_ PCONFIGURATION_COMPONENT_DATA *SystemNode, _In_ PCSTR IdentifierString)
VOID FldrCreateComponentKey(_In_ PCONFIGURATION_COMPONENT_DATA SystemNode, _In_ CONFIGURATION_CLASS Class, _In_ CONFIGURATION_TYPE Type, _In_ IDENTIFIER_FLAG Flags, _In_ ULONG Key, _In_ ULONG Affinity, _In_ PCSTR IdentifierString, _In_ PCM_PARTIAL_RESOURCE_LIST ResourceList, _In_ ULONG Size, _Out_ PCONFIGURATION_COMPONENT_DATA *ComponentKey)
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
VOID DetectPciBus(_In_ PCONFIGURATION_COMPONENT_DATA SystemKey, _Inout_ PULONG BusNumber, _In_ DETECT_PCI_BUS MachDetectPciBus)
Detects and reports the PCI buses found on the platform. Only conventional PCI buses (or PCIe buses o...
#define PCI_TYPE1_DATA_PORT
#define PCI_TYPE1_ADDRESS_PORT
#define DBG_DEFAULT_CHANNEL(ch)
PVOID FrLdrHeapAlloc(SIZE_T MemorySize, ULONG Tag)
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
static const WCHAR Signature[]
#define PCI_HEADER_TYPE_MASK
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
ULONG NTAPI READ_PORT_ULONG(IN PULONG Port)
VOID NTAPI WRITE_PORT_ULONG(IN PULONG Port, IN ULONG Value)
_Must_inspect_result_ _In_ PUCXHUB_DEVICE_CREATE_INFO _Out_ UCXUSBDEVICE * Device
#define CM_RESOURCE_MEMORY_READ_WRITE
#define UNREFERENCED_PARAMETER(P)
struct _ACPI_BIOS_DATA ACPI_BIOS_DATA
struct _ACPI_BIOS_DATA * PACPI_BIOS_DATA
#define PCI_HEADER_TYPE_BRIDGE
#define CmResourceTypeMemory
#define CmResourceTypeDeviceSpecific
struct _MCFG_TABLE MCFG_TABLE
struct _MCFG_TABLE * PMCFG_TABLE
DESCRIPTION_HEADER * PDESCRIPTION_HEADER
struct _CM_FRAMEBUF_DEVICE_DATA * PCM_FRAMEBUF_DEVICE_DATA
EFI_CREATE_EVENT CreateEvent
EFI_WAIT_FOR_EVENT WaitForEvent
EFI_BOOT_SERVICES * BootServices
EFI_CONFIGURATION_TABLE * ConfigurationTable
UINTN NumberOfTableEntries
ULONG rsdt_physical_address
ULONGLONG xsdt_physical_address
PHYSICAL_ADDRESS RSDTAddress
ReactOS Framebuffer-specific video device configuration data.
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@494::@503 DeviceSpecificData
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@494 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@494::@499 Memory
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
MCFG_ALLOCATION Allocation[ANYSIZE_ARRAY]
DESCRIPTION_HEADER Header
struct _PCI_TYPE1_CFG_BITS::@157::@158 bits
union _PCI_TYPE1_CFG_BITS::@157 u
ULONG Tables[ANYSIZE_ARRAY]
DESCRIPTION_HEADER Header
PHYSICAL_ADDRESS Tables[ANYSIZE_ARRAY]
DESCRIPTION_HEADER Header
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define TAG_HW_RESOURCE_LIST
VOID DetectAcpiBios(PCONFIGURATION_COMPONENT_DATA SystemKey, ULONG *BusNumber)
static VOID DetectDisplayController(_In_ PCONFIGURATION_COMPONENT_DATA BusKey)
static VOID DetectInternal(PCONFIGURATION_COMPONENT_DATA SystemKey, ULONG *BusNumber)
PDESCRIPTION_HEADER UefiFindAcpiTable(_In_ ULONG Signature)
BOOLEAN IsAcpiPresent(VOID)
PCONFIGURATION_COMPONENT_DATA UefiHwDetect(_In_opt_ PCSTR Options)
EFI_SYSTEM_TABLE * GlobalSystemTable
VOID StallExecutionProcessor(ULONG Microseconds)
PCM_FRAMEBUF_DEVICE_DATA FrameBufferData
static PRSDP_DESCRIPTOR FindAcpiBios(VOID)
static EFI_EVENT IdleTimerEvent
EFI_HANDLE GlobalImageHandle
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
@ CmResourceShareDeviceExclusive
@ CmResourceShareUndetermined
#define PCI_MULTIFUNCTION
_Must_inspect_result_ typedef _Out_ PULONG TableSize