mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-31 11:13:53 +01:00 
			
		
		
		
	2. Complete the public inclusion files git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2746 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			135 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @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
 | |
|   );
 |