]> git.proxmox.com Git - mirror_edk2.git/blame - DuetPkg/Library/DuetBdsLib/BdsPlatform.h
Clean up the private GUID definition in module Level.
[mirror_edk2.git] / DuetPkg / Library / DuetBdsLib / BdsPlatform.h
CommitLineData
c69dd9df 1/*++\r
2\r
db4d3fa1 3Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
b1f700a8 4This program and the accompanying materials \r
c69dd9df 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
d8bee43c 30#include <IndustryStandard/SmBios.h>\r
c69dd9df 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
c69dd9df 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
c69dd9df 48#include <Guid/Acpi.h>\r
d8bee43c 49#include <Guid/SmBios.h>\r
c69dd9df 50#include <Guid/Mps.h>\r
51#include <Guid/HobList.h>\r
52#include <Guid/PciExpressBaseAddress.h>\r
53#include <Guid/GlobalVariable.h>\r
db4d3fa1 54#include <Guid/LdrMemoryDescriptor.h>\r
c69dd9df 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
9e65d5e9 78 { \\r
79 (UINT8) (sizeof (PCI_DEVICE_PATH)), \\r
80 (UINT8) ((sizeof (PCI_DEVICE_PATH)) >> 8) \\r
81 }, \\r
c69dd9df 82 (Func), \\r
83 (Dev) \\r
84 }\r
85\r
86#define PNPID_DEVICE_PATH_NODE(PnpId) \\r
87 { \\r
9e65d5e9 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
c69dd9df 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
9e65d5e9 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
c69dd9df 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
9e65d5e9 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
c69dd9df 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
9e65d5e9 149 { \\r
150 END_DEVICE_PATH_LENGTH, \\r
151 0 \\r
152 } \\r
c69dd9df 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
c69dd9df 218VOID\r
219PlatformBdsGetDriverOption (\r
220 IN LIST_ENTRY *BdsDriverLists\r
ed66e1bc 221 );\r
c69dd9df 222\r
223EFI_STATUS\r
224BdsMemoryTest (\r
225 EXTENDMEM_COVERAGE_LEVEL Level\r
ed66e1bc 226 );\r
c69dd9df 227\r
228EFI_STATUS\r
229PlatformBdsShowProgress (\r
230 EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleForeground,\r
231 EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleBackground,\r
232 CHAR16 *Title,\r
233 EFI_GRAPHICS_OUTPUT_BLT_PIXEL ProgressColor,\r
234 UINTN Progress,\r
235 UINTN PreviousValue\r
ed66e1bc 236 );\r
c69dd9df 237\r
238VOID\r
239PlatformBdsConnectSequence (\r
240 VOID\r
ed66e1bc 241 );\r
c69dd9df 242\r
c69dd9df 243EFI_STATUS\r
244ProcessCapsules (\r
245 EFI_BOOT_MODE BootMode\r
ed66e1bc 246 );\r
c69dd9df 247\r
248EFI_STATUS\r
249PlatformBdsConnectConsole (\r
250 IN BDS_CONSOLE_CONNECT_ENTRY *PlatformConsole\r
ed66e1bc 251 );\r
c69dd9df 252\r
253EFI_STATUS\r
254PlatformBdsNoConsoleAction (\r
255 VOID\r
ed66e1bc 256 );\r
c69dd9df 257\r
258EFI_STATUS\r
259ConvertMpsTable (\r
260 IN OUT VOID **Table\r
ed66e1bc 261 );\r
c69dd9df 262 \r
263EFI_STATUS\r
264ConvertSmbiosTable (\r
265 IN OUT VOID **Table\r
ed66e1bc 266 );\r
c69dd9df 267 \r
268EFI_STATUS\r
269ConvertAcpiTable (\r
270 IN UINTN TableLen,\r
271 IN OUT VOID **Table\r
ed66e1bc 272 );\r
c69dd9df 273\r
274EFI_STATUS\r
275ConvertSystemTable (\r
276 IN EFI_GUID *TableGuid,\r
277 IN OUT VOID **Table\r
ed66e1bc 278 );\r
c69dd9df 279\r
280VOID\r
281PlatformBdsEnterFrontPage (\r
282 IN UINT16 TimeoutDefault,\r
283 IN BOOLEAN ConnectAllHappened\r
ed66e1bc 284 );\r
c69dd9df 285\r
286#endif // _PLATFORM_SPECIFIC_BDS_PLATFORM_H_\r