REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdeModulePkg 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>
		
			
				
	
	
		
			271 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			271 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
 | 
						|
  The Header file of the Pci Host Bridge Driver.
 | 
						|
 | 
						|
Copyright (c) 1999 - 2018, Intel Corporation. All rights reserved.<BR>
 | 
						|
SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef _PCI_HOST_BRIDGE_H_
 | 
						|
#define _PCI_HOST_BRIDGE_H_
 | 
						|
 | 
						|
#include <PiDxe.h>
 | 
						|
#include <IndustryStandard/Acpi.h>
 | 
						|
#include <Library/UefiDriverEntryPoint.h>
 | 
						|
#include <Library/MemoryAllocationLib.h>
 | 
						|
#include <Library/PciHostBridgeLib.h>
 | 
						|
#include <Protocol/PciHostBridgeResourceAllocation.h>
 | 
						|
#include <Protocol/IoMmu.h>
 | 
						|
 | 
						|
#include "PciRootBridge.h"
 | 
						|
 | 
						|
#define PCI_HOST_BRIDGE_SIGNATURE  SIGNATURE_32 ('p', 'h', 'b', 'g')
 | 
						|
typedef struct {
 | 
						|
  UINTN                                               Signature;
 | 
						|
  EFI_HANDLE                                          Handle;
 | 
						|
  LIST_ENTRY                                          RootBridges;
 | 
						|
  BOOLEAN                                             CanRestarted;
 | 
						|
  EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL    ResAlloc;
 | 
						|
} PCI_HOST_BRIDGE_INSTANCE;
 | 
						|
 | 
						|
#define PCI_HOST_BRIDGE_FROM_THIS(a)  CR (a, PCI_HOST_BRIDGE_INSTANCE, ResAlloc, PCI_HOST_BRIDGE_SIGNATURE)
 | 
						|
 | 
						|
//
 | 
						|
// Macros to translate device address to host address and vice versa. According
 | 
						|
// to UEFI 2.7, device address = host address + translation offset.
 | 
						|
//
 | 
						|
#define TO_HOST_ADDRESS(DeviceAddress, TranslationOffset)  ((DeviceAddress) - (TranslationOffset))
 | 
						|
#define TO_DEVICE_ADDRESS(HostAddress, TranslationOffset)  ((HostAddress) + (TranslationOffset))
 | 
						|
 | 
						|
//
 | 
						|
// Driver Entry Point
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Entry point of this driver.
 | 
						|
 | 
						|
  @param ImageHandle  -  Image handle of this driver.
 | 
						|
  @param SystemTable  -  Pointer to standard EFI system table.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS       -  Succeed.
 | 
						|
  @retval EFI_DEVICE_ERROR  -  Fail to install PCI_ROOT_BRIDGE_IO protocol.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
InitializePciHostBridge (
 | 
						|
  IN EFI_HANDLE        ImageHandle,
 | 
						|
  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
						|
  );
 | 
						|
 | 
						|
//
 | 
						|
//  HostBridge Resource Allocation interface
 | 
						|
//
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Enter a certain phase of the PCI enumeration process.
 | 
						|
 | 
						|
  @param This   The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL instance.
 | 
						|
  @param Phase  The phase during enumeration.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            Succeed.
 | 
						|
  @retval EFI_INVALID_PARAMETER  Wrong phase parameter passed in.
 | 
						|
  @retval EFI_NOT_READY          Resources have not been submitted yet.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
