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