summaryrefslogtreecommitdiff
path: root/IntelFrameworkPkg/Include/Protocol/PciHostBridgeResourceAllocation.h
diff options
context:
space:
mode:
Diffstat (limited to 'IntelFrameworkPkg/Include/Protocol/PciHostBridgeResourceAllocation.h')
-rw-r--r--IntelFrameworkPkg/Include/Protocol/PciHostBridgeResourceAllocation.h414
1 files changed, 0 insertions, 414 deletions
diff --git a/IntelFrameworkPkg/Include/Protocol/PciHostBridgeResourceAllocation.h b/IntelFrameworkPkg/Include/Protocol/PciHostBridgeResourceAllocation.h
deleted file mode 100644
index 43253da..0000000
--- a/IntelFrameworkPkg/Include/Protocol/PciHostBridgeResourceAllocation.h
+++ /dev/null
@@ -1,414 +0,0 @@
-/** @file
- This file declares Pci Host Bridge Resource Allocation Protocol which
- Provides the basic interfaces to abstract a PCI host bridge resource allocation.
- This protocol is mandatory if the system includes PCI devices.
-
- Copyright (c) 2007 - 2009, 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.
-
- @par Revision Reference:
- This protocol is defined in Framework of EFI Pci Host Bridge Resource Allocation Protocol Spec
- Version 0.9
-
-**/
-
-#ifndef _PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_H_
-#define _PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_H_
-
-#include <Protocol/PciRootBridgeIo.h>
-
-#define EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GUID \
- { 0xCF8034BE, 0x6768, 0x4d8b, {0xB7,0x39,0x7C,0xCE,0x68,0x3A,0x9F,0xBE }}
-
-
-typedef struct _EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL;
-
-
-//
-// EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ATTRIBUTES
-//
-
-/// If this bit is set, then the PCI Root Bridge does not
-/// support separate windows for Non-prefetchable and Prefetchable
-/// memory. A PCI bus driver needs to include requests for Prefetchable
-/// memory in the Non-prefetchable memory pool.
-///
-#define EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM 1
-
-///
-/// If this bit is set, then the PCI Root Bridge supports
-/// 64 bit memory windows. If this bit is not set,
-/// the PCI bus driver needs to include requests for 64 bit
-/// memory address in the corresponding 32 bit memory pool.
-///
-#define EFI_PCI_HOST_BRIDGE_MEM64_DECODE 2
-
-typedef UINT64 EFI_RESOURCE_ALLOCATION_STATUS;
-
-///
-/// The request of this resource type could be fulfilled.
-///
-#define EFI_RESOURCE_SATISFIED 0x0000000000000000ULL
-
-///
-/// The request of this resource type could not be fulfilled for its
-/// absence in the host bridge resource pool.
-///
-#define EFI_RESOURCE_NOT_SATISFIED 0xFFFFFFFFFFFFFFFFULL
-
-//
-// EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE
-//
-typedef enum {
- ///
- /// Reset the host bridge PCI apertures and internal data structures.
- /// PCI enumerator should issue this notification before starting fresh
- /// enumeration process. Enumeration cannot be restarted after sending
- /// any other notification such as EfiPciHostBridgeBeginBusAllocation.
- ///
- EfiPciHostBridgeBeginEnumeration,
-
- ///
- /// The bus allocation phase is about to begin. No specific action
- /// is required here. This notification can be used to perform any
- /// chipset specific programming.
- ///
- EfiPciHostBridgeBeginBusAllocation,
-
- ///
- /// The bus allocation and bus programming phase is complete. No specific
- /// action is required here. This notification can be used to perform any
- /// chipset specific programming.
- ///
- EfiPciHostBridgeEndBusAllocation,
-
- ///
- /// The resource allocation phase is about to begin.No specific action is
- /// required here. This notification can be used to perform any chipset specific programming.
- ///
- EfiPciHostBridgeBeginResourceAllocation,
-
- ///
- /// Allocate resources per previously submitted requests for all the PCI Root
- /// Bridges. These resource settings are returned on the next call to
- /// GetProposedResources().
- ///
- EfiPciHostBridgeAllocateResources,
-
- ///
- /// Program the Host Bridge hardware to decode previously allocated resources
- /// (proposed resources) for all the PCI Root Bridges.
- ///
- EfiPciHostBridgeSetResources,
-
- ///
- /// De-allocate previously allocated resources previously for all the PCI
- /// Root Bridges and reset the I/O and memory apertures to initial state.
- ///
- EfiPciHostBridgeFreeResources,
-
- ///
- /// The resource allocation phase is completed. No specific action is required
- /// here. This notification can be used to perform any chipset specific programming.
- ///
- EfiPciHostBridgeEndResourceAllocation
-} EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE;
-
-///
-/// Definitions of 2 notification points.
-///
-typedef enum {
- ///
- /// This notification is only applicable to PCI-PCI bridges and
- /// indicates that the PCI enumerator is about to begin enumerating
- /// the bus behind the PCI-PCI Bridge. This notification is sent after
- /// the primary bus number, the secondary bus number and the subordinate
- /// bus number registers in the PCI-PCI Bridge are programmed to valid
- /// (not necessary final) values
- ///
- EfiPciBeforeChildBusEnumeration,
-
- ///
- /// This notification is sent before the PCI enumerator probes BAR registers
- /// for every valid PCI function.
- ///
- EfiPciBeforeResourceCollection
-} EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE;
-
-/**
- These are the notifications from the PCI bus driver that it is about to enter a certain phase of the PCI
- enumeration process.
-
- @param This Pointer to the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL
- instance.
- @param Phase The phase during enumeration
-
- @retval EFI_SUCCESS The notification was accepted without any errors.
- @retval EFI_INVALID_PARAMETER The Phase is invalid.
- @retval EFI_NOT_READY This phase cannot be entered at this time. For example, this error
- is valid for a Phase of EfiPciHostBridgeAllocateResources if
- SubmitResources() has not been called for one or more
- PCI root bridges before this call.
- @retval EFI_DEVICE_ERROR Programming failed due to a hardware error. This error is valid for
- a Phase of EfiPciHostBridgeSetResources.
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
- This error is valid for a Phase of EfiPciHostBridgeAllocateResources
- if the previously submitted resource requests cannot be fulfilled or were only
- partially fulfilled
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_NOTIFY_PHASE)(
- IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
- IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE Phase
- );
-
-
-/**
- Returns the device handle of the next PCI root bridge that is associated with this host bridge.
-
- @param This Pointer to 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 that was returned by the most recent call to
- GetNextRootBridge(). If RootBridgeHandle is NULL on input, the handle
- for the first PCI root bridge is returned.
-
- @retval EFI_SUCCESS The requested attribute information was returned.
- @retval EFI_INVALID_PARAMETER RootBridgeHandle is not an EFI_HANDLE that was returned
- on a previous call to GetNextRootBridge().
- @retval EFI_NOT_FOUND There are no more PCI root bridge device handles.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_NEXT_ROOT_BRIDGE)(
- IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
- IN OUT EFI_HANDLE *RootBridgeHandle
- );
-
-
-/**
- Returns the allocation attributes of a PCI root bridge.
-
- @param This Pointer to the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL
- instance.
- @param RootBridgeHandle The device handle of the PCI root bridge in which the caller is interested.
- @param Attribute The pointer to attributes of the PCI root bridge.
-
- @retval EFI_SUCCESS The requested attribute information was returned.
- @retval EFI_INVALID_PARAMETER RootBridgeHandle is not a valid root bridge handle.
- @retval EFI_INVALID_PARAMETER Attributes is NULL.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_ATTRIBUTES)(
- IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
- IN EFI_HANDLE RootBridgeHandle,
- OUT UINT64 *Attributes
- );
-
-
-/**
- Sets up the specified PCI root bridge for the bus enumeration process.
-
- @param This Pointer to 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 The PCI root bridge was set up and the bus range was returned in
- Configuration.
- @retval EFI_INVALID_PARAMETER RootBridgeHandle is not a valid root bridge handle.
- @retval EFI_DEVICE_ERROR Programming failed due to a hardware error.
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_START_BUS_ENUMERATION)(
- IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
- IN EFI_HANDLE RootBridgeHandle,
- OUT VOID **Configuration
- );
-
-
-/**
- Programs the PCI root bridge hardware so that it decodes the specified PCI bus range.
-
- @param This Pointer to 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 The bus range for the PCI root bridge was programmed.
- @retval EFI_INVALID_PARAMETER RootBridgeHandle is not a valid root bridge handle.
- @retval EFI_INVALID_PARAMETER Configuration is NULL
- @retval EFI_INVALID_PARAMETER Configuration does not point to a valid ACPI (2.0 & 3.0)
- resource descriptor.
- @retval EFI_INVALID_PARAMETER Configuration does not include a valid ACPI 2.0 bus resource
- descriptor.
- @retval EFI_INVALID_PARAMETER Configuration includes valid ACPI (2.0 & 3.0) resource
- descriptors other than bus descriptors.
- @retval EFI_INVALID_PARAMETER Configuration contains one or more invalid ACPI resource
- descriptors.
- @retval EFI_INVALID_PARAMETER "Address Range Minimum" is invalid for this root bridge.
- @retval EFI_INVALID_PARAMETER "Address Range Length" is invalid for this root bridge.
- @retval EFI_DEVICE_ERROR Programming failed due to a hardware error.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SET_BUS_NUMBERS)(
- 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 Pointer to 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 The I/O and memory resource requests for a PCI root bridge were
- accepted.
- @retval EFI_INVALID_PARAMETER RootBridgeHandle is not a valid root bridge handle.
- @retval EFI_INVALID_PARAMETER Configuration is NULL.
- @retval EFI_INVALID_PARAMETER Configuration does not point to a valid ACPI (2.0 & 3.0)
- resource descriptor.
- @retval EFI_INVALID_PARAMETER Configuration includes requests for one or more resource
- types that are not supported by this PCI root bridge. This error will
- happen if the caller did not combine resources according to
- Attributes that were returned by GetAllocAttributes().
- @retval EFI_INVALID_PARAMETER "Address Range Maximum" is invalid.
- @retval EFI_INVALID_PARAMETER "Address Range Length" is invalid for this PCI root bridge.
- @retval EFI_INVALID_PARAMETER "Address Space Granularity" is invalid for this PCI root bridge.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SUBMIT_RESOURCES)(
- IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
- IN EFI_HANDLE RootBridgeHandle,
- IN VOID *Configuration
- );
-
-
-/**
- Returns the proposed resource settings for the specified PCI root bridge.
-
- @param This Pointer to 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 The requested parameters were returned.
- @retval EFI_INVALID_PARAMETER RootBridgeHandle is not a valid root bridge handle.
- @retval EFI_DEVICE_ERROR Programming failed due to a hardware error.
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_PROPOSED_RESOURCES)(
- IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This,
- IN EFI_HANDLE RootBridgeHandle,
- OUT VOID **Configuration
- );
-
-
-
-/**
- Provides the hooks from the PCI bus driver to every PCI controller (device/function) at various
- stages of the PCI enumeration process that allow the host bridge driver to preinitialize individual
- PCI controllers before enumeration.
-
- @param This Pointer to the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL instance.
- @param RootBridgeHandle The associated PCI root bridge handle.
- @param PciAddress The address of the PCI device on the PCI bus.
- @param Phase The phase of the PCI device enumeration.
-
- @retval EFI_SUCCESS The requested parameters were returned.
- @retval EFI_INVALID_PARAMETER RootBridgeHandle is not a valid root bridge handle.
- @retval EFI_INVALID_PARAMETER Phase is not a valid phase that is defined in
- EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE.
- @retval EFI_DEVICE_ERROR Programming failed due to a hardware error. The PCI enumerator
- should not enumerate this device, including its child devices if it is
- a PCI-to-PCI bridge.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_PREPROCESS_CONTROLLER)(
- 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
- );
-
-///
-/// Provides the basic interfaces to abstract a PCI host bridge resource allocation.
-///
-struct _EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL {
- ///
- /// The notification from the PCI bus enumerator that it is about to enter
- /// a certain phase during the enumeration process.
- ///
- EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_NOTIFY_PHASE NotifyPhase;
-
- ///
- /// Retrieves the device handle for the next PCI root bridge that is produced by the
- /// host bridge to which this instance of the EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL is attached.
- ///
- EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_NEXT_ROOT_BRIDGE GetNextRootBridge;
-
- ///
- /// Retrieves the allocation-related attributes of a PCI root bridge.
- ///
- EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_ATTRIBUTES GetAllocAttributes;
-
- ///
- /// Sets up a PCI root bridge for bus enumeration.
- ///
- EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_START_BUS_ENUMERATION StartBusEnumeration;
-
- ///
- /// Sets up the PCI root bridge so that it decodes a specific range of bus numbers.
- ///
- EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SET_BUS_NUMBERS SetBusNumbers;
-
- ///
- /// Submits the resource requirements for the specified PCI root bridge.
- ///
- EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SUBMIT_RESOURCES SubmitResources;
-
- ///
- /// Returns the proposed resource assignment for the specified PCI root bridges.
- ///
- EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_PROPOSED_RESOURCES GetProposedResources;
-
- ///
- /// Provides hooks from the PCI bus driver to every PCI controller
- /// (device/function) at various stages of the PCI enumeration process that
- /// allow the host bridge driver to preinitialize individual PCI controllers
- /// before enumeration.
- ///
- EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_PREPROCESS_CONTROLLER PreprocessController;
-};
-
-extern EFI_GUID gEfiPciHostBridgeResourceAllocationProtocolGuid;
-
-#endif