]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.h
OvmfPkg: Duplicate PlatformBdsLib to PlatformBootManagerLib
[mirror_edk2.git] / OvmfPkg / Library / PlatformBootManagerLib / BdsPlatform.h
CommitLineData
30541881
RN
1/** @file\r
2 Platform BDS customizations include file.\r
3\r
4 Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>\r
5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13Module Name:\r
14\r
15 BdsPlatform.h\r
16\r
17Abstract:\r
18\r
19 Head file for BDS Platform specific code\r
20\r
21**/\r
22\r
23#ifndef _PLATFORM_SPECIFIC_BDS_PLATFORM_H_\r
24#define _PLATFORM_SPECIFIC_BDS_PLATFORM_H_\r
25\r
26\r
27#include <PiDxe.h>\r
28\r
29#include <IndustryStandard/Pci.h>\r
30#include <IndustryStandard/Acpi.h>\r
31#include <IndustryStandard/SmBios.h>\r
32#include <IndustryStandard/PeImage.h>\r
33\r
34#include <Library/DebugLib.h>\r
35#include <Library/BaseMemoryLib.h>\r
36#include <Library/UefiBootServicesTableLib.h>\r
37#include <Library/UefiRuntimeServicesTableLib.h>\r
38#include <Library/MemoryAllocationLib.h>\r
39#include <Library/BaseLib.h>\r
40#include <Library/PcdLib.h>\r
41#include <Library/PciLib.h>\r
42#include <Library/GenericBdsLib.h>\r
43#include <Library/PlatformBdsLib.h>\r
44#include <Library/HobLib.h>\r
45#include <Library/UefiLib.h>\r
46#include <Library/DxeServicesTableLib.h>\r
47#include <Library/DevicePathLib.h>\r
48#include <Library/IoLib.h>\r
49#include <Library/NvVarsFileLib.h>\r
50#include <Library/QemuFwCfgLib.h>\r
51\r
52#include <Protocol/Decompress.h>\r
53#include <Protocol/PciIo.h>\r
54#include <Protocol/FirmwareVolume2.h>\r
55#include <Protocol/SimpleFileSystem.h>\r
56#include <Protocol/PciRootBridgeIo.h>\r
57#include <Protocol/S3SaveState.h>\r
58#include <Protocol/DxeSmmReadyToLock.h>\r
59\r
60#include <Guid/Acpi.h>\r
61#include <Guid/SmBios.h>\r
62#include <Guid/Mps.h>\r
63#include <Guid/HobList.h>\r
64#include <Guid/GlobalVariable.h>\r
65#include <Guid/EventGroup.h>\r
66\r
67#include <OvmfPlatforms.h>\r
68\r
69extern BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole[];\r
70extern EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence[];\r
71extern EFI_DEVICE_PATH_PROTOCOL *gPlatformDriverOption[];\r
72extern ACPI_HID_DEVICE_PATH gPnpPs2KeyboardDeviceNode;\r
73extern ACPI_HID_DEVICE_PATH gPnp16550ComPortDeviceNode;\r
74extern UART_DEVICE_PATH gUartDeviceNode;\r
75extern VENDOR_DEVICE_PATH gTerminalTypeDeviceNode;\r
76//\r
77//\r
78//\r
79#define VarConsoleInpDev L"ConInDev"\r
80#define VarConsoleInp L"ConIn"\r
81#define VarConsoleOutDev L"ConOutDev"\r
82#define VarConsoleOut L"ConOut"\r
83#define VarErrorOutDev L"ErrOutDev"\r
84#define VarErrorOut L"ErrOut"\r
85\r
86#define PCI_DEVICE_PATH_NODE(Func, Dev) \\r
87 { \\r
88 { \\r
89 HARDWARE_DEVICE_PATH, \\r
90 HW_PCI_DP, \\r
91 { \\r
92 (UINT8) (sizeof (PCI_DEVICE_PATH)), \\r
93 (UINT8) ((sizeof (PCI_DEVICE_PATH)) >> 8) \\r
94 } \\r
95 }, \\r
96 (Func), \\r
97 (Dev) \\r
98 }\r
99\r
100#define PNPID_DEVICE_PATH_NODE(PnpId) \\r
101 { \\r
102 { \\r
103 ACPI_DEVICE_PATH, \\r
104 ACPI_DP, \\r
105 { \\r
106 (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \\r
107 (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8) \\r
108 }, \\r
109 }, \\r
110 EISA_PNP_ID((PnpId)), \\r
111 0 \\r
112 }\r
113\r
114#define gPciIsaBridge \\r
115 PCI_DEVICE_PATH_NODE(0, 0x1f)\r
116\r
117#define gP2PBridge \\r
118 PCI_DEVICE_PATH_NODE(0, 0x1e)\r
119\r
120#define gPnpPs2Keyboard \\r
121 PNPID_DEVICE_PATH_NODE(0x0303)\r
122\r
123#define gPnp16550ComPort \\r
124 PNPID_DEVICE_PATH_NODE(0x0501)\r
125\r
126#define gUart \\r
127 { \\r
128 { \\r
129 MESSAGING_DEVICE_PATH, \\r
130 MSG_UART_DP, \\r
131 { \\r
132 (UINT8) (sizeof (UART_DEVICE_PATH)), \\r
133 (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8) \\r
134 } \\r
135 }, \\r
136 0, \\r
137 115200, \\r
138 8, \\r
139 1, \\r
140 1 \\r
141 }\r
142\r
143#define gPcAnsiTerminal \\r
144 { \\r
145 { \\r
146 MESSAGING_DEVICE_PATH, \\r
147 MSG_VENDOR_DP, \\r
148 { \\r
149 (UINT8) (sizeof (VENDOR_DEVICE_PATH)), \\r
150 (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) \\r
151 } \\r
152 }, \\r
153 DEVICE_PATH_MESSAGING_PC_ANSI \\r
154 }\r
155\r
156#define PCI_CLASS_SCC 0x07\r
157#define PCI_SUBCLASS_SERIAL 0x00\r
158#define PCI_IF_16550 0x02\r
159#define IS_PCI_16550SERIAL(_p) IS_CLASS3 (_p, PCI_CLASS_SCC, PCI_SUBCLASS_SERIAL, PCI_IF_16550)\r
160\r
161#define EFI_SYSTEM_TABLE_MAX_ADDRESS 0xFFFFFFFF\r
162#define SYS_TABLE_PAD(ptr) (((~ptr) +1) & 0x07 )\r
163\r
164#define IS_PCI_ISA_PDECODE(_p) IS_CLASS3 (_p, PCI_CLASS_BRIDGE, PCI_CLASS_BRIDGE_ISA_PDECODE, 0)\r
165\r
166typedef struct {\r
167 ACPI_HID_DEVICE_PATH PciRootBridge;\r
168 PCI_DEVICE_PATH IsaBridge;\r
169 ACPI_HID_DEVICE_PATH Keyboard;\r
170 EFI_DEVICE_PATH_PROTOCOL End;\r
171} PLATFORM_DUMMY_ISA_KEYBOARD_DEVICE_PATH;\r
172\r
173typedef struct {\r
174 ACPI_HID_DEVICE_PATH PciRootBridge;\r
175 PCI_DEVICE_PATH IsaBridge;\r
176 ACPI_HID_DEVICE_PATH IsaSerial;\r
177 UART_DEVICE_PATH Uart;\r
178 VENDOR_DEVICE_PATH TerminalType;\r
179 EFI_DEVICE_PATH_PROTOCOL End;\r
180} PLATFORM_DUMMY_ISA_SERIAL_DEVICE_PATH;\r
181\r
182typedef struct {\r
183 ACPI_HID_DEVICE_PATH PciRootBridge;\r
184 PCI_DEVICE_PATH VgaDevice;\r
185 EFI_DEVICE_PATH_PROTOCOL End;\r
186} PLATFORM_DUMMY_PCI_VGA_DEVICE_PATH;\r
187\r
188typedef struct {\r
189 ACPI_HID_DEVICE_PATH PciRootBridge;\r
190 PCI_DEVICE_PATH PciBridge;\r
191 PCI_DEVICE_PATH SerialDevice;\r
192 UART_DEVICE_PATH Uart;\r
193 VENDOR_DEVICE_PATH TerminalType;\r
194 EFI_DEVICE_PATH_PROTOCOL End;\r
195} PLATFORM_DUMMY_PCI_SERIAL_DEVICE_PATH;\r
196\r
197//\r
198// the short form device path for Usb keyboard\r
199//\r
200#define CLASS_HID 3\r
201#define SUBCLASS_BOOT 1\r
202#define PROTOCOL_KEYBOARD 1\r
203\r
204typedef struct {\r
205 USB_CLASS_DEVICE_PATH UsbClass;\r
206 EFI_DEVICE_PATH_PROTOCOL End;\r
207} USB_CLASS_FORMAT_DEVICE_PATH;\r
208\r
209//\r
210// Platform BDS Functions\r
211//\r
212\r
213VOID\r
214PlatformBdsGetDriverOption (\r
215 IN LIST_ENTRY *BdsDriverLists\r
216 );\r
217\r
218EFI_STATUS\r
219BdsMemoryTest (\r
220 EXTENDMEM_COVERAGE_LEVEL Level\r
221 );\r
222\r
223EFI_STATUS\r
224PlatformBdsShowProgress (\r
225 EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleForeground,\r
226 EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleBackground,\r
227 CHAR16 *Title,\r
228 EFI_GRAPHICS_OUTPUT_BLT_PIXEL ProgressColor,\r
229 UINTN Progress,\r
230 UINTN PreviousValue\r
231 );\r
232\r
233VOID\r
234PlatformBdsConnectSequence (\r
235 VOID\r
236 );\r
237\r
238EFI_STATUS\r
239ProcessCapsules (\r
240 EFI_BOOT_MODE BootMode\r
241 );\r
242\r
243EFI_STATUS\r
244PlatformBdsConnectConsole (\r
245 IN BDS_CONSOLE_CONNECT_ENTRY *PlatformConsole\r
246 );\r
247\r
248EFI_STATUS\r
249PlatformBdsNoConsoleAction (\r
250 VOID\r
251 );\r
252\r
253EFI_STATUS\r
254ConvertMpsTable (\r
255 IN OUT VOID **Table\r
256 );\r
257\r
258EFI_STATUS\r
259ConvertSmbiosTable (\r
260 IN OUT VOID **Table\r
261 );\r
262\r
263EFI_STATUS\r
264ConvertAcpiTable (\r
265 IN UINTN TableLen,\r
266 IN OUT VOID **Table\r
267 );\r
268\r
269EFI_STATUS\r
270ConvertSystemTable (\r
271 IN EFI_GUID *TableGuid,\r
272 IN OUT VOID **Table\r
273 );\r
274\r
275VOID\r
276PlatformBdsEnterFrontPage (\r
277 IN UINT16 TimeoutDefault,\r
278 IN BOOLEAN ConnectAllHappened\r
279 );\r
280\r
281/**\r
282 Loads and boots UEFI Linux via the FwCfg interface.\r
283\r
284 @retval EFI_NOT_FOUND - The Linux kernel was not found\r
285\r
286**/\r
287EFI_STATUS\r
288TryRunningQemuKernel (\r
289 VOID\r
290 );\r
291\r
292#endif // _PLATFORM_SPECIFIC_BDS_PLATFORM_H_\r