REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			177 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   This file declares PciCfg2 PPI.
 | |
| 
 | |
|   This ppi Provides platform or chipset-specific access to
 | |
|   the PCI configuration space for a specific PCI segment.
 | |
| 
 | |
|   Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
|   @par Revision Reference:
 | |
|   This PPI is introduced in PI Version 1.0.
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __PEI_PCI_CFG2_H__
 | |
| #define __PEI_PCI_CFG2_H__
 | |
| 
 | |
| #include <Library/BaseLib.h>
 | |
| 
 | |
| #define EFI_PEI_PCI_CFG2_PPI_GUID \
 | |
|   { 0x57a449a, 0x1fdc, 0x4c06, { 0xbf, 0xc9, 0xf5, 0x3f, 0x6a, 0x99, 0xbb, 0x92 } }
 | |
| 
 | |
| typedef struct _EFI_PEI_PCI_CFG2_PPI EFI_PEI_PCI_CFG2_PPI;
 | |
| 
 | |
| #define EFI_PEI_PCI_CFG_ADDRESS(bus, dev, func, reg) \
 | |
|   (UINT64) ( \
 | |
|   (((UINTN) bus) << 24) | \
 | |
|   (((UINTN) dev) << 16) | \
 | |
|   (((UINTN) func) << 8) | \
 | |
|   (((UINTN) (reg)) < 256 ? ((UINTN) (reg)) : (UINT64) (LShiftU64 ((UINT64) (reg), 32))))
 | |
| 
 | |
| ///
 | |
| /// EFI_PEI_PCI_CFG_PPI_WIDTH
 | |
| ///
 | |
| typedef enum {
 | |
|   ///
 | |
|   ///  8-bit access
 | |
|   ///
 | |
|   EfiPeiPciCfgWidthUint8 = 0,
 | |
|   ///
 | |
|   /// 16-bit access
 | |
|   ///
 | |
|   EfiPeiPciCfgWidthUint16 = 1,
 | |
|   ///
 | |
|   /// 32-bit access
 | |
|   ///
 | |
|   EfiPeiPciCfgWidthUint32 = 2,
 | |
|   ///
 | |
|   /// 64-bit access
 | |
|   ///
 | |
|   EfiPeiPciCfgWidthUint64 = 3,
 | |
|   EfiPeiPciCfgWidthMaximum
 | |
| } EFI_PEI_PCI_CFG_PPI_WIDTH;
 | |
| 
 | |
| ///
 | |
| /// EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS
 | |
| ///
 | |
| typedef struct {
 | |
|   ///
 | |
|   /// 8-bit register offset within the PCI configuration space for a given device's function
 | |
|   /// space.
 | |
|   ///
 | |
|   UINT8     Register;
 | |
|   ///
 | |
|   /// Only the 3 least-significant bits are used to encode one of 8 possible functions within a
 | |
|   /// given device.
 | |
|   ///
 | |
|   UINT8     Function;
 | |
|   ///
 | |
|   /// Only the 5 least-significant bits are used to encode one of 32 possible devices.
 | |
|   ///
 | |
|   UINT8     Device;
 | |
|   ///
 | |
|   /// 8-bit value to encode between 0 and 255 buses.
 | |
|   ///
 | |
|   UINT8     Bus;
 | |
|   ///
 | |
|   /// Register number in PCI configuration space. If this field is zero, then Register is used
 | |
|   /// for the register number. If this field is non-zero, then Register is ignored and this field
 | |
|   /// is used for the register number.
 | |
|   ///
 | |
|   UINT32    ExtendedRegister;
 | |
| } EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS;
 | |
| 
 | |
| /**
 | |
|   Reads from or write to a given location in the PCI configuration space.
 | |
| 
 | |
|   @param  PeiServices     An indirect pointer to the PEI Services Table published by the PEI Foundation.
 | |
| 
 | |
|   @param  This            Pointer to local data for the interface.
 | |
| 
 | |
|   @param  Width           The width of the access. Enumerated in bytes.
 | |
|                           See EFI_PEI_PCI_CFG_PPI_WIDTH above.
 | |
| 
 | |
|   @param  Address         The physical address of the access. The format of
 | |
|                           the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS.
 | |
| 
 | |
|   @param  Buffer          A pointer to the buffer of data..
 | |
| 
 | |
| 
 | |
|   @retval EFI_SUCCESS           The function completed successfully.
 | |
| 
 | |
|   @retval EFI_DEVICE_ERROR      There was a problem with the transaction.
 | |
| 
 | |
|   @retval EFI_DEVICE_NOT_READY  The device is not capable of supporting the operation at this
 | |
|                                 time.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_PEI_PCI_CFG2_PPI_IO)(
 | |
|   IN CONST  EFI_PEI_SERVICES          **PeiServices,
 | |
|   IN CONST  EFI_PEI_PCI_CFG2_PPI      *This,
 | |
|   IN        EFI_PEI_PCI_CFG_PPI_WIDTH Width,
 | |
|   IN        UINT64                    Address,
 | |
|   IN OUT    VOID                      *Buffer
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Performs a read-modify-write operation on the contents
 | |
|   from a given location in the PCI configuration space.
 | |
| 
 | |
|   @param  PeiServices     An indirect pointer to the PEI Services Table
 | |
|                           published by the PEI Foundation.
 | |
| 
 | |
|   @param  This            Pointer to local data for the interface.
 | |
| 
 | |
|   @param  Width           The width of the access. Enumerated in bytes. Type
 | |
|                           EFI_PEI_PCI_CFG_PPI_WIDTH is defined in Read().
 | |
| 
 | |
|   @param  Address         The physical address of the access.
 | |
| 
 | |
|   @param  SetBits         Points to value to bitwise-OR with the read configuration value.
 | |
| 
 | |
|                           The size of the value is determined by Width.
 | |
| 
 | |
|   @param  ClearBits       Points to the value to negate and bitwise-AND with the read configuration value.
 | |
|                           The size of the value is determined by Width.
 | |
| 
 | |
| 
 | |
|   @retval EFI_SUCCESS           The function completed successfully.
 | |
| 
 | |
|   @retval EFI_DEVICE_ERROR      There was a problem with the transaction.
 | |
| 
 | |
|   @retval EFI_DEVICE_NOT_READY  The device is not capable of supporting
 | |
|                                 the operation at this time.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_PEI_PCI_CFG2_PPI_RW)(
 | |
|   IN CONST  EFI_PEI_SERVICES          **PeiServices,
 | |
|   IN CONST  EFI_PEI_PCI_CFG2_PPI      *This,
 | |
|   IN        EFI_PEI_PCI_CFG_PPI_WIDTH Width,
 | |
|   IN        UINT64                    Address,
 | |
|   IN        VOID                      *SetBits,
 | |
|   IN        VOID                      *ClearBits
 | |
|   );
 | |
| 
 | |
| ///
 | |
| /// The EFI_PEI_PCI_CFG_PPI interfaces are used to abstract accesses to PCI
 | |
| /// controllers behind a PCI root bridge controller.
 | |
| ///
 | |
| struct _EFI_PEI_PCI_CFG2_PPI {
 | |
|   EFI_PEI_PCI_CFG2_PPI_IO    Read;
 | |
|   EFI_PEI_PCI_CFG2_PPI_IO    Write;
 | |
|   EFI_PEI_PCI_CFG2_PPI_RW    Modify;
 | |
|   ///
 | |
|   /// The PCI bus segment which the specified functions will access.
 | |
|   ///
 | |
|   UINT16                     Segment;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID  gEfiPciCfg2PpiGuid;
 | |
| 
 | |
| #endif
 |