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