]> git.proxmox.com Git - mirror_edk2.git/blob - DuetPkg/Library/DuetBdsLib/BdsPlatform.h
Porting Duet module from EDKI to EDKII
[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/GraphicsLib.h>
42 #include <Library/HobLib.h>
43 #include <Library/UefiLib.h>
44 #include <Library/DxeServicesTableLib.h>
45 #include <Library/DevicePathLib.h>
46
47 #include <Protocol/PciIo.h>
48
49 #include <Guid/Bmp.h>
50 #include <Guid/Acpi.h>
51 #include <Guid/Smbios.h>
52 #include <Guid/Mps.h>
53 #include <Guid/HobList.h>
54 #include <Guid/PciExpressBaseAddress.h>
55 #include <Guid/GlobalVariable.h>
56
57 extern BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole[];
58 extern EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence[];
59 extern EFI_DEVICE_PATH_PROTOCOL *gPlatformDriverOption[];
60 extern EFI_DEVICE_PATH_PROTOCOL *gPlatformRootBridges[];
61 extern ACPI_HID_DEVICE_PATH gPnpPs2KeyboardDeviceNode;
62 extern ACPI_HID_DEVICE_PATH gPnp16550ComPortDeviceNode;
63 extern UART_DEVICE_PATH gUartDeviceNode;
64 extern VENDOR_DEVICE_PATH gTerminalTypeDeviceNode;
65 //
66 //
67 //
68 #define VarConsoleInpDev L"ConInDev"
69 #define VarConsoleInp L"ConIn"
70 #define VarConsoleOutDev L"ConOutDev"
71 #define VarConsoleOut L"ConOut"
72 #define VarErrorOutDev L"ErrOutDev"
73 #define VarErrorOut L"ErrOut"
74
75 #define PCI_DEVICE_PATH_NODE(Func, Dev) \
76 { \
77 HARDWARE_DEVICE_PATH, \
78 HW_PCI_DP, \
79 (UINT8) (sizeof (PCI_DEVICE_PATH)), \
80 (UINT8) ((sizeof (PCI_DEVICE_PATH)) >> 8), \
81 (Func), \
82 (Dev) \
83 }
84
85 #define PNPID_DEVICE_PATH_NODE(PnpId) \
86 { \
87 ACPI_DEVICE_PATH, \
88 ACPI_DP, \
89 (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \
90 (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8), \
91 EISA_PNP_ID((PnpId)), \
92 0 \
93 }
94
95 #define gPciRootBridge \
96 PNPID_DEVICE_PATH_NODE(0x0A03)
97
98 #define gPciIsaBridge \
99 PCI_DEVICE_PATH_NODE(0, 0x1f)
100
101 #define gP2PBridge \
102 PCI_DEVICE_PATH_NODE(0, 0x1e)
103
104 #define gPnpPs2Keyboard \
105 PNPID_DEVICE_PATH_NODE(0x0303)
106
107 #define gPnp16550ComPort \
108 PNPID_DEVICE_PATH_NODE(0x0501)
109
110 #define gUart \
111 { \
112 MESSAGING_DEVICE_PATH, \
113 MSG_UART_DP, \
114 (UINT8) (sizeof (UART_DEVICE_PATH)), \
115 (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8), \
116 0, \
117 115200, \
118 8, \
119 1, \
120 1 \
121 }
122
123 #define gPcAnsiTerminal \
124 { \
125 MESSAGING_DEVICE_PATH, \
126 MSG_VENDOR_DP, \
127 (UINT8) (sizeof (VENDOR_DEVICE_PATH)), \
128 (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8), \
129 DEVICE_PATH_MESSAGING_PC_ANSI \
130 }
131
132 #define gEndEntire \
133 { \
134 END_DEVICE_PATH_TYPE, \
135 END_ENTIRE_DEVICE_PATH_SUBTYPE, \
136 END_DEVICE_PATH_LENGTH, \
137 0 \
138 }
139
140 #define PCI_CLASS_SCC 0x07
141 #define PCI_SUBCLASS_SERIAL 0x00
142 #define PCI_IF_16550 0x02
143 #define IS_PCI_16550SERIAL(_p) IS_CLASS3 (_p, PCI_CLASS_SCC, PCI_SUBCLASS_SERIAL, PCI_IF_16550)
144
145 #define EFI_SYSTEM_TABLE_MAX_ADDRESS 0xFFFFFFFF
146 #define SYS_TABLE_PAD(ptr) (((~ptr) +1) & 0x07 )
147 //
148 // Platform Root Bridge
149 //
150 typedef struct {
151 ACPI_HID_DEVICE_PATH PciRootBridge;
152 EFI_DEVICE_PATH_PROTOCOL End;
153 } PLATFORM_ROOT_BRIDGE_DEVICE_PATH;
154
155 typedef struct {
156 ACPI_HID_DEVICE_PATH PciRootBridge;
157 PCI_DEVICE_PATH IsaBridge;
158 ACPI_HID_DEVICE_PATH Keyboard;
159 EFI_DEVICE_PATH_PROTOCOL End;
160 } PLATFORM_DUMMY_ISA_KEYBOARD_DEVICE_PATH;
161
162 typedef struct {
163 ACPI_HID_DEVICE_PATH PciRootBridge;
164 PCI_DEVICE_PATH IsaBridge;
165 ACPI_HID_DEVICE_PATH IsaSerial;
166 UART_DEVICE_PATH Uart;
167 VENDOR_DEVICE_PATH TerminalType;
168 EFI_DEVICE_PATH_PROTOCOL End;
169 } PLATFORM_DUMMY_ISA_SERIAL_DEVICE_PATH;
170
171 typedef struct {
172 ACPI_HID_DEVICE_PATH PciRootBridge;
173 PCI_DEVICE_PATH VgaDevice;
174 EFI_DEVICE_PATH_PROTOCOL End;
175 } PLATFORM_DUMMY_PCI_VGA_DEVICE_PATH;
176
177 typedef struct {
178 ACPI_HID_DEVICE_PATH PciRootBridge;
179 PCI_DEVICE_PATH PciBridge;
180 PCI_DEVICE_PATH SerialDevice;
181 UART_DEVICE_PATH Uart;
182 VENDOR_DEVICE_PATH TerminalType;
183 EFI_DEVICE_PATH_PROTOCOL End;
184 } PLATFORM_DUMMY_PCI_SERIAL_DEVICE_PATH;
185
186 //
187 // the short form device path for Usb keyboard
188 //
189 #define CLASS_HID 3
190 #define SUBCLASS_BOOT 1
191 #define PROTOCOL_KEYBOARD 1
192
193 typedef struct {
194 USB_CLASS_DEVICE_PATH UsbClass;
195 EFI_DEVICE_PATH_PROTOCOL End;
196 } USB_CLASS_FORMAT_DEVICE_PATH;
197
198 extern PLATFORM_ROOT_BRIDGE_DEVICE_PATH gPlatformRootBridge0;
199
200 //
201 // Platform BDS Functions
202 //
203 VOID
204 PlatformBdsInit (
205 IN EFI_BDS_ARCH_PROTOCOL_INSTANCE *PrivateData
206 )
207 ;
208
209 VOID
210 PlatformBdsPolicyBehavior (
211 IN EFI_BDS_ARCH_PROTOCOL_INSTANCE *PrivateData,
212 IN LIST_ENTRY *DriverOptionList,
213 IN LIST_ENTRY *BootOptionList
214 )
215 ;
216
217 VOID
218 PlatformBdsGetDriverOption (
219 IN LIST_ENTRY *BdsDriverLists
220 )
221 ;
222
223 EFI_STATUS
224 BdsMemoryTest (
225 EXTENDMEM_COVERAGE_LEVEL Level
226 )
227 ;
228
229 EFI_STATUS
230 PlatformBdsShowProgress (
231 EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleForeground,
232 EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleBackground,
233 CHAR16 *Title,
234 EFI_GRAPHICS_OUTPUT_BLT_PIXEL ProgressColor,
235 UINTN Progress,
236 UINTN PreviousValue
237 )
238 ;
239
240 VOID
241 PlatformBdsConnectSequence (
242 VOID
243 )
244 ;
245
246 VOID
247 PlatformBdsBootFail (
248 IN BDS_COMMON_OPTION *Option,
249 IN EFI_STATUS Status,
250 IN CHAR16 *ExitData,
251 IN UINTN ExitDataSize
252 )
253 ;
254
255 VOID
256 PlatformBdsBootSuccess (
257 IN BDS_COMMON_OPTION *Option
258 )
259 ;
260
261 EFI_STATUS
262 ProcessCapsules (
263 EFI_BOOT_MODE BootMode
264 )
265 ;
266
267 EFI_STATUS
268 PlatformBdsConnectConsole (
269 IN BDS_CONSOLE_CONNECT_ENTRY *PlatformConsole
270 )
271 ;
272
273 EFI_STATUS
274 PlatformBdsNoConsoleAction (
275 VOID
276 )
277 ;
278
279 EFI_STATUS
280 ConvertMpsTable (
281 IN OUT VOID **Table
282 )
283 ;
284
285 EFI_STATUS
286 ConvertSmbiosTable (
287 IN OUT VOID **Table
288 )
289 ;
290
291 EFI_STATUS
292 ConvertAcpiTable (
293 IN UINTN TableLen,
294 IN OUT VOID **Table
295 )
296 ;
297
298 EFI_STATUS
299 ConvertSystemTable (
300 IN EFI_GUID *TableGuid,
301 IN OUT VOID **Table
302 )
303 ;
304
305 VOID
306 PlatformBdsEnterFrontPage (
307 IN UINT16 TimeoutDefault,
308 IN BOOLEAN ConnectAllHappened
309 )
310 ;
311
312 #endif // _PLATFORM_SPECIFIC_BDS_PLATFORM_H_