]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Include/Library/PciIncompatibleDeviceSupportLib.h
1. Added EdkPciIncompatibleDeviceSupportLib in EdkModulePkg, this library is used...
[mirror_edk2.git] / EdkModulePkg / Include / Library / PciIncompatibleDeviceSupportLib.h
diff --git a/EdkModulePkg/Include/Library/PciIncompatibleDeviceSupportLib.h b/EdkModulePkg/Include/Library/PciIncompatibleDeviceSupportLib.h
new file mode 100644 (file)
index 0000000..527a704
--- /dev/null
@@ -0,0 +1,134 @@
+/** @file\r
+  PCI Incompatible device support Libary.\r
+\r
+Copyright (c) 2007 Intel Corporation. All rights reserved. <BR>\r
+This software and associated documentation (if any) is furnished\r
+under a license and may only be used or copied in accordance\r
+with the terms of the license. Except as permitted by such\r
+license, no part of this software or documentation may be\r
+reproduced, stored in a retrieval system, or transmitted in any\r
+form or by any means without the express written consent of\r
+Intel Corporation.\r
+\r
+**/\r
+\r
+#define PCI_REGISTER_READ    0xfffffffffffffff1ULL\r
+#define PCI_REGISTER_WRITE   0xfffffffffffffff2ULL\r
+#define VALUE_NOCARE         0xffffffffffffffffULL\r
+\r
+//\r
+// PCI device device information\r
+//\r
+typedef struct {\r
+  UINT64              VendorID;\r
+  UINT64              DeviceID;\r
+  UINT64              RevisionID;\r
+  UINT64              SubsystemVendorID;\r
+  UINT64              SubsystemID;\r
+} EFI_PCI_DEVICE_INFO;\r
+\r
+\r
+//\r
+// store hardcode value of resgister\r
+//\r
+typedef struct {\r
+  UINT64              AndValue;\r
+  UINT64              OrValue;\r
+} EFI_PCI_REGISTER_VALUE_DATA;\r
+\r
+//\r
+// store access width information\r
+//\r
+typedef struct {\r
+  UINT64              StartOffset;\r
+  UINT64              EndOffset;\r
+  UINT64              Width;\r
+} EFI_PCI_REGISTER_ACCESS_DATA;\r
+\r
+\r
+//\r
+// ACPI resource descriptor\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
+} EFI_PCI_RESOUCE_DESCRIPTOR;\r
+\r
+/**\r
+  Checks the incompatible device list for ACPI resource update and return\r
+  the configuration.\r
+\r
+  This function searches the incompatible device list according to request\r
+  information. If the PCI device belongs to the devices list, corresponding\r
+  configuration informtion will be returned, in the meantime return EFI_SUCCESS.\r
+\r
+  @param  PciDeviceInfo       A pointer to PCI device information.\r
+  @param  Configuration       Returned information.\r
+\r
+  @retval returns EFI_SUCCESS if check incompatible device ok.\r
+          Otherwise return EFI_UNSUPPORTED.\r
+**/\r
+RETURN_STATUS\r
+EFIAPI\r
+PciResourceUpdateCheck (\r
+  IN  EFI_PCI_DEVICE_INFO           *PciDeviceInfo,\r
+  OUT VOID                          *Configuration\r
+  );\r
+\r
+/**\r
+  Checks the incompatible device list and return configuration register mask values.\r
+\r
+  This function searches the incompatible device list according to request\r
+  information. If the PCI device belongs to the devices list, corresponding\r
+  configuration informtion will be returned, in the meantime return EFI_SUCCESS.\r
+\r
+  @param  PciDeviceInfo       A pointer to EFI_PCI_DEVICE_INFO.\r
+  @param  AccessType          Access Type, READ or WRITE.\r
+  @param  Offset              The address within the PCI configuration space.\r
+  @param  Configuration       Returned information.\r
+\r
+  @retval returns EFI_SUCCESS if check incompatible device ok.\r
+          Otherwise return EFI_UNSUPPORTED.\r
+**/\r
+RETURN_STATUS\r
+EFIAPI\r
+PciRegisterUpdateCheck (\r
+  IN  EFI_PCI_DEVICE_INFO           *PciDeviceInfo,\r
+  IN  UINT64                        AccessType,\r
+  IN  UINT64                        Offset,\r
+  OUT VOID                          *Configuration\r
+  );\r
+\r
+/**\r
+  Checks the incompatible device list for access width incompatibility and\r
+  return the configuration\r
+\r
+  This function searches the incompatible device list for access width\r
+  incompatibility according to request information. If the PCI device\r
+  belongs to the devices list, corresponding configuration informtion\r
+  will be returned, in the meantime return EFI_SUCCESS.\r
+\r
+  @param  PciDeviceInfo       A pointer to PCI device information.\r
+  @param  AccessType          Access type, READ or WRITE.\r
+  @param  Offset              The address within the PCI configuration space.\r
+  @param  AccessWidth         Access width needs to check incompatibility.\r
+  @param  Configuration       Returned information.\r
+\r
+  @retval returns EFI_SUCCESS if check incompatible device ok.\r
+          Otherwise return EFI_UNSUPPORTED.\r
+**/\r
+RETURN_STATUS\r
+EFIAPI\r
+PciRegisterAccessCheck (\r
+  IN  EFI_PCI_DEVICE_INFO           *PciDeviceInfo,\r
+  IN  UINT64                        AccessType,\r
+  IN  UINT64                        Offset,\r
+  IN  UINT64                        AccessWidth,\r
+  OUT VOID                          *Configuration\r
+  );\r