https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
		
			
				
	
	
		
			110 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Null instance of PCI Host Bridge Library with empty functions.
 | 
						|
 | 
						|
  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
 | 
						|
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
#include <PiDxe.h>
 | 
						|
#include <Library/PciHostBridgeLib.h>
 | 
						|
#include <Library/DebugLib.h>
 | 
						|
 | 
						|
GLOBAL_REMOVE_IF_UNREFERENCED
 | 
						|
CHAR16 *mPciHostBridgeLibAcpiAddressSpaceTypeStr[] = {
 | 
						|
  L"Mem", L"I/O", L"Bus"
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
  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
 | 
						|
  )
 | 
						|
{
 | 
						|
  *Count = 0;
 | 
						|
  return NULL;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  Free the root bridge instances array returned from PciHostBridgeGetRootBridges().
 | 
						|
 | 
						|
  @param Bridges The root bridge instances array.
 | 
						|
  @param Count   The count of the array.
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
PciHostBridgeFreeRootBridges (
 | 
						|
  PCI_ROOT_BRIDGE *Bridges,
 | 
						|
  UINTN           Count
 | 
						|
  )
 | 
						|
{
 | 
						|
  return;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  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
 | 
						|
  )
 | 
						|
{
 | 
						|
  EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptor;
 | 
						|
  UINTN                             RootBridgeIndex;
 | 
						|
  DEBUG ((EFI_D_ERROR, "PciHostBridge: Resource conflict happens!\n"));
 | 
						|
 | 
						|
  RootBridgeIndex = 0;
 | 
						|
  Descriptor = (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *) Configuration;
 | 
						|
  while (Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR) {
 | 
						|
    DEBUG ((EFI_D_ERROR, "RootBridge[%d]:\n", RootBridgeIndex++));
 | 
						|
    for (; Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR; Descriptor++) {
 | 
						|
      ASSERT (Descriptor->ResType <
 | 
						|
              (sizeof (mPciHostBridgeLibAcpiAddressSpaceTypeStr) /
 | 
						|
               sizeof (mPciHostBridgeLibAcpiAddressSpaceTypeStr[0])
 | 
						|
               )
 | 
						|
              );
 | 
						|
      DEBUG ((EFI_D_ERROR, " %s: Length/Alignment = 0x%lx / 0x%lx\n",
 | 
						|
              mPciHostBridgeLibAcpiAddressSpaceTypeStr[Descriptor->ResType],
 | 
						|
              Descriptor->AddrLen, Descriptor->AddrRangeMax
 | 
						|
              ));
 | 
						|
      if (Descriptor->ResType == ACPI_ADDRESS_SPACE_TYPE_MEM) {
 | 
						|
        DEBUG ((EFI_D_ERROR, "     Granularity/SpecificFlag = %ld / %02x%s\n",
 | 
						|
                Descriptor->AddrSpaceGranularity, Descriptor->SpecificFlag,
 | 
						|
                ((Descriptor->SpecificFlag &
 | 
						|
                  EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE
 | 
						|
                  ) != 0) ? L" (Prefetchable)" : L""
 | 
						|
                ));
 | 
						|
      }
 | 
						|
    }
 | 
						|
    //
 | 
						|
    // Skip the END descriptor for root bridge
 | 
						|
    //
 | 
						|
    ASSERT (Descriptor->Desc == ACPI_END_TAG_DESCRIPTOR);
 | 
						|
    Descriptor = (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *)(
 | 
						|
                   (EFI_ACPI_END_TAG_DESCRIPTOR *)Descriptor + 1
 | 
						|
                   );
 | 
						|
  }
 | 
						|
}
 |