+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
- PciPlatform.h\r
-\r
-Abstract:\r
- This file declares PlatfromOpRom protocols.\r
-\r
---*/\r
-\r
-#ifndef _PCI_PLATFORM_H_\r
-#define _PCI_PLATFORM_H_\r
-\r
-\r
-#include "Tiano.h"\r
-#include "TianoTypes.h"\r
-\r
-#include EFI_PROTOCOL_DEFINITION (PciHostBridgeResourceAllocation)\r
-#include EFI_PROTOCOL_DEFINITION (PciRootBridgeIo)\r
-\r
-//\r
-// Protocol for GUID.\r
-//\r
-\r
-#define EFI_PCI_PLATFORM_PROTOCOL_GUID \\r
-{ 0x7d75280, 0x27d4, 0x4d69, {0x90, 0xd0, 0x56, 0x43, 0xe2, 0x38, 0xb3, 0x41}}\r
-\r
-\r
-EFI_FORWARD_DECLARATION (EFI_PCI_PLATFORM_PROTOCOL);\r
-\r
-typedef UINT32 EFI_PCI_PLATFORM_POLICY;\r
-\r
- \r
-#define EFI_RESERVE_NONE_IO_ALIAS 0x0000\r
-#define EFI_RESERVE_ISA_IO_ALIAS 0x0001\r
-#define EFI_RESERVE_ISA_IO_NO_ALIAS 0x0002\r
-#define EFI_RESERVE_VGA_IO_ALIAS 0x0004\r
-#define EFI_RESERVE_VGA_IO_NO_ALIAS 0x0008\r
-\r
-\r
-typedef enum {\r
- ChipsetEntry,\r
- ChipsetExit,\r
- MaximumChipsetPhase\r
-} EFI_PCI_CHIPSET_EXECUTION_PHASE;\r
-\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI * EFI_PCI_PLATFORM_PHASE_NOTIFY) (\r
- IN EFI_PCI_PLATFORM_PROTOCOL *This,\r
- IN EFI_HANDLE HostBridge,\r
- IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE Phase,\r
- IN EFI_PCI_CHIPSET_EXECUTION_PHASE ChipsetPhase \r
-)\r
-/*++\r
-\r
- Routine Description:\r
- The PlatformNotify() function can be used to notify the platform driver so that \r
- it can perform platform-specific actions. No specific actions are required. \r
- Eight notification points are defined at this time. More synchronization points \r
- may be added as required in the future. The PCI bus driver calls the platform driver \r
- twice for every Phase-once before the PCI Host Bridge Resource Allocation Protocol \r
- driver is notified, and once after the PCI Host Bridge Resource Allocation Protocol \r
- driver has been notified. \r
- This member function may not perform any error checking on the input parameters. It \r
- also does not return any error codes. If this member function detects any error condition, \r
- it needs to handle those errors on its own because there is no way to surface any \r
- errors to the caller.\r
- \r
- Arguments:\r
- This - Pointer to the EFI_PCI_PLATFORM_PROTOCOL instance. \r
- HostBridge - The handle of the host bridge controller. \r
- Phase - The phase of the PCI bus enumeration.\r
- ChipsetPhase - Defines the execution phase of the PCI chipset driver. \r
- \r
- Returns:\r
- EFI_SUCCESS - The function completed successfully.\r
- \r
---*/\r
-;\r
-\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI * EFI_PCI_PLATFORM_PREPROCESS_CONTROLLER) (\r
- IN EFI_PCI_PLATFORM_PROTOCOL *This,\r
- IN EFI_HANDLE HostBridge,\r
- IN EFI_HANDLE RootBridge,\r
- IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS PciAddress,\r
- IN EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE Phase,\r
- IN EFI_PCI_CHIPSET_EXECUTION_PHASE ChipsetPhase\r
-)\r
-/*++\r
-\r
- Routine Description:\r
- The PlatformPrepController() function can be used to notify the platform driver so that \r
- it can perform platform-specific actions. No specific actions are required. \r
- Several notification points are defined at this time. More synchronization points may be \r
- added as required in the future. The PCI bus driver calls the platform driver twice for \r
- every PCI controller-once before the PCI Host Bridge Resource Allocation Protocol driver \r
- is notified, and once after the PCI Host Bridge Resource Allocation Protocol driver has \r
- been notified. \r
- This member function may not perform any error checking on the input parameters. It also \r
- does not return any error codes. If this member function detects any error condition, it \r
- needs to handle those errors on its own because there is no way to surface any errors to \r
- the caller. \r
- \r
- Arguments:\r
- This - Pointer to the EFI_PCI_PLATFORM_PROTOCOL instance. \r
- HostBridge - The associated PCI host bridge handle. \r
- RootBridge - The associated PCI root bridge handle.\r
- PciAddress - The address of the PCI device on the PCI bus. \r
- Phase - The phase of the PCI controller enumeration. \r
- ChipsetPhase - Defines the execution phase of the PCI chipset driver. \r
- \r
- Returns:\r
- EFI_SUCCESS - The function completed successfully.\r
- \r
---*/\r
-;\r
-\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI * EFI_PCI_PLATFORM_GET_PLATFORM_POLICY) (\r
- IN EFI_PCI_PLATFORM_PROTOCOL *This,\r
- OUT EFI_PCI_PLATFORM_POLICY *PciPolicy\r
-)\r
-/*++\r
-\r
- Routine Description:\r
- The GetPlatformPolicy() function retrieves the platform policy regarding PCI \r
- enumeration. The PCI bus driver and the PCI Host Bridge Resource Allocation Protocol \r
- driver can call this member function to retrieve the policy.\r
- \r
- Arguments:\r
- This - Pointer to the EFI_PCI_PLATFORM_PROTOCOL instance.\r
- PciPolicy - The platform policy with respect to VGA and ISA aliasing. \r
- \r
- Returns:\r
- EFI_SUCCESS - The function completed successfully.\r
- EFI_INVALID_PARAMETER - PciPolicy is NULL.\r
- \r
---*/\r
-;\r
-\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PCI_PLATFORM_GET_PCI_ROM) ( \r
- IN EFI_PCI_PLATFORM_PROTOCOL *This,\r
- IN EFI_HANDLE PciHandle,\r
- OUT VOID **RomImage,\r
- OUT UINTN *RomSize \r
-)\r
-/*++\r
-\r
- Routine Description:\r
- The GetPciRom() function gets the PCI device's option ROM from a platform-specific location. \r
- The option ROM will be loaded into memory. This member function is used to return an image \r
- that is packaged as a PCI 2.2 option ROM. The image may contain both legacy and EFI option \r
- ROMs. See the EFI 1.10 Specification for details. This member function can be used to return \r
- option ROM images for embedded controllers. Option ROMs for embedded controllers are typically \r
- stored in platform-specific storage, and this member function can retrieve it from that storage \r
- and return it to the PCI bus driver. The PCI bus driver will call this member function before \r
- scanning the ROM that is attached to any controller, which allows a platform to specify a ROM \r
- image that is different from the ROM image on a PCI card.\r
-\r
- Arguments:\r
- This - Pointer to the EFI_PCI_PLATFORM_PROTOCOL instance.\r
- PciHandle - The handle of the PCI device. \r
- RomImage - If the call succeeds, the pointer to the pointer to the option ROM image. \r
- Otherwise, this field is undefined. The memory for RomImage is allocated \r
- by EFI_PCI_PLATFORM_PROTOCOL.GetPciRom() using the EFI Boot Service AllocatePool(). \r
- It is the caller's responsibility to free the memory using the EFI Boot Service \r
- FreePool(), when the caller is done with the option ROM.\r
- RomSize - If the call succeeds, a pointer to the size of the option ROM size. Otherwise, \r
- this field is undefined.\r
- \r
- Returns:\r
- EFI_SUCCESS - The option ROM was available for this device and loaded into memory.\r
- EFI_NOT_FOUND - No option ROM was available for this device.\r
- EFI_OUT_OF_RESOURCES - No memory was available to load the option ROM.\r
- EFI_DEVICE_ERROR - An error occurred in getting the option ROM.\r
- \r
---*/\r
-;\r
-\r
-\r
-struct _EFI_PCI_PLATFORM_PROTOCOL {\r
- EFI_PCI_PLATFORM_PHASE_NOTIFY PhaseNotify;\r
- EFI_PCI_PLATFORM_PREPROCESS_CONTROLLER PlatformPrepController;\r
- EFI_PCI_PLATFORM_GET_PLATFORM_POLICY GetPlatformPolicy;\r
- EFI_PCI_PLATFORM_GET_PCI_ROM GetPciRom;\r
-};\r
-\r
-extern EFI_GUID gEfiPciPlatformProtocolGuid;\r
-\r
-\r
-\r
-#endif\r