]> git.proxmox.com Git - mirror_edk2.git/blame - DuetPkg/Library/DuetBdsLib/BdsPlatform.h
1.retried graphics library class from MdePkg
[mirror_edk2.git] / DuetPkg / Library / DuetBdsLib / BdsPlatform.h
CommitLineData
c69dd9df 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
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
48#include <Guid/Bmp.h>\r
49#include <Guid/Acpi.h>\r
d8bee43c 50#include <Guid/SmBios.h>\r
c69dd9df 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 (UINT8) (sizeof (PCI_DEVICE_PATH)), \\r
79 (UINT8) ((sizeof (PCI_DEVICE_PATH)) >> 8), \\r
80 (Func), \\r
81 (Dev) \\r
82 }\r
83\r
84#define PNPID_DEVICE_PATH_NODE(PnpId) \\r
85 { \\r
86 ACPI_DEVICE_PATH, \\r
87 ACPI_DP, \\r
88 (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \\r
89 (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8), \\r
90 EISA_PNP_ID((PnpId)), \\r
91 0 \\r
92 }\r
93\r
94#define gPciRootBridge \\r
95 PNPID_DEVICE_PATH_NODE(0x0A03)\r
96\r
97#define gPciIsaBridge \\r
98 PCI_DEVICE_PATH_NODE(0, 0x1f)\r
99\r
100#define gP2PBridge \\r
101 PCI_DEVICE_PATH_NODE(0, 0x1e)\r
102\r
103#define gPnpPs2Keyboard \\r
104 PNPID_DEVICE_PATH_NODE(0x0303)\r
105\r
106#define gPnp16550ComPort \\r
107 PNPID_DEVICE_PATH_NODE(0x0501)\r
108\r
109#define gUart \\r
110 { \\r
111 MESSAGING_DEVICE_PATH, \\r
112 MSG_UART_DP, \\r
113 (UINT8) (sizeof (UART_DEVICE_PATH)), \\r
114 (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8), \\r
115 0, \\r
116 115200, \\r
117 8, \\r
118 1, \\r
119 1 \\r
120 }\r
121\r
122#define gPcAnsiTerminal \\r
123 { \\r
124 MESSAGING_DEVICE_PATH, \\r
125 MSG_VENDOR_DP, \\r
126 (UINT8) (sizeof (VENDOR_DEVICE_PATH)), \\r
127 (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8), \\r
128 DEVICE_PATH_MESSAGING_PC_ANSI \\r
129 }\r
130\r
131#define gEndEntire \\r
132 { \\r
133 END_DEVICE_PATH_TYPE, \\r
134 END_ENTIRE_DEVICE_PATH_SUBTYPE, \\r
135 END_DEVICE_PATH_LENGTH, \\r
136 0 \\r
137 }\r
138\r
139#define PCI_CLASS_SCC 0x07\r
140#define PCI_SUBCLASS_SERIAL 0x00\r
141#define PCI_IF_16550 0x02\r
142#define IS_PCI_16550SERIAL(_p) IS_CLASS3 (_p, PCI_CLASS_SCC, PCI_SUBCLASS_SERIAL, PCI_IF_16550)\r
143\r
144#define EFI_SYSTEM_TABLE_MAX_ADDRESS 0xFFFFFFFF\r
145#define SYS_TABLE_PAD(ptr) (((~ptr) +1) & 0x07 )\r
146//\r
147// Platform Root Bridge\r
148//\r
149typedef struct {\r
150 ACPI_HID_DEVICE_PATH PciRootBridge;\r
151 EFI_DEVICE_PATH_PROTOCOL End;\r
152} PLATFORM_ROOT_BRIDGE_DEVICE_PATH;\r
153\r
154typedef struct {\r
155 ACPI_HID_DEVICE_PATH PciRootBridge;\r
156 PCI_DEVICE_PATH IsaBridge;\r
157 ACPI_HID_DEVICE_PATH Keyboard;\r
158 EFI_DEVICE_PATH_PROTOCOL End;\r
159} PLATFORM_DUMMY_ISA_KEYBOARD_DEVICE_PATH;\r
160\r
161typedef struct {\r
162 ACPI_HID_DEVICE_PATH PciRootBridge;\r
163 PCI_DEVICE_PATH IsaBridge;\r
164 ACPI_HID_DEVICE_PATH IsaSerial;\r
165 UART_DEVICE_PATH Uart;\r
166 VENDOR_DEVICE_PATH TerminalType;\r
167 EFI_DEVICE_PATH_PROTOCOL End;\r
168} PLATFORM_DUMMY_ISA_SERIAL_DEVICE_PATH;\r
169\r
170typedef struct {\r
171 ACPI_HID_DEVICE_PATH PciRootBridge;\r
172 PCI_DEVICE_PATH VgaDevice;\r
173 EFI_DEVICE_PATH_PROTOCOL End;\r
174} PLATFORM_DUMMY_PCI_VGA_DEVICE_PATH;\r
175\r
176typedef struct {\r
177 ACPI_HID_DEVICE_PATH PciRootBridge;\r
178 PCI_DEVICE_PATH PciBridge;\r
179 PCI_DEVICE_PATH SerialDevice;\r
180 UART_DEVICE_PATH Uart;\r
181 VENDOR_DEVICE_PATH TerminalType;\r
182 EFI_DEVICE_PATH_PROTOCOL End;\r
183} PLATFORM_DUMMY_PCI_SERIAL_DEVICE_PATH;\r
184\r
185//\r
186// the short form device path for Usb keyboard\r
187//\r
188#define CLASS_HID 3\r
189#define SUBCLASS_BOOT 1\r
190#define PROTOCOL_KEYBOARD 1\r
191\r
192typedef struct {\r
193 USB_CLASS_DEVICE_PATH UsbClass;\r
194 EFI_DEVICE_PATH_PROTOCOL End;\r
195} USB_CLASS_FORMAT_DEVICE_PATH; \r
196\r
197extern PLATFORM_ROOT_BRIDGE_DEVICE_PATH gPlatformRootBridge0;\r
198\r
199//\r
200// Platform BDS Functions\r
201//\r
202VOID\r
203PlatformBdsInit (\r
204 IN EFI_BDS_ARCH_PROTOCOL_INSTANCE *PrivateData\r
ed66e1bc 205 );\r
c69dd9df 206\r
207VOID\r
208PlatformBdsPolicyBehavior (\r
209 IN EFI_BDS_ARCH_PROTOCOL_INSTANCE *PrivateData,\r
210 IN LIST_ENTRY *DriverOptionList,\r
211 IN LIST_ENTRY *BootOptionList\r
ed66e1bc 212 );\r
c69dd9df 213\r
214VOID\r
215PlatformBdsGetDriverOption (\r
216 IN LIST_ENTRY *BdsDriverLists\r
ed66e1bc 217 );\r
c69dd9df 218\r
219EFI_STATUS\r
220BdsMemoryTest (\r
221 EXTENDMEM_COVERAGE_LEVEL Level\r
ed66e1bc 222 );\r
c69dd9df 223\r
224EFI_STATUS\r
225PlatformBdsShowProgress (\r
226 EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleForeground,\r
227 EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleBackground,\r
228 CHAR16 *Title,\r
229 EFI_GRAPHICS_OUTPUT_BLT_PIXEL ProgressColor,\r
230 UINTN Progress,\r
231 UINTN PreviousValue\r
ed66e1bc 232 );\r
c69dd9df 233\r
234VOID\r
235PlatformBdsConnectSequence (\r
236 VOID\r
ed66e1bc 237 );\r
c69dd9df 238\r
239VOID\r
240PlatformBdsBootFail (\r
241 IN BDS_COMMON_OPTION *Option,\r
242 IN EFI_STATUS Status,\r
243 IN CHAR16 *ExitData,\r
244 IN UINTN ExitDataSize\r
ed66e1bc 245 );\r
c69dd9df 246\r
247VOID\r
248PlatformBdsBootSuccess (\r
249 IN BDS_COMMON_OPTION *Option\r
ed66e1bc 250 );\r
c69dd9df 251\r
252EFI_STATUS\r
253ProcessCapsules (\r
254 EFI_BOOT_MODE BootMode\r
ed66e1bc 255 );\r
c69dd9df 256\r
257EFI_STATUS\r
258PlatformBdsConnectConsole (\r
259 IN BDS_CONSOLE_CONNECT_ENTRY *PlatformConsole\r
ed66e1bc 260 );\r
c69dd9df 261\r
262EFI_STATUS\r
263PlatformBdsNoConsoleAction (\r
264 VOID\r
ed66e1bc 265 );\r
c69dd9df 266\r
267EFI_STATUS\r
268ConvertMpsTable (\r
269 IN OUT VOID **Table\r
ed66e1bc 270 );\r
c69dd9df 271 \r
272EFI_STATUS\r
273ConvertSmbiosTable (\r
274 IN OUT VOID **Table\r
ed66e1bc 275 );\r
c69dd9df 276 \r
277EFI_STATUS\r
278ConvertAcpiTable (\r
279 IN UINTN TableLen,\r
280 IN OUT VOID **Table\r
ed66e1bc 281 );\r
c69dd9df 282\r
283EFI_STATUS\r
284ConvertSystemTable (\r
285 IN EFI_GUID *TableGuid,\r
286 IN OUT VOID **Table\r
ed66e1bc 287 );\r
c69dd9df 288\r
289VOID\r
290PlatformBdsEnterFrontPage (\r
291 IN UINT16 TimeoutDefault,\r
292 IN BOOLEAN ConnectAllHappened\r
ed66e1bc 293 );\r
c69dd9df 294\r
295#endif // _PLATFORM_SPECIFIC_BDS_PLATFORM_H_\r