179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing/** @file 279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing The EFI Legacy BIOS Patform Protocol is used to mate a Legacy16 379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing implementation with this EFI code. The EFI driver that produces 479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing the Legacy BIOS protocol is generic and consumes this protocol. 579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing A driver that matches the Legacy16 produces this protocol 679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 7f43c43c72cad940588880d1014e1d462cae75d36jyaoCopyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR> 8f22f941ed273753a0426d1234869857f19c28664myronporterThis program and the accompanying materials are licensed and made available under 9f22f941ed273753a0426d1234869857f19c28664myronporterthe terms and conditions of the BSD License that accompanies this distribution. 10f22f941ed273753a0426d1234869857f19c28664myronporterThe full text of the license may be found at 11f22f941ed273753a0426d1234869857f19c28664myronporterhttp://opensource.org/licenses/bsd-license.php. 12f22f941ed273753a0426d1234869857f19c28664myronporter 13f22f941ed273753a0426d1234869857f19c28664myronporterTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 14f22f941ed273753a0426d1234869857f19c28664myronporterWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 1579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 1679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing @par Revision Reference: 1779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing This protocol is defined in Framework for EFI Compatibility Support Module spec 180f899407a356d80ee211b181878b0b432e7c3fffgikidy Version 0.97. 1979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 2079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing**/ 2179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 2279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing#ifndef _EFI_LEGACY_BIOS_PLATFORM_H_ 2379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing#define _EFI_LEGACY_BIOS_PLATFORM_H_ 2479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 2587d6344732796c9570488593977377bb0e693de7mdkinney/// 2687d6344732796c9570488593977377bb0e693de7mdkinney/// Legacy BIOS Platform depends on HDD_INFO and EFI_COMPATIBILITY16_TABLE that 2787d6344732796c9570488593977377bb0e693de7mdkinney/// are defined with the Legacy BIOS Protocol 2887d6344732796c9570488593977377bb0e693de7mdkinney/// 2987d6344732796c9570488593977377bb0e693de7mdkinney#include <Protocol/LegacyBios.h> 30b80fbe8543eb535e40172a263b6b5d633e5b282cbxing 3179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing#define EFI_LEGACY_BIOS_PLATFORM_PROTOCOL_GUID \ 3279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing { \ 3379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 0x783658a3, 0x4172, 0x4421, {0xa2, 0x99, 0xe0, 0x9, 0x7, 0x9c, 0xc, 0xb4 } \ 3479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing } 3579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 3679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingtypedef struct _EFI_LEGACY_BIOS_PLATFORM_PROTOCOL EFI_LEGACY_BIOS_PLATFORM_PROTOCOL; 3779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 3804dd6cc01af0c18f6d75686b55537ba308a92ae6lgr/** 39412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr This enum specifies the Mode param values for GetPlatformInfo() 4004dd6cc01af0c18f6d75686b55537ba308a92ae6lgr**/ 4179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingtypedef enum { 42412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 43412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// This mode is invoked twice. The first invocation has LegacySegment and 445259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// LegacyOffset set to 0. The mode returns the MP table address in EFI memory, along with its size. 45412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The second invocation has LegacySegment and LegacyOffset set to the location 46412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// in the 0xF0000 or 0xE0000 block to which the MP table is to be copied. The second 475259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// invocation allows any MP table address fixes to occur in the EFI memory copy of the 48412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// MP table. The caller, not EfiGetPlatformBinaryMpTable, copies the modified MP 49412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// table to the allocated region in 0xF0000 or 0xE0000 block after the second invocation. 50412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 51412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The function parameters associated with this mode are: 52412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 53412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Table Pointer to the MP table. 54412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 55412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// TableSize Size in bytes of the MP table. 56412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 57412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Location Location to place table. 0x00. Either 0xE0000 or 0xF0000 64 KB blocks. 58412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Bit 0 = 1 0xF0000 64 KB block. 59412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Bit 1 = 1 0xE0000 64 KB block. 60412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Multiple bits can be set. 61412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 625259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// Alignment Bit-mapped address alignment granularity. 63412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The first nonzero bit from the right is the address granularity. 64412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 655259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel // LegacySegment Segment in which EfiCompatibility code will place the MP table. 66412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 675259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// LegacyOffset Offset in which EfiCompatibility code will place the MP table. 68412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 69412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The return values associated with this mode are: 70412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 71412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// EFI_SUCCESS The MP table was returned. 72412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 73412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// EFI_UNSUPPORTED The MP table is not supported on this platform. 74412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 7579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiGetPlatformBinaryMpTable = 0, 76412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 775259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// This mode returns a block of data. The content and usage is IBV or OEM defined. 78412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// OEMs or IBVs normally use this function for nonstandard Compatibility16 runtime soft 79412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// INTs. It is the responsibility of this routine to coalesce multiple OEM 16 bit functions, if 80412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// they exist, into one coherent package that is understandable by the Compatibility16 code. 81412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// This function is invoked twice. The first invocation has LegacySegment and 825259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// LegacyOffset set to 0. The function returns the table address in EFI memory, as well as its size. 83412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The second invocation has LegacySegment and LegacyOffset set to the location 84412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// in the 0xF0000 or 0xE0000 block to which the data (table) is to be copied. The second 855259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// invocation allows any data (table) address fixes to occur in the EFI memory copy of 86412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// the table. The caller, not GetOemIntData(), copies the modified data (table) to the 87412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// allocated region in 0xF0000 or 0xE0000 block after the second invocation. 88412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 89412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The function parameters associated with this mode are: 90412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 91412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Table Pointer to OEM legacy 16 bit code or data. 92412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 93412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// TableSize Size of data. 94412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 95412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Location Location to place table. 0x00. Either 0xE0000 or 0xF0000 64 KB blocks. 96412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Bit 0 = 1 0xF0000 64 KB block. 97412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Bit 1 = 1 0xE0000 64 KB block. 98412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Multiple bits can be set. 99412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 100412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Alignment Bit mapped address alignment granularity. 101412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The first nonzero bit from the right is the address granularity. 102412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 1035259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// LegacySegment Segment in which EfiCompatibility code will place the table or data. 104412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 1055259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// LegacyOffset Offset in which EfiCompatibility code will place the table or data. 106412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 107412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The return values associated with this mode are: 108412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 109412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// EFI_SUCCESS The data was returned successfully. 110412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 111412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// EFI_UNSUPPORTED Oem INT is not supported on this platform. 112412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 11379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiGetPlatformBinaryOemIntData = 1, 114412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 1155259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// This mode returns a block of data. The content and usage is IBV defined. OEMs or 116412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// IBVs normally use this mode for nonstandard Compatibility16 runtime 16 bit routines. It 117412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// is the responsibility of this routine to coalesce multiple OEM 16 bit functions, if they 118412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// exist, into one coherent package that is understandable by the Compatibility16 code. 1195259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// 1205259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// Example usage: A legacy mobile BIOS that has a pre-existing runtime 121412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// interface to return the battery status to calling applications. 1225259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// 123412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// This mode is invoked twice. The first invocation has LegacySegment and 124412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// LegacyOffset set to 0. The mode returns the table address in EFI memory and its size. 125412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The second invocation has LegacySegment and LegacyOffset set to the location 126412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// in the 0xF0000 or 0xE0000 block to which the table is to be copied. The second 1275259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// invocation allows any table address fixes to occur in the EFI memory copy of the table. 128412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The caller, not EfiGetPlatformBinaryOem16Data, copies the modified table to 129412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// the allocated region in 0xF0000 or 0xE0000 block after the second invocation. 130412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 131412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The function parameters associated with this mode are: 132412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 133412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Table Pointer to OEM legacy 16 bit code or data. 134412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 135412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// TableSize Size of data. 136412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 137412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Location Location to place the table. 0x00. Either 0xE0000 or 0xF0000 64 KB blocks. 138412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Bit 0 = 1 0xF0000 64 KB block. 139412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Bit 1 = 1 0xE0000 64 KB block. 140412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Multiple bits can be set. 141412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 142412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Alignment Bit mapped address alignment granularity. 143412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The first nonzero bit from the right is the address granularity. 144412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 1455259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// LegacySegment Segment in which EfiCompatibility code will place the table or data. 146412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 1475259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// LegacyOffset Offset in which EfiCompatibility code will place the table or data. 148412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 149412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The return values associated with this mode are: 150412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 151412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// EFI_SUCCESS The data was returned successfully. 152412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 153412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// EFI_UNSUPPORTED Oem16 is not supported on this platform. 154412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 15579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiGetPlatformBinaryOem16Data = 2, 156412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// 1575259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel/// This mode returns a block of data. The content and usage are IBV defined. OEMs or 158412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// IBVs normally use this mode for nonstandard Compatibility16 runtime 32 bit routines. It 159412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// is the responsibility of this routine to coalesce multiple OEM 32 bit functions, if they 160412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// exist, into one coherent package that is understandable by the Compatibility16 code. 1615259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel/// 1625259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel/// Example usage: A legacy mobile BIOS that has a pre existing runtime 163412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// interface to return the battery status to calling applications. 1645259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel/// 165412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// This mode is invoked twice. The first invocation has LegacySegment and 166412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// LegacyOffset set to 0. The mode returns the table address in EFI memory and its size. 167412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// 168412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// The second invocation has LegacySegment and LegacyOffset set to the location 169412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// in the 0xF0000 or 0xE0000 block to which the table is to be copied. The second 170412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// invocation allows any table address fix ups to occur in the EFI memory copy of the table. 171412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// The caller, not EfiGetPlatformBinaryOem32Data, copies the modified table to 172412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// the allocated region in 0xF0000 or 0xE0000 block after the second invocation.. 173412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// 174412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// Note: There are two generic mechanisms by which this mode can be used. 175f0d6194dfaa62d16f40e3113e0d52430046a3e81lgao/// Mechanism 1: This mode returns the data and the Legacy BIOS Protocol copies 176412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// the data into the F0000 or E0000 block in the Compatibility16 code. The 177412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// EFI_COMPATIBILITY16_TABLE entries Oem32Segment and Oem32Offset can 178412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// be viewed as two UINT16 entries. 179f0d6194dfaa62d16f40e3113e0d52430046a3e81lgao/// Mechanism 2: This mode directly fills in the EFI_COMPATIBILITY16_TABLE with 180412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// a pointer to the INT15 E820 region containing the 32 bit code. It returns 181412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// EFI_UNSUPPORTED. The EFI_COMPATIBILITY16_TABLE entries, 182412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// Oem32Segment and Oem32Offset, can be viewed as two UINT16 entries or 183412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// as a single UINT32 entry as determined by the IBV. 184412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// 185412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// The function parameters associated with this mode are: 186412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// 187412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// TableSize Size of data. 188412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// 18955db3d44421ed651a5aab7eec1cbb225757c5f46lgao/// Location Location to place the table. 0x00 or 0xE0000 or 0xF0000 64 KB blocks. 190412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// Bit 0 = 1 0xF0000 64 KB block. 191412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// Bit 1 = 1 0xE0000 64 KB block. 192412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// Multiple bits can be set. 193412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// 194412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// Alignment Bit mapped address alignment granularity. 195412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// The first nonzero bit from the right is the address granularity. 196412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// 1975259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel/// LegacySegment Segment in which EfiCompatibility code will place the table or data. 198412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// 1995259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel/// LegacyOffset Offset in which EfiCompatibility code will place the table or data. 200412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// 201412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// The return values associated with this mode are: 202412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// EFI_SUCCESS The data was returned successfully. 203412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// EFI_UNSUPPORTED Oem32 is not supported on this platform. 204412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr/// 205412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgrEfiGetPlatformBinaryOem32Data = 3, 206412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 207412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// This mode returns a TPM binary image for the onboard TPM device. 208412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 209412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The function parameters associated with this mode are: 210412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 211412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Table TPM binary image for the onboard TPM device. 212412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 213412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// TableSize Size of BinaryImage in bytes. 214412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 215412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Location Location to place the table. 0x00. Either 0xE0000 or 0xF0000 64 KB blocks. 216412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Bit 0 = 1 0xF0000 64 KB block. 217412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Bit 1 = 1 0xE0000 64 KB block. 218412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Multiple bits can be set. 219412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 220412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Alignment Bit mapped address alignment granularity. 221412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The first nonzero bit from the right is the address granularity. 222412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 2235259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// LegacySegment Segment in which EfiCompatibility code will place the table or data. 224412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 2255259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel /// LegacyOffset Offset in which EfiCompatibility code will place the table or data. 226412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 227412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The return values associated with this mode are: 228412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 229412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// EFI_SUCCESS BinaryImage is valid. 230412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 231412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// EFI_UNSUPPORTED Mode is not supported on this platform. 232412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 233412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// EFI_NOT_FOUND No BinaryImage was found. 234412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 23579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiGetPlatformBinaryTpmBinary = 4, 236412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 23755db3d44421ed651a5aab7eec1cbb225757c5f46lgao /// The mode finds the Compatibility16 Rom Image. 238412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 239412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The function parameters associated with this mode are: 240412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 241f22f941ed273753a0426d1234869857f19c28664myronporter /// System ROM image for the platform. 242412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 243f22f941ed273753a0426d1234869857f19c28664myronporter /// TableSize Size of Table in bytes. 244412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 245f22f941ed273753a0426d1234869857f19c28664myronporter /// Location Ignored. 246412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 247f22f941ed273753a0426d1234869857f19c28664myronporter /// Alignment Ignored. 248412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 249f22f941ed273753a0426d1234869857f19c28664myronporter /// LegacySegment Ignored. 250412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 251f22f941ed273753a0426d1234869857f19c28664myronporter /// LegacyOffset Ignored. 252412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 253412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The return values associated with this mode are: 254412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 255412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// EFI_SUCCESS ROM image found. 256412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 257412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// EFI_NOT_FOUND ROM not found. 258412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 25979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiGetPlatformBinarySystemRom = 5, 260412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 261412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// This mode returns the Base address of PciExpress memory mapped configuration 262412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// address space. 263412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 264412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The function parameters associated with this mode are: 265412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 266f22f941ed273753a0426d1234869857f19c28664myronporter /// Table System ROM image for the platform. 267412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 268f22f941ed273753a0426d1234869857f19c28664myronporter /// TableSize Size of Table in bytes. 269412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 270f22f941ed273753a0426d1234869857f19c28664myronporter /// Location Ignored. 271412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 272f22f941ed273753a0426d1234869857f19c28664myronporter /// Alignment Ignored. 273412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 274f22f941ed273753a0426d1234869857f19c28664myronporter /// LegacySegment Ignored. 275412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 276f22f941ed273753a0426d1234869857f19c28664myronporter /// LegacyOffset Ignored. 277412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 278412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The return values associated with this mode are: 279412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 280412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// EFI_SUCCESS Address is valid. 281412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 282412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// EFI_UNSUPPORTED System does not PciExpress. 283412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 28479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiGetPlatformPciExpressBase = 6, 285412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 28679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiGetPlatformPmmSize = 7, 287412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 28879964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiGetPlatformEndOpromShadowAddr = 8, 289412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 29079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing} EFI_GET_PLATFORM_INFO_MODE; 29179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 29204dd6cc01af0c18f6d75686b55537ba308a92ae6lgr/** 293f22f941ed273753a0426d1234869857f19c28664myronporter This enum specifies the Mode param values for GetPlatformHandle(). 29404dd6cc01af0c18f6d75686b55537ba308a92ae6lgr**/ 29579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingtypedef enum { 296412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 297412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// This mode returns the Compatibility16 policy for the device that should be the VGA 298412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// controller used during a Compatibility16 boot. 299412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 300412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The function parameters associated with this mode are: 301412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 302f22f941ed273753a0426d1234869857f19c28664myronporter /// Type 0x00. 303412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 304412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// HandleBuffer Buffer of all VGA handles found. 305412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 306412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// HandleCount Number of VGA handles found. 307412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 308f22f941ed273753a0426d1234869857f19c28664myronporter /// AdditionalData NULL. 309412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 31079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiGetPlatformVgaHandle = 0, 311412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 312412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// This mode returns the Compatibility16 policy for the device that should be the IDE 313412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// controller used during a Compatibility16 boot. 314412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 315412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The function parameters associated with this mode are: 316412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 317f22f941ed273753a0426d1234869857f19c28664myronporter /// Type 0x00. 318412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 319412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// HandleBuffer Buffer of all IDE handles found. 320412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 321f22f941ed273753a0426d1234869857f19c28664myronporter /// HandleCount Number of IDE handles found. 322412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 323412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// AdditionalData Pointer to HddInfo. 324412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Information about all onboard IDE controllers. 325412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 32679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiGetPlatformIdeHandle = 1, 327412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 328412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// This mode returns the Compatibility16 policy for the device that should be the ISA bus 329412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// controller used during a Compatibility16 boot. 330412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 331412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The function parameters associated with this mode are: 332412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 333f22f941ed273753a0426d1234869857f19c28664myronporter /// Type 0x00. 334412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 335412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// HandleBuffer Buffer of all ISA bus handles found. 336412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 337412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// HandleCount Number of ISA bus handles found. 338412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 339f22f941ed273753a0426d1234869857f19c28664myronporter /// AdditionalData NULL. 340412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 34179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiGetPlatformIsaBusHandle = 2, 342412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 343412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// This mode returns the Compatibility16 policy for the device that should be the USB 344412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// device used during a Compatibility16 boot. 345412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 346412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The function parameters associated with this mode are: 347412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 348f22f941ed273753a0426d1234869857f19c28664myronporter /// Type 0x00. 349412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 350412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// HandleBuffer Buffer of all USB handles found. 351412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 352412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// HandleCount Number of USB bus handles found. 353412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 354f22f941ed273753a0426d1234869857f19c28664myronporter /// AdditionalData NULL. 355412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 35679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiGetPlatformUsbHandle = 3 35779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing} EFI_GET_PLATFORM_HANDLE_MODE; 35879964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 35904dd6cc01af0c18f6d75686b55537ba308a92ae6lgr/** 360f22f941ed273753a0426d1234869857f19c28664myronporter This enum specifies the Mode param values for PlatformHooks(). 361f22f941ed273753a0426d1234869857f19c28664myronporter Note: Any OEM defined hooks start with 0x8000. 36204dd6cc01af0c18f6d75686b55537ba308a92ae6lgr**/ 36379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingtypedef enum { 364412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 365412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// This mode allows any preprocessing before scanning OpROMs. 366412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 367412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The function parameters associated with this mode are: 368412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 369f22f941ed273753a0426d1234869857f19c28664myronporter /// Type 0. 370412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 371412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// DeviceHandle Handle of device OpROM is associated with. 372412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 373412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// ShadowAddress Address where OpROM is shadowed. 374412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 375f22f941ed273753a0426d1234869857f19c28664myronporter /// Compatibility16Table NULL. 376412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 377f22f941ed273753a0426d1234869857f19c28664myronporter /// AdditionalData NULL. 378412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 37979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiPlatformHookPrepareToScanRom = 0, 380412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 381412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// This mode shadows legacy OpROMS that may not have a physical device associated with 382412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// them. It returns EFI_SUCCESS if the ROM was shadowed. 383412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 384412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The function parameters associated with this mode are: 385412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 386f22f941ed273753a0426d1234869857f19c28664myronporter /// Type 0. 387412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 388f22f941ed273753a0426d1234869857f19c28664myronporter /// DeviceHandle 0. 389412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 390412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// ShadowAddress First free OpROM area, after other OpROMs have been dispatched.. 391412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 392412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Compatibility16Table Pointer to the Compatability16 Table. 393412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 394f22f941ed273753a0426d1234869857f19c28664myronporter /// AdditionalData NULL. 395412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 39679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiPlatformHookShadowServiceRoms= 1, 397412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 398412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// This mode allows platform to perform any required operation after an OpROM has 399412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// completed its initialization. 400412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 401412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// The function parameters associated with this mode are: 402412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 403f22f941ed273753a0426d1234869857f19c28664myronporter /// Type 0. 404412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 405412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// DeviceHandle Handle of device OpROM is associated with. 406412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 407412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// ShadowAddress Address where OpROM is shadowed. 408412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 409f22f941ed273753a0426d1234869857f19c28664myronporter /// Compatibility16Table NULL. 410412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 411f22f941ed273753a0426d1234869857f19c28664myronporter /// AdditionalData NULL. 412412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 41379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EfiPlatformHookAfterRomInit = 2 41479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing} EFI_GET_PLATFORM_HOOK_MODE; 41579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 41604dd6cc01af0c18f6d75686b55537ba308a92ae6lgr/// 41704dd6cc01af0c18f6d75686b55537ba308a92ae6lgr/// This IRQ has not been assigned to PCI. 41804dd6cc01af0c18f6d75686b55537ba308a92ae6lgr/// 4199226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney#define PCI_UNUSED 0x00 42004dd6cc01af0c18f6d75686b55537ba308a92ae6lgr/// 42104dd6cc01af0c18f6d75686b55537ba308a92ae6lgr/// This IRQ has been assigned to PCI. 42204dd6cc01af0c18f6d75686b55537ba308a92ae6lgr/// 4239226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney#define PCI_USED 0xFF 42404dd6cc01af0c18f6d75686b55537ba308a92ae6lgr/// 42504dd6cc01af0c18f6d75686b55537ba308a92ae6lgr/// This IRQ has been used by an SIO legacy device and cannot be used by PCI. 42604dd6cc01af0c18f6d75686b55537ba308a92ae6lgr/// 427f0d6194dfaa62d16f40e3113e0d52430046a3e81lgao#define LEGACY_USED 0xFE 428f0d6194dfaa62d16f40e3113e0d52430046a3e81lgao 4299226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney#pragma pack(1) 4309226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney 4319226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinneytypedef struct { 432412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 433412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// IRQ for this entry. 434412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 4359226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT8 Irq; 436412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 437412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Status of this IRQ. 438412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 439412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// PCI_UNUSED 0x00. This IRQ has not been assigned to PCI. 440412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 441412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// PCI_USED 0xFF. This IRQ has been assigned to PCI. 442412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 443412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// LEGACY_USED 0xFE. This IRQ has been used by an SIO legacy 444412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// device and cannot be used by PCI. 445412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 446f43c43c72cad940588880d1014e1d462cae75d36jyao UINT8 Used; 4479226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney} EFI_LEGACY_IRQ_PRIORITY_TABLE_ENTRY; 4489226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney 4499226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney// 4509226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney// Define PIR table structures 4519226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney// 4529226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney#define EFI_LEGACY_PIRQ_TABLE_SIGNATURE SIGNATURE_32 ('$', 'P', 'I', 'R') 4539226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney 4549226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinneytypedef struct { 455412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 456412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// $PIR. 457412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 4589226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT32 Signature; 459412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 460412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 0x00. 461412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 4629226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT8 MinorVersion; 463412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 464412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 0x01 for table version 1.0. 465412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 4669226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT8 MajorVersion; 467412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 468412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 0x20 + RoutingTableEntries * 0x10. 469412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 4709226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT16 TableSize; 471412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 472412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// PCI interrupt router bus. 473412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 4749226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT8 Bus; 475412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 476412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// PCI interrupt router device/function. 477412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 4789226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT8 DevFun; 479412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 480412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// If nonzero, bit map of IRQs reserved for PCI. 481412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 4829226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT16 PciOnlyIrq; 483412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 484412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Vendor ID of a compatible PCI interrupt router. 485412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 4869226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT16 CompatibleVid; 487412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 488412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Device ID of a compatible PCI interrupt router. 489412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 4909226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT16 CompatibleDid; 491412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 4921910fbaf7014fab2012f06ab03829f0146cf32d4vanjeff /// If nonzero, a value passed directly to the IRQ miniport's Initialize function. 49304dd6cc01af0c18f6d75686b55537ba308a92ae6lgr /// 4949226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT32 Miniport; 495412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 496412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Reserved for future usage. 497412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 4989226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT8 Reserved[11]; 499412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 500412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// This byte plus the sum of all other bytes in the LocalPirqTable equal 0x00. 501412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 5029226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT8 Checksum; 5039226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney} EFI_LEGACY_PIRQ_TABLE_HEADER; 5049226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney 5059226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney 5069226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinneytypedef struct { 507412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 508f43c43c72cad940588880d1014e1d462cae75d36jyao /// If nonzero, a value assigned by the IBV. 509412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 5109226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT8 Pirq; 511412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 512f43c43c72cad940588880d1014e1d462cae75d36jyao /// If nonzero, the IRQs that can be assigned to this device. 513412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 514f43c43c72cad940588880d1014e1d462cae75d36jyao UINT16 IrqMask; 5159226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney} EFI_LEGACY_PIRQ_ENTRY; 5169226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney 5179226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinneytypedef struct { 518412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 519412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// PCI bus of the entry. 520412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 5219226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT8 Bus; 522412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 523412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// PCI device of this entry. 524412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 5259226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT8 Device; 526412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 527412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// An IBV value and IRQ mask for PIRQ pins A through D. 528412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 5299226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney EFI_LEGACY_PIRQ_ENTRY PirqEntry[4]; 530412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 531412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// If nonzero, the slot number assigned by the board manufacturer. 532412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 5339226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT8 Slot; 534412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 535412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Reserved for future use. 536412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 5379226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney UINT8 Reserved; 5389226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney} EFI_LEGACY_IRQ_ROUTING_ENTRY; 5399226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney 5409226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney#pragma pack() 5419226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney 5429226e4ee0a204848ae83daf3026ebfadb80bbfa2mdkinney 54379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing/** 54479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing Finds the binary data or other platform information. 54579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 546f22f941ed273753a0426d1234869857f19c28664myronporter @param This The protocol instance pointer. 54704dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param Mode Specifies what data to return. See See EFI_GET_PLATFORM_INFO_MODE enum. 54804dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param Table Mode specific. See EFI_GET_PLATFORM_INFO_MODE enum. 5495259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel @param TableSize Mode specific. See EFI_GET_PLATFORM_INFO_MODE enum. 5505259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel @param Location Mode specific. See EFI_GET_PLATFORM_INFO_MODE enum. 55104dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param Alignment Mode specific. See EFI_GET_PLATFORM_INFO_MODE enum. 55204dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param LegacySegment Mode specific. See EFI_GET_PLATFORM_INFO_MODE enum. 5535259c97d7ac7f464c134c3a15186b30e8e8eadffpkandel @param LegacyOffset Mode specific. See EFI_GET_PLATFORM_INFO_MODE enum. 55479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 555f22f941ed273753a0426d1234869857f19c28664myronporter @retval EFI_SUCCESS Data returned successfully. 55679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing @retval EFI_UNSUPPORTED Mode is not supported on the platform. 55779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing @retval EFI_NOT_FOUND Binary image or table not found. 55879964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 55979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing**/ 56079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingtypedef 56179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingEFI_STATUS 56269686d5669e0bc621ded618becf1529ce93ff1fdklu(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_INFO)( 56379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL *This, 56479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN EFI_GET_PLATFORM_INFO_MODE Mode, 56579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing OUT VOID **Table, 56679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing OUT UINTN *TableSize, 56779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing OUT UINTN *Location, 56879964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing OUT UINTN *Alignment, 56979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN UINT16 LegacySegment, 57079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN UINT16 LegacyOffset 57179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing ); 57279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 57379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing/** 57404dd6cc01af0c18f6d75686b55537ba308a92ae6lgr Returns a buffer of handles for the requested subfunction. 57579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 576f22f941ed273753a0426d1234869857f19c28664myronporter @param This The protocol instance pointer. 57704dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param Mode Specifies what handle to return. See EFI_GET_PLATFORM_HANDLE_MODE enum. 578412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr @param Type Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum. 57904dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param HandleBuffer Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum. 58004dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param HandleCount Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum. 58104dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param AdditionalData Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum. 58279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 583f22f941ed273753a0426d1234869857f19c28664myronporter @retval EFI_SUCCESS Handle is valid. 58479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing @retval EFI_UNSUPPORTED Mode is not supported on the platform. 585f22f941ed273753a0426d1234869857f19c28664myronporter @retval EFI_NOT_FOUND Handle is not known. 58679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 58779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing**/ 58879964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingtypedef 58979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingEFI_STATUS 59069686d5669e0bc621ded618becf1529ce93ff1fdklu(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_HANDLE)( 59179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL *This, 59279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN EFI_GET_PLATFORM_HANDLE_MODE Mode, 59379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN UINT16 Type, 59479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing OUT EFI_HANDLE **HandleBuffer, 59579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing OUT UINTN *HandleCount, 59679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN VOID **AdditionalData OPTIONAL 59779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing ); 59879964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 59979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing/** 60079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing Load and initialize the Legacy BIOS SMM handler. 60179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 602f22f941ed273753a0426d1234869857f19c28664myronporter @param This The protocol instance pointer. 603f22f941ed273753a0426d1234869857f19c28664myronporter @param EfiToLegacy16BootTable A pointer to Legacy16 boot table. 60479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 60579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing @retval EFI_SUCCESS SMM code loaded. 60679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing @retval EFI_DEVICE_ERROR SMM code failed to load 60779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 60879964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing**/ 60979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingtypedef 61079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingEFI_STATUS 61169686d5669e0bc621ded618becf1529ce93ff1fdklu(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_SMM_INIT)( 61279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL *This, 61379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN VOID *EfiToLegacy16BootTable 61479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing ); 61579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 61679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing/** 61779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing Allows platform to perform any required action after a LegacyBios operation. 618412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr Invokes the specific sub function specified by Mode. 61979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 620f22f941ed273753a0426d1234869857f19c28664myronporter @param This The protocol instance pointer. 62104dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param Mode Specifies what handle to return. See EFI_GET_PLATFORM_HOOK_MODE enum. 62204dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param Type Mode specific. See EFI_GET_PLATFORM_HOOK_MODE enum. 62304dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param DeviceHandle Mode specific. See EFI_GET_PLATFORM_HOOK_MODE enum. 62404dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param ShadowAddress Mode specific. See EFI_GET_PLATFORM_HOOK_MODE enum. 62504dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param Compatibility16Table Mode specific. See EFI_GET_PLATFORM_HOOK_MODE enum. 62604dd6cc01af0c18f6d75686b55537ba308a92ae6lgr @param AdditionalData Mode specific. See EFI_GET_PLATFORM_HOOK_MODE enum. 62704dd6cc01af0c18f6d75686b55537ba308a92ae6lgr 628f22f941ed273753a0426d1234869857f19c28664myronporter @retval EFI_SUCCESS The operation performed successfully. Mode specific. 62979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing @retval EFI_UNSUPPORTED Mode is not supported on the platform. 63079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 63179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing**/ 63279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingtypedef 63379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingEFI_STATUS 63469686d5669e0bc621ded618becf1529ce93ff1fdklu(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_HOOKS)( 63579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL *This, 63679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN EFI_GET_PLATFORM_HOOK_MODE Mode, 63779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN UINT16 Type, 63804dd6cc01af0c18f6d75686b55537ba308a92ae6lgr IN EFI_HANDLE DeviceHandle, OPTIONAL 63904dd6cc01af0c18f6d75686b55537ba308a92ae6lgr IN OUT UINTN *ShadowAddress, OPTIONAL 64004dd6cc01af0c18f6d75686b55537ba308a92ae6lgr IN EFI_COMPATIBILITY16_TABLE *Compatibility16Table, OPTIONAL 64104dd6cc01af0c18f6d75686b55537ba308a92ae6lgr OUT VOID **AdditionalData OPTIONAL 64279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing ); 64379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 64479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing/** 64579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing Returns information associated with PCI IRQ routing. 646412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr This function returns the following information associated with PCI IRQ routing: 647f22f941ed273753a0426d1234869857f19c28664myronporter * An IRQ routing table and number of entries in the table. 648f22f941ed273753a0426d1234869857f19c28664myronporter * The $PIR table and its size. 649f22f941ed273753a0426d1234869857f19c28664myronporter * A list of PCI IRQs and the priority order to assign them. 65079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 651f22f941ed273753a0426d1234869857f19c28664myronporter @param This The protocol instance pointer. 652f22f941ed273753a0426d1234869857f19c28664myronporter @param RoutingTable The pointer to PCI IRQ Routing table. 653412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr This location is the $PIR table minus the header. 654f22f941ed273753a0426d1234869857f19c28664myronporter @param RoutingTableEntries The number of entries in table. 655f22f941ed273753a0426d1234869857f19c28664myronporter @param LocalPirqTable $PIR table. 656f22f941ed273753a0426d1234869857f19c28664myronporter @param PirqTableSize $PIR table size. 657f22f941ed273753a0426d1234869857f19c28664myronporter @param LocalIrqPriorityTable A list of interrupts in priority order to assign. 658f22f941ed273753a0426d1234869857f19c28664myronporter @param IrqPriorityTableEntries The number of entries in the priority table. 65979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 66079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing @retval EFI_SUCCESS Data was successfully returned. 66179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 66279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing**/ 66379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingtypedef 66479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingEFI_STATUS 66569686d5669e0bc621ded618becf1529ce93ff1fdklu(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_ROUTING_TABLE)( 66679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL *This, 66779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing OUT VOID **RoutingTable, 66879964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing OUT UINTN *RoutingTableEntries, 66979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing OUT VOID **LocalPirqTable, OPTIONAL 67079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing OUT UINTN *PirqTableSize, OPTIONAL 67179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing OUT VOID **LocalIrqPriorityTable, OPTIONAL 67279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing OUT UINTN *IrqPriorityTableEntries OPTIONAL 67379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing ); 67479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 67579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing/** 676f22f941ed273753a0426d1234869857f19c28664myronporter Translates the given PIRQ accounting for bridge. 677412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr This function translates the given PIRQ back through all buses, if required, 678412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr and returns the true PIRQ and associated IRQ. 67979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 680f22f941ed273753a0426d1234869857f19c28664myronporter @param This The protocol instance pointer. 681f22f941ed273753a0426d1234869857f19c28664myronporter @param PciBus The PCI bus number for this device. 682f22f941ed273753a0426d1234869857f19c28664myronporter @param PciDevice The PCI device number for this device. 683f22f941ed273753a0426d1234869857f19c28664myronporter @param PciFunction The PCI function number for this device. 684f22f941ed273753a0426d1234869857f19c28664myronporter @param Pirq Input is PIRQ reported by device, and output is true PIRQ. 685f22f941ed273753a0426d1234869857f19c28664myronporter @param PciIrq The IRQ already assigned to the PIRQ, or the IRQ to be 68679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing assigned to the PIRQ. 68779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 68879964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing @retval EFI_SUCCESS The PIRQ was translated. 68979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 69079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing**/ 69179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingtypedef 69279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingEFI_STATUS 69369686d5669e0bc621ded618becf1529ce93ff1fdklu(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_TRANSLATE_PIRQ)( 69479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL *This, 69579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN UINTN PciBus, 69679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN UINTN PciDevice, 69779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN UINTN PciFunction, 69879964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN OUT UINT8 *Pirq, 69979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing OUT UINT8 *PciIrq 70079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing ); 70179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 70279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing/** 70379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing Attempt to legacy boot the BootOption. If the EFI contexted has been 70479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing compromised this function will not return. 70579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 706f22f941ed273753a0426d1234869857f19c28664myronporter @param This The protocol instance pointer. 707f22f941ed273753a0426d1234869857f19c28664myronporter @param BbsDevicePath The EFI Device Path from BootXXXX variable. 708f22f941ed273753a0426d1234869857f19c28664myronporter @param BbsTable The Internal BBS table. 709f22f941ed273753a0426d1234869857f19c28664myronporter @param LoadOptionSize The size of LoadOption in size. 710f22f941ed273753a0426d1234869857f19c28664myronporter @param LoadOption The LoadOption from BootXXXX variable 711f22f941ed273753a0426d1234869857f19c28664myronporter @param EfiToLegacy16BootTable A pointer to BootTable structure 71279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 71379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing @retval EFI_SUCCESS Ready to boot. 71479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 71579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing**/ 71679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingtypedef 71779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingEFI_STATUS 71869686d5669e0bc621ded618becf1529ce93ff1fdklu(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_PREPARE_TO_BOOT)( 71979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL *This, 72079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN BBS_BBS_DEVICE_PATH *BbsDevicePath, 72179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN VOID *BbsTable, 72279964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN UINT32 LoadOptionsSize, 72379964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN VOID *LoadOptions, 72479964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing IN VOID *EfiToLegacy16BootTable 72579964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing ); 72679964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 72779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing/** 72804dd6cc01af0c18f6d75686b55537ba308a92ae6lgr This protocol abstracts the platform portion of the traditional BIOS. 72979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing**/ 73079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingstruct _EFI_LEGACY_BIOS_PLATFORM_PROTOCOL { 731412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 732412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Gets binary data or other platform information. 733412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 734412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_INFO GetPlatformInfo; 735412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 736412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Returns a buffer of all handles matching the requested subfunction. 737412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 73879964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_HANDLE GetPlatformHandle; 739412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 740412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Loads and initializes the traditional BIOS SMM handler. 741412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr EFI_LEGACY_BIOS_PLATFORM_SMM_INIT SmmInit; 742412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 743412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Allows platform to perform any required actions after a LegacyBios operation. 744412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 745412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr EFI_LEGACY_BIOS_PLATFORM_HOOKS PlatformHooks; 746412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 747412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Gets $PIR table. 748412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr EFI_LEGACY_BIOS_PLATFORM_GET_ROUTING_TABLE GetRoutingTable; 749412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 750412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Translates the given PIRQ to the final value after traversing any PCI bridges. 751412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 752412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr EFI_LEGACY_BIOS_PLATFORM_TRANSLATE_PIRQ TranslatePirq; 753412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 754412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// Final platform function before the system attempts to boot to a traditional OS. 755412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr /// 756412fb9ef2d5389a7ad1735ac8187ac2f72103fbclgr EFI_LEGACY_BIOS_PLATFORM_PREPARE_TO_BOOT PrepareToBoot; 75779964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing}; 75879964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 75979964ac84ea0ca6c68d0dea38245fa83ff1945d1bxingextern EFI_GUID gEfiLegacyBiosPlatformProtocolGuid; 76079964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing 76179964ac84ea0ca6c68d0dea38245fa83ff1945d1bxing#endif 762