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