Initial directory structure of IntelFrameworkPkg.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2657 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -0,0 +1,363 @@
|
||||
/** @file
|
||||
This file declares Pci Host Bridge Resource Allocation Protocol
|
||||
|
||||
Copyright (c) 2007, 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.
|
||||
|
||||
Module Name: PciHostBridgeResourceAllocation.h
|
||||
|
||||
@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_
|
||||
|
||||
#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
|
||||
|
||||
|
||||
//
|
||||
// EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE
|
||||
//
|
||||
typedef enum {
|
||||
EfiPciHostBridgeBeginEnumeration,
|
||||
EfiPciHostBridgeBeginBusAllocation,
|
||||
EfiPciHostBridgeEndBusAllocation,
|
||||
EfiPciHostBridgeBeginResourceAllocation,
|
||||
EfiPciHostBridgeAllocateResources,
|
||||
EfiPciHostBridgeSetResources,
|
||||
EfiPciHostBridgeFreeResources,
|
||||
EfiPciHostBridgeEndResourceAllocation
|
||||
} EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE;
|
||||
|
||||
//
|
||||
// EfiPciHostBridgeBeginEnumeration
|
||||
// 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.
|
||||
//
|
||||
// EfiPciHostBridgeBeginBusAllocation
|
||||
// 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.
|
||||
//
|
||||
// EfiPciHostBridgeEndBusAllocation
|
||||
// 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.
|
||||
//
|
||||
// EfiPciHostBridgeBeginResourceAllocation
|
||||
// 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.
|
||||
//
|
||||
// EfiPciHostBridgeAllocateResources
|
||||
// Allocate resources per previously submitted requests for all the PCI Root
|
||||
// Bridges. These resource settings are returned on the next call to
|
||||
// GetProposedResources().
|
||||
//
|
||||
// EfiPciHostBridgeSetResources
|
||||
// Program the Host Bridge hardware to decode previously allocated resources
|
||||
// (proposed resources) for all the PCI Root Bridges.
|
||||
//
|
||||
// EfiPciHostBridgeFreeResources
|
||||
// De-allocate previously allocated resources previously for all the PCI
|
||||
// Root Bridges and reset the I/O and memory apertures to initial state.
|
||||
//
|
||||
// EfiPciHostBridgeEndResourceAllocation
|
||||
// The resource allocation phase is completed. No specific action is required
|
||||
// here. This notification can be used to perform any chipset specific programming.
|
||||
|
||||
|
||||
|
||||
//
|
||||
// EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE
|
||||
//
|
||||
typedef enum {
|
||||
EfiPciBeforeChildBusEnumeration,
|
||||
EfiPciBeforeResourceCollection
|
||||
} EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE;
|
||||
|
||||
//
|
||||
// EfiPciBeforeChildBusEnumeration
|
||||
// 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
|
||||
//
|
||||
// EfiPciBeforeResourceCollection
|
||||
// This notification is sent before the PCI enumerator probes BAR registers
|
||||
// for every valid PCI function.
|
||||
//
|
||||
|
||||
|
||||
/**
|
||||
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 Success
|
||||
@retval EFI_OUT_OF_RESOURCES If SubmitResources ( ) could not allocate resources
|
||||
@retval EFI_NOT_READY This phase cannot be entered at this time
|
||||
@retval EFI_DEVICE_ERROR SetResources failed due to HW error.
|
||||
|
||||
**/
|
||||
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
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
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 Success
|
||||
@retval EFI_INVALID_PARAMETER RootBridgeHandle is invalid
|
||||
|
||||
**/
|
||||
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 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 Attribute The pointer to attributes of the PCI Root Bridge
|
||||
|
||||
@retval EFI_SUCCESS Success
|
||||
@retval EFI_INVALID_PARAMETER RootBridgeHandle is invalid
|
||||
@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
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
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 Success
|
||||
@retval EFI_INVALID_PARAMETER RootBridgeHandle is invalid
|
||||
@retval EFI_DEVICE_ERROR Request failed due to hardware error
|
||||
@retval EFI_OUT_OF_RESOURCES Request failed due to 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
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
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 Success
|
||||
@retval EFI_INVALID_PARAMETER RootBridgeHandle is invalid
|
||||
@retval EFI_INVALID_PARAMETER Configuration is NULL
|
||||
@retval EFI_INVALID_PARAMETER Configuration does not point to a valid ACPI resource descriptor
|
||||
@retval EFI_INVALID_PARAMETER Configuration contains one or more memory or IO ACPI resource descriptor
|
||||
@retval EFI_INVALID_PARAMETER Address Range Minimum or Address Range Length fields in Configuration
|
||||
are invalid for this Root Bridge.
|
||||
@retval EFI_INVALID_PARAMETER Configuration contains one or more invalid ACPI resource descriptor
|
||||
@retval EFI_DEVICE_ERROR Request failed due to hardware error
|
||||
@retval EFI_OUT_OF_RESOURCES Request failed due to lack of resources
|
||||
|
||||
**/
|
||||
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 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 Success
|
||||
@retval EFI_INVALID_PARAMETER RootBridgeHandle is invalid
|
||||
@retval EFI_INVALID_PARAMETER Configuration is NULL
|
||||
@retval EFI_INVALID_PARAMETER Configuration does not point to a valid ACPI resource descriptor
|
||||
@retval EFI_INVALID_PARAMETER Configuration includes a resource descriptor of unsupported type
|
||||
|
||||
**/
|
||||
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
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
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 Success
|
||||
@retval EFI_INVALID_PARAMETER RootBridgeHandle is invalid
|
||||
@retval EFI_DEVICE_ERROR Request failed due to hardware error
|
||||
@retval EFI_OUT_OF_RESOURCES Request failed due to 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
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
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 PciBusAddress Address of the controller on the PCI bus
|
||||
@param Phase The Phase during resource allocation
|
||||
|
||||
@retval EFI_SUCCESS Success
|
||||
@retval EFI_INVALID_PARAMETER RootBridgeHandle is invalid
|
||||
@retval EFI_DEVICE_ERROR Device pre-initialization failed due to hardware error.
|
||||
|
||||
**/
|
||||
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
|
||||
);
|
||||
|
||||
/**
|
||||
@par Protocol Description:
|
||||
Provides the basic interfaces to abstract a PCI host bridge resource allocation.
|
||||
|
||||
@param NotifyPhase
|
||||
The notification from the PCI bus enumerator that it is about to enter
|
||||
a certain phase during the enumeration process.
|
||||
|
||||
@param GetNextRootBridge
|
||||
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.
|
||||
|
||||
@param GetAllocAttributes
|
||||
Retrieves the allocation-related attributes of a PCI root bridge.
|
||||
|
||||
@param StartBusEnumeration
|
||||
Sets up a PCI root bridge for bus enumeration.
|
||||
|
||||
@param SetBusNumbers
|
||||
Sets up the PCI root bridge so that it decodes a specific range of bus numbers.
|
||||
|
||||
@param SubmitResources
|
||||
Submits the resource requirements for the specified PCI root bridge.
|
||||
|
||||
@param GetProposedResources
|
||||
Returns the proposed resource assignment for the specified PCI root bridges.
|
||||
|
||||
@param PreprocessController
|
||||
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.
|
||||
|
||||
**/
|
||||
struct _EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL {
|
||||
EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_NOTIFY_PHASE NotifyPhase;
|
||||
EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_NEXT_ROOT_BRIDGE GetNextRootBridge;
|
||||
EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_ATTRIBUTES GetAllocAttributes;
|
||||
EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_START_BUS_ENUMERATION StartBusEnumeration;
|
||||
EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SET_BUS_NUMBERS SetBusNumbers;
|
||||
EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SUBMIT_RESOURCES SubmitResources;
|
||||
EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_PROPOSED_RESOURCES GetProposedResources;
|
||||
EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_PREPROCESS_CONTROLLER PreprocessController;
|
||||
};
|
||||
|
||||
extern EFI_GUID gEfiPciHostBridgeResourceAllocationProtocolGuid;
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user