mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-11-04 10:19:50 +00:00 
			
		
		
		
	git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4908 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			400 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			400 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
 | 
						|
Copyright (c) 2006 - 2007, Intel Corporation
 | 
						|
All rights reserved. This program and the accompanying materials
 | 
						|
are licensed and made available under the terms and conditions of the BSD License
 | 
						|
which accompanies this distribution.  The full text of the license may be found at
 | 
						|
http://opensource.org/licenses/bsd-license.php
 | 
						|
 | 
						|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
Module Name:
 | 
						|
 | 
						|
  PciLib.h
 | 
						|
 | 
						|
Abstract:
 | 
						|
 | 
						|
  PCI Bus Driver Lib header file.
 | 
						|
  Please use PCD feature flag PcdPciBusHotplugDeviceSupport to enable
 | 
						|
  support hot plug.
 | 
						|
 | 
						|
Revision History
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef _EFI_PCI_LIB_H
 | 
						|
#define _EFI_PCI_LIB_H
 | 
						|
 | 
						|
//
 | 
						|
// Mask definistions for PCD PcdPciIncompatibleDeviceSupportMask
 | 
						|
//
 | 
						|
#define PCI_INCOMPATIBLE_ACPI_RESOURCE_SUPPORT         0x01
 | 
						|
#define PCI_INCOMPATIBLE_READ_SUPPORT                  0x02
 | 
						|
#define PCI_INCOMPATIBLE_WRITE_SUPPORT                 0x04
 | 
						|
#define PCI_INCOMPATIBLE_REGISTER_UPDATE_SUPPORT       0x08
 | 
						|
#define PCI_INCOMPATIBLE_ACCESS_WIDTH_SUPPORT          0x0a
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  EFI_HANDLE            Handle;
 | 
						|
} EFI_DEVICE_HANDLE_EXTENDED_DATA_PAYLOAD;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT32                             Bar;
 | 
						|
  UINT16                             DevicePathSize;
 | 
						|
  UINT16                             ReqResSize;
 | 
						|
  UINT16                             AllocResSize;
 | 
						|
  UINT8                              *DevicePath;
 | 
						|
  UINT8                              *ReqRes;
 | 
						|
  UINT8                              *AllocRes;
 | 
						|
} EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA_PAYLOAD;
 | 
						|
 | 
						|
void
 | 
						|
