#include <IndustryStandard/Acpi.h>\r
\r
typedef struct {\r
- UINT64 VendorId;\r
- UINT64 DeviceId;\r
- UINT64 RevisionId;\r
- UINT64 SubsystemVendorId;\r
- UINT64 SubsystemDeviceId;\r
+ UINT64 VendorId;\r
+ UINT64 DeviceId;\r
+ UINT64 RevisionId;\r
+ UINT64 SubsystemVendorId;\r
+ UINT64 SubsystemDeviceId;\r
} EFI_PCI_DEVICE_HEADER_INFO;\r
\r
typedef struct {\r
- UINT64 ResType;\r
- UINT64 GenFlag;\r
- UINT64 SpecificFlag;\r
- UINT64 AddrSpaceGranularity;\r
- UINT64 AddrRangeMin;\r
- UINT64 AddrRangeMax;\r
- UINT64 AddrTranslationOffset;\r
- UINT64 AddrLen;\r
+ UINT64 ResType;\r
+ UINT64 GenFlag;\r
+ UINT64 SpecificFlag;\r
+ UINT64 AddrSpaceGranularity;\r
+ UINT64 AddrRangeMin;\r
+ UINT64 AddrRangeMax;\r
+ UINT64 AddrTranslationOffset;\r
+ UINT64 AddrLen;\r
} EFI_PCI_RESOUCE_DESCRIPTOR;\r
\r
#define PCI_DEVICE_ID(VendorId, DeviceId, Revision, SubVendorId, SubDeviceId) \\r
VendorId, DeviceId, Revision, SubVendorId, SubDeviceId\r
\r
-#define DEVICE_INF_TAG 0xFFF2\r
-#define DEVICE_RES_TAG 0xFFF1\r
-#define LIST_END_TAG 0x0000\r
+#define DEVICE_INF_TAG 0xFFF2\r
+#define DEVICE_RES_TAG 0xFFF1\r
+#define LIST_END_TAG 0x0000\r
\r
-#define EVEN_ALIGN 0xFFFFFFFFFFFFFFFEULL\r
+#define EVEN_ALIGN 0xFFFFFFFFFFFFFFFEULL\r
\r
/**\r
Returns a list of ACPI resource descriptors that detail the special\r
//\r
// Handle onto which the Incompatible PCI Device List is installed\r
//\r
-EFI_HANDLE mIncompatiblePciDeviceSupportHandle = NULL;\r
+EFI_HANDLE mIncompatiblePciDeviceSupportHandle = NULL;\r
\r
//\r
// The Incompatible PCI Device Support Protocol instance produced by this driver\r
//\r
// The incompatible PCI devices list template\r
//\r
-GLOBAL_REMOVE_IF_UNREFERENCED UINT64 mIncompatiblePciDeviceList[] = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED UINT64 mIncompatiblePciDeviceList[] = {\r
//\r
// DEVICE_INF_TAG,\r
// PCI_DEVICE_ID (VendorID, DeviceID, Revision, SubVendorId, SubDeviceId),\r
// Device Adaptec 9004\r
//\r
DEVICE_INF_TAG,\r
- PCI_DEVICE_ID(0x9004, MAX_UINT64, MAX_UINT64, MAX_UINT64, MAX_UINT64),\r
+ PCI_DEVICE_ID (0x9004, MAX_UINT64, MAX_UINT64, MAX_UINT64, MAX_UINT64),\r
DEVICE_RES_TAG,\r
ACPI_ADDRESS_SPACE_TYPE_IO,\r
0,\r
// Device Adaptec 9005\r
//\r
DEVICE_INF_TAG,\r
- PCI_DEVICE_ID(0x9005, MAX_UINT64, MAX_UINT64, MAX_UINT64, MAX_UINT64),\r
+ PCI_DEVICE_ID (0x9005, MAX_UINT64, MAX_UINT64, MAX_UINT64, MAX_UINT64),\r
DEVICE_RES_TAG,\r
ACPI_ADDRESS_SPACE_TYPE_IO,\r
0,\r
// Device QLogic 1007\r
//\r
DEVICE_INF_TAG,\r
- PCI_DEVICE_ID(0x1077, MAX_UINT64, MAX_UINT64, MAX_UINT64, MAX_UINT64),\r
+ PCI_DEVICE_ID (0x1077, MAX_UINT64, MAX_UINT64, MAX_UINT64, MAX_UINT64),\r
DEVICE_RES_TAG,\r
ACPI_ADDRESS_SPACE_TYPE_IO,\r
0,\r
// Device Agilent 103C\r
//\r
DEVICE_INF_TAG,\r
- PCI_DEVICE_ID(0x103C, MAX_UINT64, MAX_UINT64, MAX_UINT64, MAX_UINT64),\r
+ PCI_DEVICE_ID (0x103C, MAX_UINT64, MAX_UINT64, MAX_UINT64, MAX_UINT64),\r
DEVICE_RES_TAG,\r
ACPI_ADDRESS_SPACE_TYPE_IO,\r
0,\r
// Device Agilent 15BC\r
//\r
DEVICE_INF_TAG,\r
- PCI_DEVICE_ID(0x15BC, MAX_UINT64, MAX_UINT64, MAX_UINT64, MAX_UINT64),\r
+ PCI_DEVICE_ID (0x15BC, MAX_UINT64, MAX_UINT64, MAX_UINT64, MAX_UINT64),\r
DEVICE_RES_TAG,\r
ACPI_ADDRESS_SPACE_TYPE_IO,\r
0,\r
LIST_END_TAG\r
};\r
\r
-\r
/**\r
Entry point of the incompatible pci device support code. Setup an incompatible device list template\r
and install EFI Incompatible PCI Device Support protocol.\r
EFI_STATUS\r
EFIAPI\r
IncompatiblePciDeviceSupportEntryPoint (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// Install EFI Incompatible PCI Device Support Protocol on a new handle\r
OUT VOID **Configuration\r
)\r
{\r
- UINT64 Tag;\r
- UINT64 *ListPtr;\r
- UINT64 *TempListPtr;\r
- EFI_PCI_DEVICE_HEADER_INFO *Header;\r
- EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *AcpiPtr;\r
- EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *OldAcpiPtr;\r
- EFI_PCI_RESOUCE_DESCRIPTOR *Dsc;\r
- EFI_ACPI_END_TAG_DESCRIPTOR *PtrEnd;\r
- UINTN Index;\r
+ UINT64 Tag;\r
+ UINT64 *ListPtr;\r
+ UINT64 *TempListPtr;\r
+ EFI_PCI_DEVICE_HEADER_INFO *Header;\r
+ EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *AcpiPtr;\r
+ EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *OldAcpiPtr;\r
+ EFI_PCI_RESOUCE_DESCRIPTOR *Dsc;\r
+ EFI_ACPI_END_TAG_DESCRIPTOR *PtrEnd;\r
+ UINTN Index;\r
\r
//\r
// Validate the parameters\r
if (Configuration == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
//\r
// Initialize the return value to NULL\r
//\r
- * (VOID **) Configuration = NULL;\r
+ *(VOID **)Configuration = NULL;\r
\r
- ListPtr = mIncompatiblePciDeviceList;\r
+ ListPtr = mIncompatiblePciDeviceList;\r
while (*ListPtr != LIST_END_TAG) {\r
-\r
Tag = *ListPtr;\r
\r
switch (Tag) {\r
- case DEVICE_INF_TAG:\r
- Header = (EFI_PCI_DEVICE_HEADER_INFO *) (ListPtr + 1);\r
- ListPtr = ListPtr + 1 + sizeof (EFI_PCI_DEVICE_HEADER_INFO) / sizeof (UINT64);\r
- //\r
- // See if the Header matches the parameters passed in\r
- //\r
- if ((Header->VendorId != MAX_UINT64) && (VendorId != MAX_UINTN)) {\r
- if (Header->VendorId != VendorId) {\r
- continue;\r
+ case DEVICE_INF_TAG:\r
+ Header = (EFI_PCI_DEVICE_HEADER_INFO *)(ListPtr + 1);\r
+ ListPtr = ListPtr + 1 + sizeof (EFI_PCI_DEVICE_HEADER_INFO) / sizeof (UINT64);\r
+ //\r
+ // See if the Header matches the parameters passed in\r
+ //\r
+ if ((Header->VendorId != MAX_UINT64) && (VendorId != MAX_UINTN)) {\r
+ if (Header->VendorId != VendorId) {\r
+ continue;\r
+ }\r
}\r
- }\r
\r
- if ((Header->DeviceId != MAX_UINT64) && (DeviceId != MAX_UINTN)) {\r
- if (DeviceId != Header->DeviceId) {\r
- continue;\r
+ if ((Header->DeviceId != MAX_UINT64) && (DeviceId != MAX_UINTN)) {\r
+ if (DeviceId != Header->DeviceId) {\r
+ continue;\r
+ }\r
}\r
- }\r
\r
- if ((Header->RevisionId != MAX_UINT64) && (RevisionId != MAX_UINTN)) {\r
- if (RevisionId != Header->RevisionId) {\r
- continue;\r
+ if ((Header->RevisionId != MAX_UINT64) && (RevisionId != MAX_UINTN)) {\r
+ if (RevisionId != Header->RevisionId) {\r
+ continue;\r
+ }\r
}\r
- }\r
\r
- if ((Header->SubsystemVendorId != MAX_UINT64) && (SubsystemVendorId != MAX_UINTN)) {\r
- if (SubsystemVendorId != Header->SubsystemVendorId) {\r
- continue;\r
+ if ((Header->SubsystemVendorId != MAX_UINT64) && (SubsystemVendorId != MAX_UINTN)) {\r
+ if (SubsystemVendorId != Header->SubsystemVendorId) {\r
+ continue;\r
+ }\r
}\r
- }\r
\r
- if ((Header->SubsystemDeviceId != MAX_UINT64) && (SubsystemDeviceId != MAX_UINTN)) {\r
- if (SubsystemDeviceId != Header->SubsystemDeviceId) {\r
- continue;\r
+ if ((Header->SubsystemDeviceId != MAX_UINT64) && (SubsystemDeviceId != MAX_UINTN)) {\r
+ if (SubsystemDeviceId != Header->SubsystemDeviceId) {\r
+ continue;\r
+ }\r
}\r
- }\r
- //\r
- // Matched an item, so construct the ACPI descriptor for the resource.\r
- //\r
- //\r
- // Count the resource items so that to allocate space\r
- //\r
- for (Index = 0, TempListPtr = ListPtr; *TempListPtr == DEVICE_RES_TAG; Index++) {\r
- TempListPtr = TempListPtr + 1 + ((sizeof (EFI_PCI_RESOUCE_DESCRIPTOR)) / sizeof (UINT64));\r
- }\r
- //\r
- // If there is at least one type of resource request,\r
- // allocate an acpi resource node\r
- //\r
- if (Index == 0) {\r
- return EFI_UNSUPPORTED;\r
- }\r
-\r
- AcpiPtr = AllocateZeroPool (sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) * Index + sizeof (EFI_ACPI_END_TAG_DESCRIPTOR));\r
- if (AcpiPtr == NULL) {\r
- return EFI_OUT_OF_RESOURCES;\r
- }\r
-\r
- OldAcpiPtr = AcpiPtr;\r
- //\r
- // Fill the EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR structure\r
- // according to the EFI_PCI_RESOUCE_DESCRIPTOR structure\r
- //\r
- for (; *ListPtr == DEVICE_RES_TAG;) {\r
-\r
- Dsc = (EFI_PCI_RESOUCE_DESCRIPTOR *) (ListPtr + 1);\r
-\r
- AcpiPtr->Desc = ACPI_ADDRESS_SPACE_DESCRIPTOR;\r
- AcpiPtr->Len = (UINT16) sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3;\r
- AcpiPtr->ResType = (UINT8) Dsc->ResType;\r
- AcpiPtr->GenFlag = (UINT8) Dsc->GenFlag;\r
- AcpiPtr->SpecificFlag = (UINT8) Dsc->SpecificFlag;\r
- AcpiPtr->AddrSpaceGranularity = Dsc->AddrSpaceGranularity;;\r
- AcpiPtr->AddrRangeMin = Dsc->AddrRangeMin;\r
- AcpiPtr->AddrRangeMax = Dsc->AddrRangeMax;\r
- AcpiPtr->AddrTranslationOffset = Dsc->AddrTranslationOffset;\r
- AcpiPtr->AddrLen = Dsc->AddrLen;\r
\r
+ //\r
+ // Matched an item, so construct the ACPI descriptor for the resource.\r
+ //\r
+ //\r
+ // Count the resource items so that to allocate space\r
+ //\r
+ for (Index = 0, TempListPtr = ListPtr; *TempListPtr == DEVICE_RES_TAG; Index++) {\r
+ TempListPtr = TempListPtr + 1 + ((sizeof (EFI_PCI_RESOUCE_DESCRIPTOR)) / sizeof (UINT64));\r
+ }\r
+\r
+ //\r
+ // If there is at least one type of resource request,\r
+ // allocate an acpi resource node\r
+ //\r
+ if (Index == 0) {\r
+ return EFI_UNSUPPORTED;\r
+ }\r
+\r
+ AcpiPtr = AllocateZeroPool (sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) * Index + sizeof (EFI_ACPI_END_TAG_DESCRIPTOR));\r
+ if (AcpiPtr == NULL) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
+\r
+ OldAcpiPtr = AcpiPtr;\r
+ //\r
+ // Fill the EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR structure\r
+ // according to the EFI_PCI_RESOUCE_DESCRIPTOR structure\r
+ //\r
+ for ( ; *ListPtr == DEVICE_RES_TAG;) {\r
+ Dsc = (EFI_PCI_RESOUCE_DESCRIPTOR *)(ListPtr + 1);\r
+\r
+ AcpiPtr->Desc = ACPI_ADDRESS_SPACE_DESCRIPTOR;\r
+ AcpiPtr->Len = (UINT16)sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3;\r
+ AcpiPtr->ResType = (UINT8)Dsc->ResType;\r
+ AcpiPtr->GenFlag = (UINT8)Dsc->GenFlag;\r
+ AcpiPtr->SpecificFlag = (UINT8)Dsc->SpecificFlag;\r
+ AcpiPtr->AddrSpaceGranularity = Dsc->AddrSpaceGranularity;\r
+ AcpiPtr->AddrRangeMin = Dsc->AddrRangeMin;\r
+ AcpiPtr->AddrRangeMax = Dsc->AddrRangeMax;\r
+ AcpiPtr->AddrTranslationOffset = Dsc->AddrTranslationOffset;\r
+ AcpiPtr->AddrLen = Dsc->AddrLen;\r
+\r
+ ListPtr = ListPtr + 1 + ((sizeof (EFI_PCI_RESOUCE_DESCRIPTOR)) / sizeof (UINT64));\r
+ AcpiPtr++;\r
+ }\r
+\r
+ //\r
+ // Put the checksum\r
+ //\r
+ PtrEnd = (EFI_ACPI_END_TAG_DESCRIPTOR *)(AcpiPtr);\r
+ PtrEnd->Desc = ACPI_END_TAG_DESCRIPTOR;\r
+ PtrEnd->Checksum = 0;\r
+\r
+ *(VOID **)Configuration = OldAcpiPtr;\r
+\r
+ return EFI_SUCCESS;\r
+\r
+ case DEVICE_RES_TAG:\r
+ //\r
+ // Adjust the pointer to the next PCI resource descriptor item\r
+ //\r
ListPtr = ListPtr + 1 + ((sizeof (EFI_PCI_RESOUCE_DESCRIPTOR)) / sizeof (UINT64));\r
- AcpiPtr++;\r
- }\r
- //\r
- // Put the checksum\r
- //\r
- PtrEnd = (EFI_ACPI_END_TAG_DESCRIPTOR *) (AcpiPtr);\r
- PtrEnd->Desc = ACPI_END_TAG_DESCRIPTOR;\r
- PtrEnd->Checksum = 0;\r
-\r
- *(VOID **) Configuration = OldAcpiPtr;\r
-\r
- return EFI_SUCCESS;\r
-\r
- case DEVICE_RES_TAG:\r
- //\r
- // Adjust the pointer to the next PCI resource descriptor item\r
- //\r
- ListPtr = ListPtr + 1 + ((sizeof (EFI_PCI_RESOUCE_DESCRIPTOR)) / sizeof (UINT64));\r
- break;\r
-\r
- default:\r
- return EFI_UNSUPPORTED;\r
+ break;\r
+\r
+ default:\r
+ return EFI_UNSUPPORTED;\r
}\r
}\r
\r
return EFI_UNSUPPORTED;\r
}\r
-\r