NotifyPhase (
 | 
						|
  IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL  *This,
 | 
						|
  IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE     Phase
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Return the device handle of the next PCI root bridge that is associated with
 | 
						|
  this Host Bridge.
 | 
						|
 | 
						|
  @param This              The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance.
 | 
						|
  @param RootBridgeHandle  Returns the device handle of the next PCI Root Bridge.
 | 
						|
                           On input, it holds the RootBridgeHandle returned by the most
 | 
						|
                           recent call to GetNextRootBridge().The handle for the first
 | 
						|
                           PCI Root Bridge is returned if RootBridgeHandle is NULL on input.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            Succeed.
 | 
						|
  @retval EFI_NOT_FOUND          Next PCI root bridge not found.
 | 
						|
  @retval EFI_INVALID_PARAMETER  Wrong parameter passed in.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
GetNextRootBridge (
 | 
						|
  IN     EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL  *This,
 | 
						|
  IN OUT EFI_HANDLE                                        *RootBridgeHandle
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Returns the attributes of a PCI Root Bridge.
 | 
						|
 | 
						|
  @param This              -  The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance
 | 
						|
  @param RootBridgeHandle  -  The device handle of the PCI Root Bridge
 | 
						|
                              that the caller is interested in
 | 
						|
  @param Attributes        -  The pointer to attributes of the PCI Root Bridge
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            -  Succeed.
 | 
						|
  @retval EFI_INVALID_PARAMETER  -  Attributes parameter passed in is NULL or
 | 
						|
                            @retval RootBridgeHandle is not an EFI_HANDLE
 | 
						|
                            @retval that was returned on a previous call to
 | 
						|
                            @retval GetNextRootBridge().
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
GetAttributes (
 | 
						|
  IN  EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL  *This,
 | 
						|
  IN  EFI_HANDLE                                        RootBridgeHandle,
 | 
						|
  OUT UINT64                                            *Attributes
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  This is the request from the PCI enumerator to set up
 | 
						|
  the specified PCI Root Bridge for bus enumeration process.
 | 
						|
 | 
						|
  @param This              -  The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance.
 | 
						|
  @param RootBridgeHandle  -  The PCI Root Bridge to be set up.
 | 
						|
  @param Configuration     -  Pointer to the pointer to the PCI bus resource descriptor.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            -  Succeed.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES   -  Not enough pool to be allocated.
 | 
						|
  @retval EFI_INVALID_PARAMETER  -  RootBridgeHandle is not a valid handle.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
StartBusEnumeration (
 | 
						|
  IN  EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL  *This,
 | 
						|
  IN  EFI_HANDLE                                        RootBridgeHandle,
 | 
						|
  OUT VOID                                              **Configuration
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  This function programs the PCI Root Bridge hardware so that
 | 
						|
  it decodes the specified PCI bus range.
 | 
						|
 | 
						|
  @param This              -  The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance.
 | 
						|
  @param RootBridgeHandle  -  The PCI Root Bridge whose bus range is to be programmed.
 | 
						|
  @param Configuration     -  The pointer to the PCI bus resource descriptor.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            -  Succeed.
 | 
						|
  @retval EFI_INVALID_PARAMETER  -  Wrong parameters passed in.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SetBusNumbers (
 | 
						|
  IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL  *This,
 | 
						|
  IN EFI_HANDLE                                        RootBridgeHandle,
 | 
						|
  IN VOID                                              *Configuration
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Submits the I/O and memory resource requirements for the specified PCI Root Bridge.
 | 
						|
 | 
						|
  @param This              -  The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance
 | 
						|
  @param RootBridgeHandle  -  The PCI Root Bridge whose I/O and memory resource requirements
 | 
						|
                              are being submitted
 | 
						|
  @param Configuration     -  The pointer to the PCI I/O and PCI memory resource descriptor
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            -  Succeed.
 | 
						|
  @retval EFI_INVALID_PARAMETER  -  Wrong parameters passed in.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
SubmitResources (
 | 
						|
  IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL  *This,
 | 
						|
  IN EFI_HANDLE                                        RootBridgeHandle,
 | 
						|
  IN VOID                                              *Configuration
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  This function returns the proposed resource settings for the specified
 | 
						|
  PCI Root Bridge.
 | 
						|
 | 
						|
  @param This              -  The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance.
 | 
						|
  @param RootBridgeHandle  -  The PCI Root Bridge handle.
 | 
						|
  @param Configuration     -  The pointer to the pointer to the PCI I/O
 | 
						|
                              and memory resource descriptor.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            -  Succeed.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES   -  Not enough pool to be allocated.
 | 
						|
  @retval EFI_INVALID_PARAMETER  -  RootBridgeHandle is not a valid handle.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
GetProposedResources (
 | 
						|
  IN  EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL  *This,
 | 
						|
  IN  EFI_HANDLE                                        RootBridgeHandle,
 | 
						|
  OUT VOID                                              **Configuration
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  This function is called for all the PCI controllers that the PCI
 | 
						|
  bus driver finds. Can be used to Preprogram the controller.
 | 
						|
 | 
						|
  @param This              -  The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance.
 | 
						|
  @param RootBridgeHandle  -  The PCI Root Bridge handle.
 | 
						|
  @param PciAddress        -  Address of the controller on the PCI bus.
 | 
						|
  @param Phase             -  The Phase during resource allocation.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            -  Succeed.
 | 
						|
  @retval EFI_INVALID_PARAMETER  -  RootBridgeHandle is not a valid handle.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
PreprocessController (
 | 
						|
  IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL  *This,
 | 
						|
  IN EFI_HANDLE                                        RootBridgeHandle,
 | 
						|
  IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS       PciAddress,
 | 
						|
  IN EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE      Phase
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This routine constructs the resource descriptors for all root bridges and call PciHostBridgeResourceConflict().
 | 
						|
 | 
						|
  @param HostBridge The Host Bridge Instance where the resource adjustment happens.
 | 
						|
**/
 | 
						|
VOID
 | 
						|
ResourceConflict (
 | 
						|
  IN  PCI_HOST_BRIDGE_INSTANCE  *HostBridge
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This routine gets translation offset from a root bridge instance by resource type.
 | 
						|
 | 
						|
  @param RootBridge The Root Bridge Instance for the resources.
 | 
						|
  @param ResourceType The Resource Type of the translation offset.
 | 
						|
 | 
						|
  @retval The Translation Offset of the specified resource.
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
GetTranslationByResourceType (
 | 
						|
  IN  PCI_ROOT_BRIDGE_INSTANCE  *RootBridge,
 | 
						|
  IN  PCI_RESOURCE_TYPE         ResourceType
 | 
						|
  );
 | 
						|
 | 
						|
extern EFI_CPU_IO2_PROTOCOL  *mCpuIo;
 | 
						|
extern EDKII_IOMMU_PROTOCOL  *mIoMmu;
 | 
						|
 | 
						|
#endif
 |