13eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 23eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3f57387d54bd8f2c0261834b2ad16155f1db63291hhtianCopyright (c) 1999 - 2006, Intel Corporation. All rights reserved.<BR> 4f57387d54bd8f2c0261834b2ad16155f1db63291hhtianThis program and the accompanying materials 53eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangare licensed and made available under the terms and conditions of the BSD License 63eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangwhich accompanies this distribution. The full text of the license may be found at 73eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwanghttp://opensource.org/licenses/bsd-license.php 83eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 93eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangModule Name: 143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang LegacyBiosPlatform.h 163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangAbstract: 183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang The EFI Legacy BIOS Patform Protocol is used to mate a Legacy16 203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang implementation with this EFI code. The EFI driver that produces 213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang the Legacy BIOS protocol is generic and consumes this protocol. 223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang A driver that matches the Legacy16 produces this protocol 233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangRevision History 253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang The EFI Legacy BIOS Platform Protocol is compliant with CSM spec 0.96. 273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#ifndef _EFI_LEGACY_BIOS_PLATFORM_H 313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define _EFI_LEGACY_BIOS_PLATFORM_H 323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_LEGACY_BIOS_PLATFORM_PROTOCOL_GUID \ 343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang { \ 357ccf38a33e1e227131c170a621d183b3bacef148qhuang 0x783658a3, 0x4172, 0x4421, {0xa2, 0x99, 0xe0, 0x9, 0x7, 0x9c, 0xc, 0xb4} \ 363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang } 373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_FORWARD_DECLARATION (EFI_LEGACY_BIOS_PLATFORM_PROTOCOL); 393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include "Tiano.h" 413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include EFI_PROTOCOL_DEFINITION (LegacyBios) 423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack(1) 443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Define structures for GetOemIntData 463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Note: 473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// OemIntDataElenent is an array of structures from 0 to Count-1. 483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// RawData is an array of bytes from 0 to RamDataLength-1. 493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct { 513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT16 Int; 523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT16 Ax; 533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT32 RawDataLength; 543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 RawData[1]; 553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_OEM_INT_DATA_ELEMENT; 563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct { 583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT16 Count; 593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_OEM_INT_DATA_ELEMENT OemIntDataElement[1]; 603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_OEM_INT_DATA; 613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#pragma pack() 623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef enum { 643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiGetPlatformBinaryMpTable = 0, 653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiGetPlatformBinaryOemIntData = 1, 663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiGetPlatformBinaryOem16Data = 2, 673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiGetPlatformBinaryOem32Data = 3, 683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiGetPlatformBinaryTpmBinary = 4, 693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiGetPlatformBinarySystemRom = 5, 703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiGetPlatformPciExpressBase = 6, 713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiGetPlatformPmmSize = 7, 723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiGetPlatformEndOfOpromShadowAddr = 8 733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_GET_PLATFORM_INFO_MODE; 743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef enum { 763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiGetPlatformVgaHandle = 0, 773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiGetPlatformIdeHandle = 1, 783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiGetPlatformIsaBusHandle = 2, 793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiGetPlatformUsbHandle = 3 803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_GET_PLATFORM_HANDLE_MODE; 813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef enum { 833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiPlatformHookPrepareToScanRom = 0, 843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiPlatformHookShadowServiceRoms= 1, 853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiPlatformHookAfterRomInit = 2 863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_GET_PLATFORM_HOOK_MODE; 873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef 893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_INFO) ( 913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, 923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_GET_PLATFORM_INFO_MODE Mode, 933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT VOID **Table, 943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINTN *TableSize, 953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINTN *Location, 963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINTN *Alignment, 973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINT16 LegacySegment, 983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINT16 LegacyOffset 993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 1003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 1013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Routine Description: 1033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Return a System ROM image for the platform 1043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Arguments: 1063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang This - Protocol instance pointer. 1073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Mode - Specifies what data to return 1083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Table - Pointer to MP table. 1093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang TableSize - Size in bytes of table. 1103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Location - Legacy region requested 1113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 0x00 = Any location 1123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Bit 0 = 0xF0000 region 1133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Bit 1 = 0xE0000 region 1143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Multiple bits can be set 1153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Alignment - Address alignment for allocation. 1163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Bit mapped. First non-zero bit from right 1173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang is alignment. 1183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang LegacySegment - Segment in LegacyBios where Table is stored 1203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang LegacyOffset - Offset in LegacyBios where Table is stored 1213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns: 1233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SUCCESS - Data was returned successfully. 1243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_UNSUPPORTED - Mode is not supported on the platform. 1253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_NOT_FOUND - Binary image or table not found. 1263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 1283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang; 1293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef 1313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 1323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_HANDLE) ( 1333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, 1343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_GET_PLATFORM_HANDLE_MODE Mode, 1353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINT16 Type, 1363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT EFI_HANDLE **HandleBuffer, 1373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINTN *HandleCount, 1383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN VOID **AdditionalData OPTIONAL 1393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 1403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 1413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Routine Description: 1433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Return the Legacy16 policy for which device should be the VGA controller 1443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang used during a Legacy16 boot. 1453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Arguments: 1473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang This - Protocol instance pointer. 1483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Mode - Specifies what handle to return. 1493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Type - Type from Device Path for Handle to represent. 1503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang HandleBuffer - Handles of the device/controller in priority order 1513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang with HandleBuffer[0] highest priority. 1523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang HandleCount - Number of handles in the buffer. 1533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang AdditionalData - Mode specific. 1543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns: 1573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SUCCESS - Handle is valid 1583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_UNSUPPORTED - Mode is not supported on the platform. 1593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_NOT_FOUND - Handle is not known 1603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 1623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang; 1633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef 1653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 1663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_SMM_INIT) ( 1673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, 1683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN VOID *EfiToLegacy16BootTable 1693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ); 1703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 1723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Routine Description: 1743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Load and initialize the Legacy BIOS SMM handler. 1753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Arguments: 1773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang This - Protocol instance pointer. 1783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiToLegacy16BootTable - Pointer to Legacy16 boot table. 1793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns: 1803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SUCCESS - SMM code loaded. 1813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_DEVICE_ERROR - SMM code failed to load 1823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 1843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang; 1853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef 1873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 1883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_HOOKS) ( 1893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, 1903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_GET_PLATFORM_HOOK_MODE Mode, 1913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINT16 Type, 1923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_HANDLE DeviceHandle, 1933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN OUT UINTN *ShadowAddress, 1943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_COMPATIBILITY16_TABLE * Compatibility16Table, 1953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN VOID **AdditionalData OPTIONAL 1963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 1973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 1983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Routine Description: 2003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Prepare to scan a ROM. 2013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Arguments: 2033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang This - Protocol instance pointer. 2043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Handle - Device handle 2053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ShadowAddress - Address that ROM is shadowed at prior to 2063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang initialization or first free ROM address, 2073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang depending upon mode. 2083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Compatibility16Table - Pointer to Compatibility16Table. 2093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang AdditionalData - Mode specific. 2103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns: 2133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SUCCESS - RomImage is valid 2143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_UNSUPPORTED - Mode is not supported on the platform or platform 2153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang policy is to not install this OPROM. 2163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 2173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang; 2183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef 2203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 2213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_ROUTING_TABLE) ( 2223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, 2233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT VOID **RoutingTable, 2243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINTN *RoutingTableEntries, 2253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT VOID **LocalPirqTable, OPTIONAL 2263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINTN *PirqTableSize, OPTIONAL 2273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT VOID **LocalIrqPriorityTable, OPTIONAL 2283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINTN *IrqPriorityTableEntries OPTIONAL 2293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 2303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 2313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Routine Description: 2333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1. List of IRQ routing entries and number of entries. 2343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2. Pointer to Entire $PIR table and length. 2353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3. List of IRQs to assign to PCI in priority. 2363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Arguments: 2383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang This - Protocol instance pointer. 2393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang RoutingTable - Pointer to PCI IRQ Routing table. 2403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang RoutingTableEntries - Number of entries in table. 2413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang LocalPirqTable - $PIR table 2423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang PirqTableSize - $PIR table size 2433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang LocalIrqPriorityTable - List of interrupts in priority order to assign 2443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IrqPriorityTableEntries- Number of entries in priority table 2453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns: 2473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SUCCESS - Table pointer returned 2483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 2503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang; 2513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef 2533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 2543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_TRANSLATE_PIRQ) ( 2553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, 2563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINTN PciBus, 2573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINTN PciDevice, 2583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINTN PciFunction, 2593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN OUT UINT8 *Pirq, 2603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang OUT UINT8 *PciIrq 2613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 2623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 2633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Routine Description: 2653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Translate the PIRQ reported by the PCI device into the true PIRQ 2663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang from the internal IRQ routing information and IRQ assigned or to be 2673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang assigned to device. 2683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Arguments: 2703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang This - Protocol instance pointer. 2713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Base as defined below is the bus,device, function in 2723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IRQ routing table. 2733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang PciBus - Base Bus for this device. 2743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang PciDevice - Base Device for this device. 2753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang PciFunction - Base Function for this device. 2763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Pirq - Input is PIRQ reported by device, output is true PIRQ. 2773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang PciIrq - The IRQ already assigned to the PIRQ or the IRQ to be 2783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang assigned to the PIRQ. 2793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns: 2813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SUCCESS - Irq translated 2823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 2843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang; 2853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef 2873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangEFI_STATUS 2883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_PREPARE_TO_BOOT) ( 2893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, 2903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN BBS_BBS_DEVICE_PATH * BbsDevicePath, 2913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN VOID *BbsTable, 2923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN UINT32 LoadOptionsSize, 2933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN VOID *LoadOptions, 2943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang IN VOID *EfiToLegacy16BootTable 2953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) 2963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 2973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Routine Description: 2993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Attempt to legacy boot the BootOption. If the EFI contexted has been 3003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang compromised this function will not return. 3013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Arguments: 3033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang This - Protocol instance pointer. 3043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang BbsDevicePath - EFI Device Path from BootXXXX variable. 3053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang BbsTable - Internal BBS table. 3063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang LoadOptionSize - Size of LoadOption in size. 3073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang LoadOption - LoadOption from BootXXXX variable 3083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiToLegacy16BootTable - Pointer to BootTable structure 3093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Returns: 3113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_SUCCESS - Removable media not present 3123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 3143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang; 3153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3165d46191d8fa6bb1ac94f697136b3444c61e8777cjljustenstruct _EFI_LEGACY_BIOS_PLATFORM_PROTOCOL { 3173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_INFO GetPlatformInfo; 3183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_HANDLE GetPlatformHandle; 3193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_LEGACY_BIOS_PLATFORM_SMM_INIT SmmInit; 3203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_LEGACY_BIOS_PLATFORM_HOOKS PlatformHooks; 3213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_LEGACY_BIOS_PLATFORM_GET_ROUTING_TABLE GetRoutingTable; 3223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_LEGACY_BIOS_PLATFORM_TRANSLATE_PIRQ TranslatePirq; 3233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EFI_LEGACY_BIOS_PLATFORM_PREPARE_TO_BOOT PrepareToBoot; 3245d46191d8fa6bb1ac94f697136b3444c61e8777cjljusten}; 3253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangextern EFI_GUID gEfiLegacyBiosPlatformProtocolGuid; 3273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#endif 329