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