mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-11-04 09:12:31 +00:00 
			
		
		
		
	REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the OvmfPkg 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: Andrew Fish <afish@apple.com>
		
			
				
	
	
		
			125 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  OVMF's instance of the PCI Host Bridge Library.
 | 
						|
 | 
						|
  Copyright (C) 2016, Red Hat, Inc.
 | 
						|
  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
 | 
						|
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
#include <IndustryStandard/Pci.h>                     // PCI_MAX_BUS
 | 
						|
#include <IndustryStandard/Q35MchIch9.h>              // INTEL_Q35_MCH_DEVIC...
 | 
						|
#include <Library/BaseMemoryLib.h>                    // ZeroMem()
 | 
						|
#include <Library/PcdLib.h>                           // PcdGet64()
 | 
						|
#include <Library/PciHostBridgeLib.h>                 // PCI_ROOT_BRIDGE_APE...
 | 
						|
#include <Library/PciHostBridgeUtilityLib.h>          // PciHostBridgeUtilit...
 | 
						|
#include <Protocol/PciHostBridgeResourceAllocation.h> // EFI_PCI_HOST_BRIDGE...
 | 
						|
#include <Protocol/PciRootBridgeIo.h>                 // EFI_PCI_ATTRIBUTE_I...
 | 
						|
 | 
						|
STATIC PCI_ROOT_BRIDGE_APERTURE  mNonExistAperture = { MAX_UINT64, 0 };
 | 
						|
 | 
						|
/**
 | 
						|
  Return all the root bridge instances in an array.
 | 
						|
 | 
						|
  @param Count  Return the count of root bridge instances.
 | 
						|
 | 
						|
  @return All the root bridge instances in an array.
 | 
						|
          The array should be passed into PciHostBridgeFreeRootBridges()
 | 
						|
          when it's not used.
 | 
						|
**/
 | 
						|
PCI_ROOT_BRIDGE *
 | 
						|
EFIAPI
 | 
						|
PciHostBridgeGetRootBridges (
 | 
						|
  UINTN  *Count
 | 
						|
  )
 | 
						|
{
 | 
						|
  UINT64                    Attributes;
 | 
						|
  UINT64                    AllocationAttributes;
 | 
						|
  PCI_ROOT_BRIDGE_APERTURE  Io;
 | 
						|
  PCI_ROOT_BRIDGE_APERTURE  Mem;
 | 
						|
  PCI_ROOT_BRIDGE_APERTURE  MemAbove4G;
 | 
						|
 | 
						|
  ZeroMem (&Io, sizeof (Io));
 | 
						|
  ZeroMem (&Mem, sizeof (Mem));
 | 
						|
  ZeroMem (&MemAbove4G, sizeof (MemAbove4G));
 | 
						|
 | 
						|
  Attributes = EFI_PCI_ATTRIBUTE_IDE_PRIMARY_IO |
 | 
						|
               EFI_PCI_ATTRIBUTE_IDE_SECONDARY_IO |
 | 
						|
               EFI_PCI_ATTRIBUTE_ISA_IO_16 |
 | 
						|
               EFI_PCI_ATTRIBUTE_ISA_MOTHERBOARD_IO |
 | 
						|
               EFI_PCI_ATTRIBUTE_VGA_MEMORY |
 | 
						|
               EFI_PCI_ATTRIBUTE_VGA_IO_16 |
 | 
						|
               EFI_PCI_ATTRIBUTE_VGA_PALETTE_IO_16;
 | 
						|
 | 
						|
  AllocationAttributes = EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM;
 | 
						|
  if (PcdGet64 (PcdPciMmio64Size) > 0) {
 | 
						|
    AllocationAttributes |= EFI_PCI_HOST_BRIDGE_MEM64_DECODE;
 | 
						|
    MemAbove4G.Base       = PcdGet64 (PcdPciMmio64Base);
 | 
						|
    MemAbove4G.Limit      = PcdGet64 (PcdPciMmio64Base) +
 | 
						|
                            PcdGet64 (PcdPciMmio64Size) - 1;
 | 
						|
  } else {
 | 
						|
    CopyMem (&MemAbove4G, &mNonExistAperture, sizeof (mNonExistAperture));
 | 
						|
  }
 | 
						|
 | 
						|
  Io.Base   = PcdGet64 (PcdPciIoBase);
 | 
						|
  Io.Limit  = PcdGet64 (PcdPciIoBase) + (PcdGet64 (PcdPciIoSize) - 1);
 | 
						|
  Mem.Base  = PcdGet64 (PcdPciMmio32Base);
 | 
						|
  Mem.Limit = PcdGet64 (PcdPciMmio32Base) + (PcdGet64 (PcdPciMmio32Size) - 1);
 | 
						|
 | 
						|
  return PciHostBridgeUtilityGetRootBridges (
 | 
						|
           Count,
 | 
						|
           Attributes,
 | 
						|
           AllocationAttributes,
 | 
						|
           FALSE,
 | 
						|
           PcdGet16 (PcdOvmfHostBridgePciDevId) != INTEL_Q35_MCH_DEVICE_ID,
 | 
						|
           0,
 | 
						|
           PCI_MAX_BUS,
 | 
						|
           &Io,
 | 
						|
           &Mem,
 | 
						|
           &MemAbove4G,
 | 
						|
           &mNonExistAperture,
 | 
						|
           &mNonExistAperture
 | 
						|
           );
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  Free the root bridge instances array returned from
 | 
						|
  PciHostBridgeGetRootBridges().
 | 
						|
 | 
						|
  @param  The root bridge instances array.
 | 
						|
  @param  The count of the array.
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
PciHostBridgeFreeRootBridges (
 | 
						|
  PCI_ROOT_BRIDGE  *Bridges,
 | 
						|
  UINTN            Count
 | 
						|
  )
 | 
						|
{
 | 
						|
  PciHostBridgeUtilityFreeRootBridges (Bridges, Count);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  Inform the platform that the resource conflict happens.
 | 
						|
 | 
						|
  @param HostBridgeHandle Handle of the Host Bridge.
 | 
						|
  @param Configuration    Pointer to PCI I/O and PCI memory resource
 | 
						|
                          descriptors. The Configuration contains the resources
 | 
						|
                          for all the root bridges. The resource for each root
 | 
						|
                          bridge is terminated with END descriptor and an
 | 
						|
                          additional END is appended indicating the end of the
 | 
						|
                          entire resources. The resource descriptor field
 | 
						|
                          values follow the description in
 | 
						|
                          EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL
 | 
						|
                          .SubmitResources().
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
PciHostBridgeResourceConflict (
 | 
						|
  EFI_HANDLE  HostBridgeHandle,
 | 
						|
  VOID        *Configuration
 | 
						|
  )
 | 
						|
{
 | 
						|
  PciHostBridgeUtilityResourceConflict (Configuration);
 | 
						|
}
 |