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
 | 
						|
  );
 |