InstallHotPlugRequestProtocol (
 | 
						|
  IN  EFI_STATUS                    *Status
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  Status  - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
VOID
 | 
						|
InstallPciHotplugGuid (
 | 
						|
  IN  PCI_IO_DEVICE                  *PciIoDevice
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  PciIoDevice - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
VOID
 | 
						|
UninstallPciHotplugGuid (
 | 
						|
  IN  PCI_IO_DEVICE                  *PciIoDevice
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  PciIoDevice - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
VOID
 | 
						|
GetBackPcCardBar (
 | 
						|
  IN  PCI_IO_DEVICE                  *PciIoDevice
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  PciIoDevice - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
RemoveRejectedPciDevices (
 | 
						|
  EFI_HANDLE        RootBridgeHandle,
 | 
						|
  IN PCI_IO_DEVICE  *Bridge
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  RootBridgeHandle  - TODO: add argument description
 | 
						|
  Bridge            - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PciHostBridgeResourceAllocator (
 | 
						|
  IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *PciResAlloc
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  PciResAlloc - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PciHostBridgeResourceAllocator_WithoutHotPlugDeviceSupport (
 | 
						|
  IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *PciResAlloc
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PciHostBridgeResourceAllocator_WithHotPlugDeviceSupport (
 | 
						|
  IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *PciResAlloc
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PciScanBus (
 | 
						|
  IN PCI_IO_DEVICE                      *Bridge,
 | 
						|
  IN UINT8                              StartBusNumber,
 | 
						|
  OUT UINT8                             *SubBusNumber,
 | 
						|
  OUT UINT8                             *PaddedBusRange
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  Bridge          - TODO: add argument description
 | 
						|
  StartBusNumber  - TODO: add argument description
 | 
						|
  SubBusNumber    - TODO: add argument description
 | 
						|
  PaddedBusRange  - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PciScanBus_WithHotPlugDeviceSupport (
 | 
						|
  IN PCI_IO_DEVICE                      *Bridge,
 | 
						|
  IN UINT8                              StartBusNumber,
 | 
						|
  OUT UINT8                             *SubBusNumber,
 | 
						|
  OUT UINT8                             *PaddedBusRange
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PciScanBus_WithoutHotPlugDeviceSupport (
 | 
						|
  IN PCI_IO_DEVICE                      *Bridge,
 | 
						|
  IN UINT8                              StartBusNumber,
 | 
						|
  OUT UINT8                             *SubBusNumber,
 | 
						|
  OUT UINT8                             *PaddedBusRange
 | 
						|
  )
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PciRootBridgeP2CProcess (
 | 
						|
  IN PCI_IO_DEVICE *Bridge
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  Bridge  - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PciHostBridgeP2CProcess (
 | 
						|
  IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *PciResAlloc
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  PciResAlloc - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PciHostBridgeEnumerator (
 | 
						|
  EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL  *PciResAlloc
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  TODO: Add function description
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  PciResAlloc - TODO: add argument description
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  TODO: add return values
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
/**
 | 
						|
  Read PCI configuration space through EFI_PCI_IO_PROTOCOL.
 | 
						|
 | 
						|
  @param  PciIo               A pointer to the EFI_PCI_O_PROTOCOL.
 | 
						|
  @param  Width               Signifies the width of the memory operations.
 | 
						|
  @Param  Address             The address within the PCI configuration space for the PCI controller.
 | 
						|
  @param  Buffer              For read operations, the destination buffer to store the results. For
 | 
						|
                              write operations, the source buffer to write data from.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The data was read from or written to the PCI root bridge.
 | 
						|
  @retval EFI_INVALID_PARAMETER  Width is invalid for this PCI root bridge.
 | 
						|
  @retval EFI_INVALID_PARAMETER  Buffer is NULL.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES   The request could not be completed due to a lack of resources.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
PciIoRead (
 | 
						|
  IN       EFI_PCI_IO_PROTOCOL                    *PciIo,
 | 
						|
  IN       EFI_PCI_IO_PROTOCOL_WIDTH              Width,
 | 
						|
  IN       UINT32                                 Address,
 | 
						|
  IN       UINTN                                  Count,
 | 
						|
  IN OUT   VOID                                   *Buffer
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Write PCI configuration space through EFI_PCI_IO_PROTOCOL.
 | 
						|
 | 
						|
  @param  PciIo               A pointer to the EFI_PCI_O_PROTOCOL.
 | 
						|
  @param  Width               Signifies the width of the memory operations.
 | 
						|
  @Param  Address             The address within the PCI configuration space for the PCI controller.
 | 
						|
  @param  Buffer              For read operations, the destination buffer to store the results. For
 | 
						|
                              write operations, the source buffer to write data from.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The data was read from or written to the PCI root bridge.
 | 
						|
  @retval EFI_INVALID_PARAMETER  Width is invalid for this PCI root bridge.
 | 
						|
  @retval EFI_INVALID_PARAMETER  Buffer is NULL.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES   The request could not be completed due to a lack of resources.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
PciIoWrite (
 | 
						|
  IN       EFI_PCI_IO_PROTOCOL                    *PciIo,
 | 
						|
  IN       EFI_PCI_IO_PROTOCOL_WIDTH              Width,
 | 
						|
  IN       UINT32                                 Address,
 | 
						|
  IN       UINTN                                  Count,
 | 
						|
  IN OUT   VOID                                   *Buffer
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Write PCI configuration space through EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.
 | 
						|
 | 
						|
  @param  PciRootBridgeIo     A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.
 | 
						|
  @param  Pci                 A pointer to PCI_TYPE00.
 | 
						|
  @param  Width               Signifies the width of the memory operations.
 | 
						|
  @Param  Address             The address within the PCI configuration space for the PCI controller.
 | 
						|
  @param  Buffer              For read operations, the destination buffer to store the results. For
 | 
						|
                              write operations, the source buffer to write data from.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The data was read from or written to the PCI root bridge.
 | 
						|
  @retval EFI_INVALID_PARAMETER  Width is invalid for this PCI root bridge.
 | 
						|
  @retval EFI_INVALID_PARAMETER  Buffer is NULL.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES   The request could not be completed due to a lack of resources.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
PciRootBridgeIoWrite (
 | 
						|
  IN       EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *PciRootBridgeIo,
 | 
						|
  IN       PCI_TYPE00                             *Pci,
 | 
						|
  IN       EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,
 | 
						|
  IN       UINT64                                 Address,
 | 
						|
  IN       UINTN                                  Count,
 | 
						|
  IN OUT   VOID                                   *Buffer
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Read PCI configuration space through EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.
 | 
						|
 | 
						|
  @param  PciRootBridgeIo     A pointer to the EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.
 | 
						|
  @param  Pci                 A pointer to PCI_TYPE00.
 | 
						|
  @param  Width               Signifies the width of the memory operations.
 | 
						|
  @Param  Address             The address within the PCI configuration space for the PCI controller.
 | 
						|
  @param  Buffer              For read operations, the destination buffer to store the results. For
 | 
						|
                              write operations, the source buffer to write data from.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The data was read from or written to the PCI root bridge.
 | 
						|
  @retval EFI_INVALID_PARAMETER  Width is invalid for this PCI root bridge.
 | 
						|
  @retval EFI_INVALID_PARAMETER  Buffer is NULL.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES   The request could not be completed due to a lack of resources.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
PciRootBridgeIoRead (
 | 
						|
  IN       EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL        *PciRootBridgeIo,
 | 
						|
  IN       PCI_TYPE00                             *Pci,
 | 
						|
  IN       EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_WIDTH  Width,
 | 
						|
  IN       UINT64                                 Address,
 | 
						|
  IN       UINTN                                  Count,
 | 
						|
  IN OUT   VOID                                   *Buffer
 | 
						|
  );
 | 
						|
#endif
 |