]> git.proxmox.com Git - mirror_edk2.git/blame - Vlv2TbltDevicePkg/Library/PlatformBdsLib/BdsPlatform.h
Upload BSD-licensed Vlv2TbltDevicePkg and Vlv2DeviceRefCodePkg to
[mirror_edk2.git] / Vlv2TbltDevicePkg / Library / PlatformBdsLib / BdsPlatform.h
CommitLineData
3cbfba02
DW
1/*++\r
2\r
3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>\r
4 \r\r
5 This program and the accompanying materials are licensed and made available under\r\r
6 the terms and conditions of the BSD License that accompanies this distribution. \r\r
7 The full text of the license may be found at \r\r
8 http://opensource.org/licenses/bsd-license.php. \r\r
9 \r\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r\r
12 \r\r
13\r
14\r
15Module Name:\r
16\r
17 BdsPlatform.h\r
18\r
19Abstract:\r
20\r
21 Head file for BDS Platform specific code\r
22\r
23--*/\r
24\r
25#ifndef _BDS_PLATFORM_H\r
26#define _BDS_PLATFORM_H\r
27\r
28#include <FrameworkDxe.h>\r
29\r
30#include <Protocol/FirmwareVolume2.h>\r
31#include <Protocol/DevicePath.h>\r
32#include <Protocol/SimpleNetwork.h>\r
33#include <Protocol/PciRootBridgeIo.h>\r
34#include <Protocol/LoadFile.h>\r
35#include <Protocol/LegacyBios.h>\r
36#include <Protocol/PciIo.h>\r
37#include <Protocol/SmmAccess2.h>\r
38#include <Protocol/DxeSmmReadyToLock.h>\r
39#include <Protocol/UserManager.h>\r
40#include <Protocol/DeferredImageLoad.h>\r
41#include <Protocol/AcpiS3Save.h>\r
42#include <Protocol/ExitPmAuth.h>\r
43#include <Protocol/MmioDevice.h>\r
44#include <Protocol/I2cBusMcg.h>\r
45#include <Protocol/I2cHostMcg.h>\r
46#include <Guid/CapsuleVendor.h>\r
47#include <Guid/MemoryTypeInformation.h>\r
48#include <Guid/GlobalVariable.h>\r
49\r
50\r
51#include <Library/DebugLib.h>\r
52#include <Library/BaseMemoryLib.h>\r
53#include <Library/UefiBootServicesTableLib.h>\r
54#include <Library/UefiRuntimeServicesTableLib.h>\r
55#include <Library/MemoryAllocationLib.h>\r
56#include <Library/BaseLib.h>\r
57#include <Library/PcdLib.h>\r
58#include <Library/IoLib.h>\r
59#include <Library/GenericBdsLib.h>\r
60#include <Library/PlatformBdsLib.h>\r
61#include <Library/DevicePathLib.h>\r
62#include <Library/UefiLib.h>\r
63#include <Library/HobLib.h>\r
64#include <Library/PrintLib.h>\r
65#include <Library/PerformanceLib.h>\r
66#include <Library/ReportStatusCodeLib.h>\r
67\r
68#include <IndustryStandard/Pci.h>\r
69\r
70extern EFI_DEVICE_PATH_PROTOCOL *gPlatformRootBridges [];\r
71extern BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole [];\r
72extern EFI_DEVICE_PATH_PROTOCOL *gPlatformAllPossiblePciVgaConsole [];\r
73extern EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence [];\r
74extern EFI_DEVICE_PATH_PROTOCOL *gPlatformDriverOption [];\r
75extern EFI_DEVICE_PATH_PROTOCOL *gPlatformBootOption [];\r
76extern EFI_DEVICE_PATH_PROTOCOL *gUserAuthenticationDevice[];\r
77extern BDS_CONSOLE_CONNECT_ENTRY gPlatformSimpleConsole [];\r
78extern EFI_DEVICE_PATH_PROTOCOL *gPlatformSimpleBootOption [];\r
79\r
80//\r
81// the short form device path for Usb keyboard\r
82//\r
83#define CLASS_HID 3\r
84#define SUBCLASS_BOOT 1\r
85#define PROTOCOL_KEYBOARD 1\r
86\r
87#define PCI_DEVICE_PATH_NODE(Func, Dev) \\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 (Func), \\r
96 (Dev) \\r
97 }\r
98\r
99#define PNPID_DEVICE_PATH_NODE(PnpId) \\r
100 { \\r
101 { \\r
102 ACPI_DEVICE_PATH, \\r
103 ACPI_DP, \\r
104 { \\r
105 (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \\r
106 (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8) \\r
107 } \\r
108 }, \\r
109 EISA_PNP_ID((PnpId)), \\r
110 0 \\r
111 }\r
112\r
113#define gUart(BaudRate, DataBits, Parity, StopBits) \\r
114 { \\r
115 { \\r
116 MESSAGING_DEVICE_PATH, \\r
117 MSG_UART_DP, \\r
118 { \\r
119 (UINT8) (sizeof (UART_DEVICE_PATH)), \\r
120 (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8) \\r
121 } \\r
122 }, \\r
123 0, \\r
124 (BaudRate), \\r
125 (DataBits), \\r
126 (Parity), \\r
127 (StopBits) \\r
128 }\r
129\r
130#define gPcAnsiTerminal \\r
131 { \\r
132 { \\r
133 MESSAGING_DEVICE_PATH, \\r
134 MSG_VENDOR_DP, \\r
135 { \\r
136 (UINT8) (sizeof (VENDOR_DEVICE_PATH)), \\r
137 (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) \\r
138 } \\r
139 }, \\r
140 DEVICE_PATH_MESSAGING_PC_ANSI \\r
141 }\r
142\r
143#define gUsbKeyboardMouse \\r
144 { \\r
145 { \\r
146 MESSAGING_DEVICE_PATH, \\r
147 MSG_USB_CLASS_DP, \\r
148 (UINT8) (sizeof (USB_CLASS_DEVICE_PATH)), \\r
149 (UINT8) ((sizeof (USB_CLASS_DEVICE_PATH)) >> 8) \\r
150 }, \\r
151 0xffff, \\r
152 0xffff, \\r
153 CLASS_HID, \\r
154 SUBCLASS_BOOT, \\r
155 PROTOCOL_KEYBOARD \\r
156 }\r
157\r
158#define gEndEntire \\r
159 { \\r
160 END_DEVICE_PATH_TYPE, \\r
161 END_ENTIRE_DEVICE_PATH_SUBTYPE, \\r
162 { \\r
163 END_DEVICE_PATH_LENGTH, \\r
164 0 \\r
165 } \\r
166 }\r
167\r
168#define gPciRootBridge \\r
169 PNPID_DEVICE_PATH_NODE(0x0A03)\r
170\r
171#define gPnpPs2Keyboard \\r
172 PNPID_DEVICE_PATH_NODE(0x0303)\r
173\r
174#define gPnp16550ComPort \\r
175 PNPID_DEVICE_PATH_NODE(0x0501)\r
176\r
177#define gPciePort0Bridge \\r
178 PCI_DEVICE_PATH_NODE(0, 0x1C)\r
179\r
180#define gPciePort1Bridge \\r
181 PCI_DEVICE_PATH_NODE(1, 0x1C)\r
182\r
183#define gPciePort2Bridge \\r
184 PCI_DEVICE_PATH_NODE(2, 0x1C)\r
185\r
186#define gPciePort3Bridge \\r
187 PCI_DEVICE_PATH_NODE(3, 0x1C)\r
188\r
189#define gPciIsaBridge \\r
190 PCI_DEVICE_PATH_NODE(0, 0x1f)\r
191\r
192//\r
193// Platform Root Bridge\r
194//\r
195typedef struct {\r
196 ACPI_HID_DEVICE_PATH PciRootBridge;\r
197 EFI_DEVICE_PATH_PROTOCOL End;\r
198} PLATFORM_ROOT_BRIDGE_DEVICE_PATH;\r
199\r
200//\r
201// Below is the platform console device path\r
202//\r
203typedef struct {\r
204 ACPI_HID_DEVICE_PATH PciRootBridge;\r
205 PCI_DEVICE_PATH IsaBridge;\r
206 ACPI_HID_DEVICE_PATH Keyboard;\r
207 EFI_DEVICE_PATH_PROTOCOL End;\r
208} PLATFORM_ISA_KEYBOARD_DEVICE_PATH;\r
209\r
210typedef struct {\r
211 VENDOR_DEVICE_PATH VendorDevicePath;\r
212 EFI_DEVICE_PATH_PROTOCOL End;\r
213} HII_VENDOR_DEVICE_PATH;\r
214\r
215typedef struct {\r
216 USB_CLASS_DEVICE_PATH UsbClass;\r
217 EFI_DEVICE_PATH_PROTOCOL End;\r
218} USB_CLASS_FORMAT_DEVICE_PATH;\r
219\r
220typedef struct {\r
221 ACPI_HID_DEVICE_PATH PciRootBridge;\r
222 PCI_DEVICE_PATH OnboardVga;\r
223 EFI_DEVICE_PATH_PROTOCOL End;\r
224} PLATFORM_ONBOARD_VGA_DEVICE_PATH;\r
225\r
226typedef struct {\r
227 ACPI_HID_DEVICE_PATH PciRootBridge;\r
228 PCI_DEVICE_PATH AgpBridge;\r
229 PCI_DEVICE_PATH AgpDevice;\r
230 EFI_DEVICE_PATH_PROTOCOL End;\r
231} PLATFORM_OFFBOARD_VGA_DEVICE_PATH;\r
232\r
233typedef struct {\r
234 ACPI_HID_DEVICE_PATH PciRootBridge;\r
235 PCI_DEVICE_PATH IsaBridge;\r
236 ACPI_HID_DEVICE_PATH IsaSerial;\r
237 UART_DEVICE_PATH Uart;\r
238 VENDOR_DEVICE_PATH TerminalType;\r
239 EFI_DEVICE_PATH_PROTOCOL End;\r
240} PLATFORM_ISA_SERIAL_DEVICE_PATH;\r
241\r
242//\r
243// Below is the boot option device path\r
244//\r
245typedef struct {\r
246 BBS_BBS_DEVICE_PATH LegacyHD;\r
247 EFI_DEVICE_PATH_PROTOCOL End;\r
248} LEGACY_HD_DEVICE_PATH;\r
249\r
250//\r
251// Below is the platform IDE device path\r
252//\r
253typedef struct {\r
254 ACPI_HID_DEVICE_PATH PciRootBridge;\r
255 PCI_DEVICE_PATH IsaBridge;\r
256 ATAPI_DEVICE_PATH Ide;\r
257 EFI_DEVICE_PATH_PROTOCOL End;\r
258} PLATFORM_IDE_DEVICE_PATH;\r
259\r
260//\r
261// Floppy device path definition\r
262//\r
263typedef struct {\r
264 ACPI_HID_DEVICE_PATH PciRootBridge;\r
265 PCI_DEVICE_PATH IsaBridge;\r
266 ACPI_HID_DEVICE_PATH Floppy;\r
267 EFI_DEVICE_PATH_PROTOCOL End;\r
268} PLATFORM_FLOPPY_DEVICE_PATH;\r
269\r
270//\r
271// Below is the platform USB controller device path for\r
272// USB disk as user authentication device.\r
273//\r
274typedef struct {\r
275 ACPI_HID_DEVICE_PATH PciRootBridge;\r
276 PCI_DEVICE_PATH PciDevice;\r
277 EFI_DEVICE_PATH_PROTOCOL End;\r
278} PLATFORM_USB_DEVICE_PATH;\r
279\r
280//\r
281// Below is the platform PCI device path\r
282//\r
283typedef struct {\r
284 ACPI_HID_DEVICE_PATH PciRootBridge;\r
285 PCI_DEVICE_PATH PciDevice;\r
286 EFI_DEVICE_PATH_PROTOCOL End;\r
287} PLATFORM_PCI_DEVICE_PATH;\r
288\r
289typedef enum {\r
290 PMIC_Equal = 0, // = 0\r
291 PMIC_Greater_Than, // > 1\r
292 PMIC_Smaller_Than, // < 2\r
293 PMIC_Greater_Equal, // >= 3\r
294 PMIC_Smaller_Equal, // <= 4\r
295 PMIC_Any // don't care 5\r
296} PMIC_Condition_list;\r
297\r
298typedef enum {\r
299 PMIC_White_List = 0, //White list\r
300 PMIC_Black_List = 1 //Black list\r
301} PMIC_Compliance_mode;\r
302\r
303typedef struct {\r
304 UINT8 Cond_Choice; // PMIC_Condition_list\r
305 UINT8 Cond_Number; // the number\r
306}PMIC_Condition_Item;\r
307\r
308typedef struct {\r
309 PMIC_Condition_Item PMIC_BoardID;\r
310 PMIC_Condition_Item PMIC_FabID;\r
311 PMIC_Condition_Item Soc_Stepping;//define PMIC type, 1:Dialog , 2:Rohm\r
312 PMIC_Condition_Item PMIC_VendID;\r
313 PMIC_Condition_Item PMIC_RevID;\r
314 PMIC_Compliance_mode mode; //if 1, blacklist; if 0, white list.\r
315} PMIC_Compliance_Item;\r
316\r
317//\r
318// Platform BDS Functions\r
319//\r
320VOID\r
321PlatformBdsGetDriverOption (\r
322 IN LIST_ENTRY *BdsDriverLists\r
323 );\r
324\r
325VOID\r
326PlatformBdsPredictBootOption (\r
327 IN LIST_ENTRY *BdsBootOptionList\r
328 );\r
329\r
330EFI_STATUS\r
331PlatformBdsShowProgress (\r
332 EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleForeground,\r
333 EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleBackground,\r
334 CHAR16 *Title,\r
335 EFI_GRAPHICS_OUTPUT_BLT_PIXEL ProgressColor,\r
336 UINTN Progress,\r
337 UINTN PreviousValue\r
338 );\r
339\r
340VOID\r
341PlatformBdsConnectSequence (\r
342 VOID\r
343 );\r
344\r
345EFI_STATUS\r
346PlatformBdsConnectConsole (\r
347 IN BDS_CONSOLE_CONNECT_ENTRY *PlatformConsole\r
348 );\r
349\r
350EFI_STATUS\r
351PlatformBdsNoConsoleAction (\r
352 VOID\r
353 );\r
354\r
355VOID\r
356PlatformBdsEnterFrontPage (\r
357 IN UINT16 TimeoutDefault,\r
358 IN BOOLEAN ConnectAllHappened\r
359 );\r
360\r
361VOID\r
362EFIAPI\r
363PlatformBdsUserIdentify (\r
364 OUT EFI_USER_PROFILE_HANDLE *User,\r
365 OUT BOOLEAN *DeferredImage\r
366 );\r
367\r
368VOID\r
369EFIAPI\r
370PlatformBdsConnectAuthDevice (\r
371 VOID\r
372 );\r
373\r
374VOID\r
375PlatformBdsEnterFrontPageWithHotKey (\r
376 IN UINT16 TimeoutDefault,\r
377 IN BOOLEAN ConnectAllHappened\r
378 );\r
379\r
380 EFI_STATUS\r
381 ShowProgress (\r
382 IN UINT16 TimeoutDefault\r
383 );\r
384\r
385 EFI_STATUS\r
386 InitializeFrontPage (\r
387 IN BOOLEAN InitializeHiiData\r
388 );\r
389\r
390 VOID\r
391 UpdateFrontPageStrings (\r
392 VOID\r
393 );\r
394\r
395 EFI_STATUS\r
396 CallFrontPage (\r
397 VOID\r
398 );\r
399\r
400\r
401 VOID\r
402 CallBootManager (\r
403 VOID\r
404 );\r
405\r
406VOID\r
407CallDeviceManager (\r
408 VOID\r
409 );\r
410\r
411VOID\r
412BdsStartBootMaint (\r
413 VOID\r
414 );\r
415\r
416CHAR16 *\r
417GetStringById (\r
418 IN EFI_STRING_ID Id\r
419 );\r
420\r
421EFI_STATUS\r
422WaitForSingleEvent (\r
423 IN EFI_EVENT Event,\r
424 IN UINT64 Timeout OPTIONAL\r
425 );\r
426\r
427\r
428#define ONE_SECOND 10000000\r
429#define FRONT_PAGE_KEY_CONTINUE 0x1000\r
430#define FRONT_PAGE_KEY_LANGUAGE 0x1234\r
431#define FRONT_PAGE_KEY_BOOT_MANAGER 0x1064\r
432#define FRONT_PAGE_KEY_DEVICE_MANAGER 0x8567\r
433#define FRONT_PAGE_KEY_BOOT_MAINTAIN 0x9876\r
434\r
435#define PORT_A_DVO 0 // ; DVO A\r
436#define PORT_B_DVO 1 // ; DVO B\r
437#define PORT_C_DVO 2 // ; DVO C\r
438#define PORT_D_DVO 3 // ; DVO D\r
439#define PORT_LVDS 4 // ; Integrated LVDS port\r
440#define PORT_ANALOG_TV 5 // ; Integrated TV port\r
441#define PORT_CRT 6 // ; integrated Analog port\r
442#define PORT_B_DP 7 // ; DisplayPort B\r
443#define PORT_C_DP 8 // ; DisplayPort C\r
444#define PORT_D_DP 9 // ; DisplayPort D\r
445#define PORT_A_DP 10 // ; DisplayPort A (for eDP on ILK)\r
446#define PORT_B_HDMI 11 // ; HDMI B\r
447#define PORT_C_HDMI 12 // ; HDMI C\r
448#define PORT_D_HDMI 13 // ; HDMI D\r
449#define PORT_B_DVI 14 // ; DVI B\r
450#define PORT_C_DVI 15 // ; DVI C\r
451#define PORT_D_DVI 16 // ; DVI D\r
452#define PORT_MIPI_A 21 // ; MIPI\r
453#define PORT_MIPI_B 22\r
454#define PORT_MIPI_C 23\r
455\r
456\r
457extern BOOLEAN gConnectAllHappened;\r
458extern UINTN gCallbackKey;\r
459\r
460VOID\r
461BdsBootDeviceSelect (\r
462 VOID\r
463);\r
464VOID FastBoot(VOID);\r
465\r
466extern BOOLEAN mModeInitialized;\r
467\r
468//\r
469// Boot video resolution and text mode.\r
470//\r
471extern UINT32 mBootHorizontalResolution ;\r
472extern UINT32 mBootVerticalResolution ;\r
473extern UINT32 mBootTextModeColumn ;\r
474extern UINT32 mBootTextModeRow ;\r
475\r
476//\r
477// BIOS setup video resolution and text mode.\r
478//\r
479extern UINT32 mSetupTextModeColumn ;\r
480extern UINT32 mSetupTextModeRow ;\r
481extern UINT32 mSetupHorizontalResolution ;\r
482extern UINT32 mSetupVerticalResolution ;\r
483extern EFI_STATUS BdsSetConsoleMode (BOOLEAN);\r
484#endif // _BDS_PLATFORM_H\r