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