]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.h
Retired gSimpleTextInExNotifyGuid, used local structure address to be notify handle.
[mirror_edk2.git] / MdeModulePkg / Universal / Console / ConSplitterDxe / ConSplitter.h
CommitLineData
a4d608d1 1/** @file\r
95276127 2 Private data structures for the Console Splitter driver\r
3\r
a4d608d1 4Copyright (c) 2006 - 2008 Intel Corporation. <BR>\r
95276127 5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef _CON_SPLITTER_H_\r
16#define _CON_SPLITTER_H_\r
17\r
60c93673 18#include <Uefi.h>\r
fc753d3b 19\r
20#include <Protocol/DevicePath.h>\r
21#include <Protocol/ComponentName.h>\r
22#include <Protocol/DriverBinding.h>\r
23#include <Protocol/ConsoleControl.h>\r
97a079ed 24#include <Protocol/SimplePointer.h>\r
8ae0b360 25#include <Protocol/AbsolutePointer.h>\r
97a079ed 26#include <Protocol/SimpleTextOut.h>\r
97a079ed 27#include <Protocol/SimpleTextIn.h>\r
66aa04e4 28#include <Protocol/SimpleTextInEx.h>\r
fc753d3b 29#include <Protocol/GraphicsOutput.h>\r
30#include <Protocol/UgaDraw.h>\r
31\r
32#include <Guid/PrimaryStandardErrorDevice.h>\r
33#include <Guid/PrimaryConsoleOutDevice.h>\r
34#include <Guid/PrimaryConsoleInDevice.h>\r
fc753d3b 35#include <Guid/ConsoleInDevice.h>\r
97a079ed
A
36#include <Guid/StandardErrorDevice.h>\r
37#include <Guid/ConsoleOutDevice.h>\r
fc753d3b 38\r
d0c64728 39#include <Library/PcdLib.h>\r
97a079ed
A
40#include <Library/DebugLib.h>\r
41#include <Library/UefiDriverEntryPoint.h>\r
42#include <Library/UefiLib.h>\r
43#include <Library/BaseLib.h>\r
44#include <Library/BaseMemoryLib.h>\r
45#include <Library/MemoryAllocationLib.h>\r
46#include <Library/UefiBootServicesTableLib.h>\r
189eac21 47#include <Library/UefiRuntimeServicesTableLib.h>\r
48\r
97a079ed 49\r
95276127 50//\r
97a079ed 51// Driver Binding Externs\r
95276127 52//\r
5bca971e 53extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConInDriverBinding;\r
54extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConInComponentName;\r
55extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2;\r
56extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding;\r
57extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName;\r
58extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;\r
b71f6b3c 59extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterAbsolutePointerDriverBinding;\r
8ae0b360 60extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName;\r
61extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2;\r
5bca971e 62extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding;\r
63extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConOutComponentName;\r
64extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2;\r
65extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterStdErrDriverBinding;\r
66extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterStdErrComponentName;\r
67extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2;\r
97a079ed 68\r
66aa04e4 69\r
fc753d3b 70//\r
97a079ed
A
71// These definitions were in the old Hii protocol, but are not in the new UEFI\r
72// version. So they are defined locally.\r
fc753d3b 73//\r
97a079ed 74#define UNICODE_NARROW_CHAR 0xFFF0\r
d0c64728 75#define UNICODE_WIDE_CHAR 0xFFF1\r
97a079ed 76\r
95276127 77\r
78//\r
79// Private Data Structures\r
80//\r
81#define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT 32\r
82#define CONSOLE_SPLITTER_MODES_ALLOC_UNIT 32\r
83#define MAX_STD_IN_PASSWORD 80\r
84\r
189eac21 85\r
86typedef struct {\r
87 UINTN Column;\r
88 UINTN Row;\r
89} CONSOLE_OUT_MODE;\r
90\r
95276127 91typedef struct {\r
2da292f6 92 UINTN Columns;\r
93 UINTN Rows;\r
95276127 94} TEXT_OUT_SPLITTER_QUERY_DATA;\r
95\r
95276127 96\r
fc753d3b 97#define TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'n')\r
66aa04e4 98\r
fc753d3b 99//\r
100// Private data for Text In Ex Splitter Notify\r
101//\r
66aa04e4 102typedef struct _TEXT_IN_EX_SPLITTER_NOTIFY {\r
103 UINTN Signature;\r
104 EFI_HANDLE *NotifyHandleList;\r
105 EFI_HANDLE NotifyHandle;\r
106 EFI_KEY_DATA KeyData;\r
107 EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;\r
108 LIST_ENTRY NotifyEntry;\r
109} TEXT_IN_EX_SPLITTER_NOTIFY;\r
8ae0b360 110\r
fc753d3b 111#define TEXT_IN_EX_SPLITTER_NOTIFY_FROM_THIS(a) \\r
112 CR ((a), \\r
113 TEXT_IN_EX_SPLITTER_NOTIFY, \\r
114 NotifyEntry, \\r
115 TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE \\r
116 )\r
117\r
118#define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'i', 'S', 'p')\r
119\r
120//\r
121// Private data for the Console In splitter\r
122//\r
95276127 123typedef struct {\r
db9d722d 124 UINT64 Signature;\r
125 EFI_HANDLE VirtualHandle;\r
126\r
127 EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn;\r
128 UINTN CurrentNumberOfConsoles;\r
129 EFI_SIMPLE_TEXT_INPUT_PROTOCOL **TextInList;\r
130 UINTN TextInListCount;\r
131\r
132 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL TextInEx;\r
133 UINTN CurrentNumberOfExConsoles;\r
134 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL **TextInExList;\r
135 UINTN TextInExListCount;\r
aec072ad 136 LIST_ENTRY NotifyList;\r
db9d722d 137\r
138\r
139 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;\r
140 EFI_SIMPLE_POINTER_MODE SimplePointerMode;\r
141 UINTN CurrentNumberOfPointers;\r
142 EFI_SIMPLE_POINTER_PROTOCOL **PointerList;\r
143 UINTN PointerListCount;\r
144\r
145 EFI_ABSOLUTE_POINTER_PROTOCOL AbsolutePointer;\r
146 EFI_ABSOLUTE_POINTER_MODE AbsolutePointerMode;\r
147 UINTN CurrentNumberOfAbsolutePointers;\r
148 EFI_ABSOLUTE_POINTER_PROTOCOL **AbsolutePointerList;\r
149 UINTN AbsolutePointerListCount;\r
aec072ad 150 BOOLEAN AbsoluteInputEventSignalState;\r
db9d722d 151\r
152 BOOLEAN PasswordEnabled;\r
153 CHAR16 Password[MAX_STD_IN_PASSWORD];\r
154 UINTN PwdIndex;\r
155 CHAR16 PwdAttempt[MAX_STD_IN_PASSWORD];\r
156 EFI_EVENT LockEvent;\r
157\r
158 BOOLEAN KeyEventSignalState;\r
159 BOOLEAN InputEventSignalState;\r
95276127 160} TEXT_IN_SPLITTER_PRIVATE_DATA;\r
161\r
162#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
fc753d3b 163 CR ((a), \\r
95276127 164 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
165 TextIn, \\r
166 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
167 )\r
168\r
169#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \\r
fc753d3b 170 CR ((a), \\r
95276127 171 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
172 SimplePointer, \\r
173 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
174 )\r
66aa04e4 175#define TEXT_IN_EX_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
fc753d3b 176 CR (a, \\r
177 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
178 TextInEx, \\r
179 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
66aa04e4 180 )\r
181\r
182#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_ABSOLUTE_POINTER_THIS(a) \\r
fc753d3b 183 CR (a, \\r
184 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
185 AbsolutePointer, \\r
186 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
66aa04e4 187 )\r
95276127 188\r
fc753d3b 189\r
f3f2e05d 190#define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'o', 'S', 'p')\r
95276127 191\r
192typedef struct {\r
193 EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
194 EFI_UGA_DRAW_PROTOCOL *UgaDraw;\r
195 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;\r
196 BOOLEAN TextOutEnabled;\r
197} TEXT_OUT_AND_GOP_DATA;\r
198\r
fc753d3b 199//\r
200// Private data for the Console Out splitter\r
201//\r
95276127 202typedef struct {\r
4b5c4fba 203 UINT64 Signature;\r
204 EFI_HANDLE VirtualHandle;\r
205 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL TextOut;\r
206 EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode;\r
ed055f1b 207\r
4b5c4fba 208 EFI_UGA_DRAW_PROTOCOL UgaDraw;\r
209 UINT32 UgaHorizontalResolution;\r
210 UINT32 UgaVerticalResolution;\r
211 UINT32 UgaColorDepth;\r
212 UINT32 UgaRefreshRate;\r
213 EFI_UGA_PIXEL *UgaBlt;\r
ed055f1b 214\r
4b5c4fba 215 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
216 EFI_GRAPHICS_OUTPUT_BLT_PIXEL *GraphicsOutputBlt;\r
aec072ad 217 EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *GraphicsOutputModeBuffer;\r
4b5c4fba 218 UINTN CurrentNumberOfGraphicsOutput;\r
219 UINTN CurrentNumberOfUgaDraw;\r
220 BOOLEAN HardwareNeedsStarting;\r
ed055f1b 221\r
4b5c4fba 222 EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl;\r
ed055f1b 223\r
4b5c4fba 224 UINTN CurrentNumberOfConsoles;\r
225 TEXT_OUT_AND_GOP_DATA *TextOutList;\r
226 UINTN TextOutListCount;\r
227 TEXT_OUT_SPLITTER_QUERY_DATA *TextOutQueryData;\r
228 UINTN TextOutQueryDataCount;\r
229 INT32 *TextOutModeMap;\r
ed055f1b 230\r
4b5c4fba 231 EFI_CONSOLE_CONTROL_SCREEN_MODE ConsoleOutputMode;\r
ed055f1b 232\r
4b5c4fba 233 UINTN DevNullColumns;\r
234 UINTN DevNullRows;\r
235 CHAR16 *DevNullScreen;\r
236 INT32 *DevNullAttributes;\r
95276127 237\r
238} TEXT_OUT_SPLITTER_PRIVATE_DATA;\r
239\r
240#define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
fc753d3b 241 CR ((a), \\r
95276127 242 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
243 TextOut, \\r
244 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
245 )\r
246\r
247#define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
fc753d3b 248 CR ((a), \\r
95276127 249 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
250 GraphicsOutput, \\r
251 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
252 )\r
253\r
254#define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
fc753d3b 255 CR ((a), \\r
95276127 256 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
257 UgaDraw, \\r
258 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
259 )\r
260\r
261#define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
fc753d3b 262 CR ((a), \\r
95276127 263 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
264 ConsoleControl, \\r
265 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
266 )\r
267\r
268//\r
269// Function Prototypes\r
270//\r
415df2a3 271\r
272/**\r
273 The user Entry Point for module ConSplitter. The user code starts with this function.\r
274\r
275 Installs driver module protocols and. Creates virtual device handles for ConIn,\r
276 ConOut, and StdErr. Installs Simple Text In protocol, Simple Text In Ex protocol,\r
ed055f1b 277 Simple Pointer protocol, Absolute Pointer protocol on those virtual handlers.\r
415df2a3 278 Installs Graphics Output protocol and/or UGA Draw protocol if needed.\r
279\r
280 @param[in] ImageHandle The firmware allocated handle for the EFI image.\r
281 @param[in] SystemTable A pointer to the EFI System Table.\r
282\r
283 @retval EFI_SUCCESS The entry point is executed successfully.\r
284 @retval other Some error occurs when executing this entry point.\r
285\r
286**/\r
95276127 287EFI_STATUS\r
288EFIAPI\r
289ConSplitterDriverEntry (\r
290 IN EFI_HANDLE ImageHandle,\r
291 IN EFI_SYSTEM_TABLE *SystemTable\r
ed66e1bc 292 );\r
95276127 293\r
a4d608d1 294/**\r
4b5c4fba 295 Construct console input devices' private data.\r
a4d608d1 296\r
297 @param ConInPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA\r
298 structure.\r
299\r
300 @retval EFI_OUT_OF_RESOURCES Out of resources.\r
fc753d3b 301 @retval EFI_SUCCESS Text Input Devcie's private data has been constructed.\r
4b5c4fba 302 @retval other Failed to construct private data.\r
a4d608d1 303\r
304**/\r
95276127 305EFI_STATUS\r
306ConSplitterTextInConstructor (\r
fc753d3b 307 TEXT_IN_SPLITTER_PRIVATE_DATA *ConInPrivate\r
ed66e1bc 308 );\r
95276127 309\r
415df2a3 310/**\r
311 Construct console output devices' private data.\r
312\r
fc753d3b 313 @param ConOutPrivate A pointer to the TEXT_OUT_SPLITTER_PRIVATE_DATA\r
415df2a3 314 structure.\r
315\r
316 @retval EFI_OUT_OF_RESOURCES Out of resources.\r
4b5c4fba 317 @retval EFI_SUCCESS Text Input Devcie's private data has been constructed.\r
415df2a3 318\r
319**/\r
95276127 320EFI_STATUS\r
321ConSplitterTextOutConstructor (\r
fc753d3b 322 TEXT_OUT_SPLITTER_PRIVATE_DATA *ConOutPrivate\r
ed66e1bc 323 );\r
95276127 324\r
a4d608d1 325\r
326/**\r
ed055f1b 327 Test to see if Console In Device could be supported on the Controller.\r
a4d608d1 328\r
fc753d3b 329 @param This Driver Binding protocol instance pointer.\r
4b5c4fba 330 @param ControllerHandle Handle of device to test.\r
331 @param RemainingDevicePath Optional parameter use to pick a specific child\r
332 device to start.\r
a4d608d1 333\r
4b5c4fba 334 @retval EFI_SUCCESS This driver supports this device.\r
335 @retval other This driver does not support this device.\r
a4d608d1 336\r
337**/\r
95276127 338EFI_STATUS\r
339EFIAPI\r
340ConSplitterConInDriverBindingSupported (\r
341 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
342 IN EFI_HANDLE ControllerHandle,\r
343 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 344 );\r
95276127 345\r
a4d608d1 346/**\r
ed055f1b 347 Test to see if Simple Pointer protocol could be supported on the Controller.\r
a4d608d1 348\r
fc753d3b 349 @param This Driver Binding protocol instance pointer.\r
4b5c4fba 350 @param ControllerHandle Handle of device to test.\r
351 @param RemainingDevicePath Optional parameter use to pick a specific child\r
352 device to start.\r
a4d608d1 353\r
4b5c4fba 354 @retval EFI_SUCCESS This driver supports this device.\r
355 @retval other This driver does not support this device.\r
a4d608d1 356\r
357**/\r
95276127 358EFI_STATUS\r
359EFIAPI\r
360ConSplitterSimplePointerDriverBindingSupported (\r
361 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
362 IN EFI_HANDLE ControllerHandle,\r
363 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 364 );\r
95276127 365\r
a4d608d1 366/**\r
ed055f1b 367 Test to see if Console Out Device could be supported on the Controller.\r
a4d608d1 368\r
fc753d3b 369 @param This Driver Binding protocol instance pointer.\r
4b5c4fba 370 @param ControllerHandle Handle of device to test.\r
371 @param RemainingDevicePath Optional parameter use to pick a specific child\r
372 device to start.\r
a4d608d1 373\r
4b5c4fba 374 @retval EFI_SUCCESS This driver supports this device.\r
375 @retval other This driver does not support this device.\r
a4d608d1 376\r
377**/\r
95276127 378EFI_STATUS\r
379EFIAPI\r
380ConSplitterConOutDriverBindingSupported (\r
381 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
382 IN EFI_HANDLE ControllerHandle,\r
383 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 384 );\r
95276127 385\r
a4d608d1 386/**\r
ed055f1b 387 Test to see if Standard Error Device could be supported on the Controller.\r
a4d608d1 388\r
fc753d3b 389 @param This Driver Binding protocol instance pointer.\r
4b5c4fba 390 @param ControllerHandle Handle of device to test.\r
391 @param RemainingDevicePath Optional parameter use to pick a specific child\r
392 device to start.\r
a4d608d1 393\r
4b5c4fba 394 @retval EFI_SUCCESS This driver supports this device.\r
395 @retval other This driver does not support this device.\r
a4d608d1 396\r
397**/\r
95276127 398EFI_STATUS\r
399EFIAPI\r
400ConSplitterStdErrDriverBindingSupported (\r
401 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
402 IN EFI_HANDLE ControllerHandle,\r
403 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 404 );\r
95276127 405\r
415df2a3 406/**\r
ed055f1b 407 Start Console In Consplitter on device handle.\r
408\r
fc753d3b 409 @param This Driver Binding protocol instance pointer.\r
415df2a3 410 @param ControllerHandle Handle of device to bind driver to.\r
411 @param RemainingDevicePath Optional parameter use to pick a specific child\r
412 device to start.\r
413\r
414 @retval EFI_SUCCESS Console In Consplitter is added to ControllerHandle.\r
415 @retval other Console In Consplitter does not support this device.\r
416\r
417**/\r
95276127 418EFI_STATUS\r
419EFIAPI\r
420ConSplitterConInDriverBindingStart (\r
421 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
422 IN EFI_HANDLE ControllerHandle,\r
423 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 424 );\r
95276127 425\r
415df2a3 426/**\r
ed055f1b 427 Start Simple Pointer Consplitter on device handle.\r
428\r
fc753d3b 429 @param This Driver Binding protocol instance pointer.\r
415df2a3 430 @param ControllerHandle Handle of device to bind driver to.\r
431 @param RemainingDevicePath Optional parameter use to pick a specific child\r
432 device to start.\r
433\r
434 @retval EFI_SUCCESS Simple Pointer Consplitter is added to ControllerHandle.\r
435 @retval other Simple Pointer Consplitter does not support this device.\r
436\r
437**/\r
95276127 438EFI_STATUS\r
439EFIAPI\r
440ConSplitterSimplePointerDriverBindingStart (\r
441 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
442 IN EFI_HANDLE ControllerHandle,\r
443 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 444 );\r
95276127 445\r
415df2a3 446/**\r
ed055f1b 447 Start Console Out Consplitter on device handle.\r
448\r
fc753d3b 449 @param This Driver Binding protocol instance pointer.\r
415df2a3 450 @param ControllerHandle Handle of device to bind driver to.\r
451 @param RemainingDevicePath Optional parameter use to pick a specific child\r
452 device to start.\r
453\r
454 @retval EFI_SUCCESS Console Out Consplitter is added to ControllerHandle.\r
455 @retval other Console Out Consplitter does not support this device.\r
456\r
457**/\r
95276127 458EFI_STATUS\r
459EFIAPI\r
460ConSplitterConOutDriverBindingStart (\r
461 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
462 IN EFI_HANDLE ControllerHandle,\r
463 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 464 );\r
95276127 465\r
415df2a3 466/**\r
ed055f1b 467 Start Standard Error Consplitter on device handle.\r
468\r
fc753d3b 469 @param This Driver Binding protocol instance pointer.\r
415df2a3 470 @param ControllerHandle Handle of device to bind driver to.\r
471 @param RemainingDevicePath Optional parameter use to pick a specific child\r
472 device to start.\r
473\r
474 @retval EFI_SUCCESS Standard Error Consplitter is added to ControllerHandle.\r
475 @retval other Standard Error Consplitter does not support this device.\r
476\r
477**/\r
95276127 478EFI_STATUS\r
479EFIAPI\r
480ConSplitterStdErrDriverBindingStart (\r
481 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
482 IN EFI_HANDLE ControllerHandle,\r
483 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 484 );\r
95276127 485\r
415df2a3 486/**\r
487 Stop Console In ConSplitter on ControllerHandle by closing Console In Devcice GUID.\r
488\r
fc753d3b 489 @param This Driver Binding protocol instance pointer.\r
415df2a3 490 @param ControllerHandle Handle of device to stop driver on\r
491 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
492 children is zero stop the entire bus driver.\r
493 @param ChildHandleBuffer List of Child Handles to Stop.\r
494\r
495 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
496 @retval other This driver was not removed from this device\r
497\r
498**/\r
95276127 499EFI_STATUS\r
500EFIAPI\r
501ConSplitterConInDriverBindingStop (\r
502 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
503 IN EFI_HANDLE ControllerHandle,\r
504 IN UINTN NumberOfChildren,\r
505 IN EFI_HANDLE *ChildHandleBuffer\r
ed66e1bc 506 );\r
95276127 507\r
415df2a3 508/**\r
509 Stop Simple Pointer protocol ConSplitter on ControllerHandle by closing\r
510 Simple Pointer protocol.\r
511\r
fc753d3b 512 @param This Driver Binding protocol instance pointer.\r
415df2a3 513 @param ControllerHandle Handle of device to stop driver on\r
514 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
515 children is zero stop the entire bus driver.\r
516 @param ChildHandleBuffer List of Child Handles to Stop.\r
517\r
518 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
519 @retval other This driver was not removed from this device\r
520\r
521**/\r
95276127 522EFI_STATUS\r
523EFIAPI\r
524ConSplitterSimplePointerDriverBindingStop (\r
525 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
526 IN EFI_HANDLE ControllerHandle,\r
527 IN UINTN NumberOfChildren,\r
528 IN EFI_HANDLE *ChildHandleBuffer\r
ed66e1bc 529 );\r
95276127 530\r
415df2a3 531/**\r
fc753d3b 532 Stop Console Out ConSplitter on device handle by closing Console Out Devcice GUID.\r
415df2a3 533\r
fc753d3b 534 @param This Driver Binding protocol instance pointer.\r
415df2a3 535 @param ControllerHandle Handle of device to stop driver on\r
536 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
537 children is zero stop the entire bus driver.\r
538 @param ChildHandleBuffer List of Child Handles to Stop.\r
539\r
540 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
541 @retval other This driver was not removed from this device\r
542\r
543**/\r
95276127 544EFI_STATUS\r
545EFIAPI\r
546ConSplitterConOutDriverBindingStop (\r
547 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
548 IN EFI_HANDLE ControllerHandle,\r
549 IN UINTN NumberOfChildren,\r
550 IN EFI_HANDLE *ChildHandleBuffer\r
ed66e1bc 551 );\r
95276127 552\r
415df2a3 553/**\r
554 Stop Standard Error ConSplitter on ControllerHandle by closing Standard Error GUID.\r
555\r
fc753d3b 556 @param This Driver Binding protocol instance pointer.\r
415df2a3 557 @param ControllerHandle Handle of device to stop driver on\r
558 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
559 children is zero stop the entire bus driver.\r
560 @param ChildHandleBuffer List of Child Handles to Stop.\r
561\r
562 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
563 @retval other This driver was not removed from this device\r
564\r
565**/\r
95276127 566EFI_STATUS\r
567EFIAPI\r
568ConSplitterStdErrDriverBindingStop (\r
569 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
570 IN EFI_HANDLE ControllerHandle,\r
571 IN UINTN NumberOfChildren,\r
572 IN EFI_HANDLE *ChildHandleBuffer\r
ed66e1bc 573 );\r
95276127 574\r
8ae0b360 575\r
415df2a3 576/**\r
ed055f1b 577 Test to see if Absolute Pointer protocol could be supported on the Controller.\r
415df2a3 578\r
fc753d3b 579 @param This Driver Binding protocol instance pointer.\r
415df2a3 580 @param ControllerHandle Handle of device to test.\r
581 @param RemainingDevicePath Optional parameter use to pick a specific child\r
582 device to start.\r
583\r
4b5c4fba 584 @retval EFI_SUCCESS This driver supports this device.\r
585 @retval other This driver does not support this device.\r
415df2a3 586\r
587**/\r
8ae0b360 588EFI_STATUS\r
589EFIAPI\r
590ConSplitterAbsolutePointerDriverBindingSupported (\r
591 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
592 IN EFI_HANDLE ControllerHandle,\r
593 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 594 );\r
8ae0b360 595\r
415df2a3 596/**\r
ed055f1b 597 Start Absolute Pointer Consplitter on device handle.\r
598\r
fc753d3b 599 @param This Driver Binding protocol instance pointer.\r
415df2a3 600 @param ControllerHandle Handle of device to bind driver to.\r
601 @param RemainingDevicePath Optional parameter use to pick a specific child\r
602 device to start.\r
603\r
604 @retval EFI_SUCCESS Absolute Pointer Consplitter is added to ControllerHandle.\r
605 @retval other Absolute Pointer Consplitter does not support this device.\r
606\r
607**/\r
8ae0b360 608EFI_STATUS\r
609EFIAPI\r
610ConSplitterAbsolutePointerDriverBindingStart (\r
611 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
612 IN EFI_HANDLE ControllerHandle,\r
613 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
ed66e1bc 614 );\r
8ae0b360 615\r
415df2a3 616/**\r
617 Stop Absolute Pointer protocol ConSplitter on ControllerHandle by closing\r
618 Absolute Pointer protocol.\r
619\r
fc753d3b 620 @param This Driver Binding protocol instance pointer.\r
415df2a3 621 @param ControllerHandle Handle of device to stop driver on\r
622 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
623 children is zero stop the entire bus driver.\r
624 @param ChildHandleBuffer List of Child Handles to Stop.\r
625\r
626 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
627 @retval other This driver was not removed from this device\r
628\r
629**/\r
8ae0b360 630EFI_STATUS\r
631EFIAPI\r
632ConSplitterAbsolutePointerDriverBindingStop (\r
633 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
634 IN EFI_HANDLE ControllerHandle,\r
635 IN UINTN NumberOfChildren,\r
636 IN EFI_HANDLE *ChildHandleBuffer\r
ed66e1bc 637 );\r
8ae0b360 638\r
415df2a3 639/**\r
640 Add Absolute Pointer Device in Consplitter Absolute Pointer list.\r
641\r
642 @param Private Text In Splitter pointer.\r
643 @param AbsolutePointer Absolute Pointer protocol pointer.\r
644\r
645 @retval EFI_SUCCESS Absolute Pointer Device added successfully.\r
646 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
647\r
648**/\r
8ae0b360 649EFI_STATUS\r
650ConSplitterAbsolutePointerAddDevice (\r
651 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
652 IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer\r
ed66e1bc 653 );\r
8ae0b360 654\r
415df2a3 655/**\r
fc753d3b 656 Remove Absolute Pointer Device from Consplitter Absolute Pointer list.\r
415df2a3 657\r
658 @param Private Text In Splitter pointer.\r
659 @param AbsolutePointer Absolute Pointer protocol pointer.\r
660\r
661 @retval EFI_SUCCESS Absolute Pointer Device removed successfully.\r
662 @retval EFI_NOT_FOUND No Absolute Pointer Device found.\r
663\r
664**/\r
8ae0b360 665EFI_STATUS\r
666ConSplitterAbsolutePointerDeleteDevice (\r
667 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
668 IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer\r
ed66e1bc 669 );\r
8ae0b360 670\r
671//\r
672// Absolute Pointer protocol interfaces\r
673//\r
674\r
a4d608d1 675\r
676/**\r
677 Resets the pointer device hardware.\r
678\r
679 @param This Protocol instance pointer.\r
680 @param ExtendedVerification Driver may perform diagnostics on reset.\r
681\r
682 @retval EFI_SUCCESS The device was reset.\r
683 @retval EFI_DEVICE_ERROR The device is not functioning correctly and\r
684 could not be reset.\r
685\r
686**/\r
8ae0b360 687EFI_STATUS\r
688EFIAPI\r
689ConSplitterAbsolutePointerReset (\r
690 IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,\r
691 IN BOOLEAN ExtendedVerification\r
ed66e1bc 692 );\r
8ae0b360 693\r
8ae0b360 694\r
a4d608d1 695/**\r
696 Retrieves the current state of a pointer device.\r
8ae0b360 697\r
a4d608d1 698 @param This Protocol instance pointer.\r
699 @param State A pointer to the state information on the\r
700 pointer device.\r
aec072ad 701\r
a4d608d1 702 @retval EFI_SUCCESS The state of the pointer device was returned in\r
703 State..\r
704 @retval EFI_NOT_READY The state of the pointer device has not changed\r
705 since the last call to GetState().\r
706 @retval EFI_DEVICE_ERROR A device error occurred while attempting to\r
707 retrieve the pointer device's current state.\r
8ae0b360 708\r
a4d608d1 709**/\r
8ae0b360 710EFI_STATUS\r
aec072ad 711EFIAPI\r
8ae0b360 712ConSplitterAbsolutePointerGetState (\r
713 IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,\r
714 IN OUT EFI_ABSOLUTE_POINTER_STATE *State\r
ed66e1bc 715 );\r
8ae0b360 716\r
415df2a3 717/**\r
718 This event agregates all the events of the pointer devices in the splitter.\r
719 If the ConIn is password locked then return.\r
720 If any events of physical pointer devices are signaled, signal the pointer\r
721 splitter event. This will cause the calling code to call\r
722 ConSplitterAbsolutePointerGetState ().\r
723\r
724 @param Event The Event assoicated with callback.\r
725 @param Context Context registered when Event was created.\r
726\r
415df2a3 727**/\r
8ae0b360 728VOID\r
729EFIAPI\r
730ConSplitterAbsolutePointerWaitForInput (\r
731 IN EFI_EVENT Event,\r
732 IN VOID *Context\r
ed66e1bc 733 );\r
8ae0b360 734\r
5bca971e 735/**\r
736 Retrieves a Unicode string that is the user readable name of the driver.\r
737\r
738 This function retrieves the user readable name of a driver in the form of a\r
739 Unicode string. If the driver specified by This has a user readable name in\r
740 the language specified by Language, then a pointer to the driver name is\r
741 returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
742 by This does not support the language specified by Language,\r
743 then EFI_UNSUPPORTED is returned.\r
744\r
745 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
746 EFI_COMPONENT_NAME_PROTOCOL instance.\r
747\r
748 @param Language[in] A pointer to a Null-terminated ASCII string\r
749 array indicating the language. This is the\r
750 language of the driver name that the caller is\r
751 requesting, and it must match one of the\r
752 languages specified in SupportedLanguages. The\r
753 number of languages supported by a driver is up\r
754 to the driver writer. Language is specified\r
755 in RFC 3066 or ISO 639-2 language code format.\r
756\r
757 @param DriverName[out] A pointer to the Unicode string to return.\r
758 This Unicode string is the name of the\r
759 driver specified by This in the language\r
760 specified by Language.\r
761\r
762 @retval EFI_SUCCESS The Unicode string for the Driver specified by\r
763 This and the language specified by Language was\r
764 returned in DriverName.\r
765\r
766 @retval EFI_INVALID_PARAMETER Language is NULL.\r
767\r
768 @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
769\r
770 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
771 the language specified by Language.\r
772\r
773**/\r
95276127 774EFI_STATUS\r
775EFIAPI\r
776ConSplitterComponentNameGetDriverName (\r
777 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
778 IN CHAR8 *Language,\r
779 OUT CHAR16 **DriverName\r
780 );\r
781\r
5bca971e 782\r
783/**\r
784 Retrieves a Unicode string that is the user readable name of the controller\r
785 that is being managed by a driver.\r
786\r
787 This function retrieves the user readable name of the controller specified by\r
788 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
789 driver specified by This has a user readable name in the language specified by\r
790 Language, then a pointer to the controller name is returned in ControllerName,\r
791 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
792 managing the controller specified by ControllerHandle and ChildHandle,\r
793 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
794 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
795\r
796 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
797 EFI_COMPONENT_NAME_PROTOCOL instance.\r
798\r
799 @param ControllerHandle[in] The handle of a controller that the driver\r
800 specified by This is managing. This handle\r
801 specifies the controller whose name is to be\r
802 returned.\r
803\r
804 @param ChildHandle[in] The handle of the child controller to retrieve\r
805 the name of. This is an optional parameter that\r
806 may be NULL. It will be NULL for device\r
807 drivers. It will also be NULL for a bus drivers\r
808 that wish to retrieve the name of the bus\r
809 controller. It will not be NULL for a bus\r
810 driver that wishes to retrieve the name of a\r
811 child controller.\r
812\r
813 @param Language[in] A pointer to a Null-terminated ASCII string\r
814 array indicating the language. This is the\r
815 language of the driver name that the caller is\r
816 requesting, and it must match one of the\r
817 languages specified in SupportedLanguages. The\r
818 number of languages supported by a driver is up\r
819 to the driver writer. Language is specified in\r
820 RFC 3066 or ISO 639-2 language code format.\r
821\r
822 @param ControllerName[out] A pointer to the Unicode string to return.\r
823 This Unicode string is the name of the\r
824 controller specified by ControllerHandle and\r
825 ChildHandle in the language specified by\r
826 Language from the point of view of the driver\r
827 specified by This.\r
828\r
829 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
830 the language specified by Language for the\r
831 driver specified by This was returned in\r
832 DriverName.\r
833\r
834 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
835\r
836 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
837 EFI_HANDLE.\r
838\r
839 @retval EFI_INVALID_PARAMETER Language is NULL.\r
840\r
841 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
842\r
843 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
844 managing the controller specified by\r
845 ControllerHandle and ChildHandle.\r
846\r
847 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
848 the language specified by Language.\r
849\r
850**/\r
95276127 851EFI_STATUS\r
852EFIAPI\r
853ConSplitterConInComponentNameGetControllerName (\r
854 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
855 IN EFI_HANDLE ControllerHandle,\r
856 IN EFI_HANDLE ChildHandle OPTIONAL,\r
857 IN CHAR8 *Language,\r
858 OUT CHAR16 **ControllerName\r
859 );\r
860\r
5bca971e 861\r
862/**\r
863 Retrieves a Unicode string that is the user readable name of the controller\r
864 that is being managed by a driver.\r
865\r
866 This function retrieves the user readable name of the controller specified by\r
867 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
868 driver specified by This has a user readable name in the language specified by\r
869 Language, then a pointer to the controller name is returned in ControllerName,\r
870 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
871 managing the controller specified by ControllerHandle and ChildHandle,\r
872 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
873 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
874\r
875 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
876 EFI_COMPONENT_NAME_PROTOCOL instance.\r
877\r
878 @param ControllerHandle[in] The handle of a controller that the driver\r
879 specified by This is managing. This handle\r
880 specifies the controller whose name is to be\r
881 returned.\r
882\r
883 @param ChildHandle[in] The handle of the child controller to retrieve\r
884 the name of. This is an optional parameter that\r
885 may be NULL. It will be NULL for device\r
886 drivers. It will also be NULL for a bus drivers\r
887 that wish to retrieve the name of the bus\r
888 controller. It will not be NULL for a bus\r
889 driver that wishes to retrieve the name of a\r
890 child controller.\r
891\r
892 @param Language[in] A pointer to a Null-terminated ASCII string\r
893 array indicating the language. This is the\r
894 language of the driver name that the caller is\r
895 requesting, and it must match one of the\r
896 languages specified in SupportedLanguages. The\r
897 number of languages supported by a driver is up\r
898 to the driver writer. Language is specified in\r
899 RFC 3066 or ISO 639-2 language code format.\r
900\r
901 @param ControllerName[out] A pointer to the Unicode string to return.\r
902 This Unicode string is the name of the\r
903 controller specified by ControllerHandle and\r
904 ChildHandle in the language specified by\r
905 Language from the point of view of the driver\r
906 specified by This.\r
907\r
908 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
909 the language specified by Language for the\r
910 driver specified by This was returned in\r
911 DriverName.\r
912\r
913 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
914\r
915 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
916 EFI_HANDLE.\r
917\r
918 @retval EFI_INVALID_PARAMETER Language is NULL.\r
919\r
920 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
921\r
922 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
923 managing the controller specified by\r
924 ControllerHandle and ChildHandle.\r
925\r
926 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
927 the language specified by Language.\r
928\r
929**/\r
95276127 930EFI_STATUS\r
931EFIAPI\r
932ConSplitterSimplePointerComponentNameGetControllerName (\r
933 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
934 IN EFI_HANDLE ControllerHandle,\r
935 IN EFI_HANDLE ChildHandle OPTIONAL,\r
936 IN CHAR8 *Language,\r
937 OUT CHAR16 **ControllerName\r
938 );\r
939\r
415df2a3 940/**\r
941 Retrieves a Unicode string that is the user readable name of the controller\r
942 that is being managed by an EFI Driver.\r
943\r
944 @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL\r
945 instance.\r
946 @param ControllerHandle The handle of a controller that the driver\r
947 specified by This is managing. This handle\r
948 specifies the controller whose name is to be\r
949 returned.\r
950 @param ChildHandle The handle of the child controller to retrieve the\r
951 name of. This is an optional parameter that may\r
952 be NULL. It will be NULL for device drivers. It\r
953 will also be NULL for a bus drivers that wish to\r
954 retrieve the name of the bus controller. It will\r
955 not be NULL for a bus driver that wishes to\r
956 retrieve the name of a child controller.\r
957 @param Language A pointer to RFC3066 language identifier. This is\r
958 the language of the controller name that that the\r
959 caller is requesting, and it must match one of the\r
960 languages specified in SupportedLanguages. The\r
961 number of languages supported by a driver is up to\r
962 the driver writer.\r
963 @param ControllerName A pointer to the Unicode string to return. This\r
964 Unicode string is the name of the controller\r
965 specified by ControllerHandle and ChildHandle in\r
966 the language specified by Language from the point\r
967 of view of the driver specified by This.\r
968\r
969 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
970 the language specified by Language for the driver\r
971 specified by This was returned in DriverName.\r
972 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
973 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
974 EFI_HANDLE.\r
975 @retval EFI_INVALID_PARAMETER Language is NULL.\r
976 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
977 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
978 managing the controller specified by\r
979 ControllerHandle and ChildHandle.\r
980 @retval EFI_UNSUPPORTED The driver specified by This does not support the\r
981 language specified by Language.\r
982\r
983**/\r
8ae0b360 984EFI_STATUS\r
985EFIAPI\r
986ConSplitterAbsolutePointerComponentNameGetControllerName (\r
987 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
988 IN EFI_HANDLE ControllerHandle,\r
989 IN EFI_HANDLE ChildHandle OPTIONAL,\r
990 IN CHAR8 *Language,\r
991 OUT CHAR16 **ControllerName\r
ed66e1bc 992 );\r
5bca971e 993\r
994/**\r
995 Retrieves a Unicode string that is the user readable name of the controller\r
996 that is being managed by a driver.\r
997\r
998 This function retrieves the user readable name of the controller specified by\r
999 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
1000 driver specified by This has a user readable name in the language specified by\r
1001 Language, then a pointer to the controller name is returned in ControllerName,\r
1002 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
1003 managing the controller specified by ControllerHandle and ChildHandle,\r
1004 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
1005 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
1006\r
1007 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
1008 EFI_COMPONENT_NAME_PROTOCOL instance.\r
1009\r
1010 @param ControllerHandle[in] The handle of a controller that the driver\r
1011 specified by This is managing. This handle\r
1012 specifies the controller whose name is to be\r
1013 returned.\r
1014\r
1015 @param ChildHandle[in] The handle of the child controller to retrieve\r
1016 the name of. This is an optional parameter that\r
1017 may be NULL. It will be NULL for device\r
1018 drivers. It will also be NULL for a bus drivers\r
1019 that wish to retrieve the name of the bus\r
1020 controller. It will not be NULL for a bus\r
1021 driver that wishes to retrieve the name of a\r
1022 child controller.\r
1023\r
1024 @param Language[in] A pointer to a Null-terminated ASCII string\r
1025 array indicating the language. This is the\r
1026 language of the driver name that the caller is\r
1027 requesting, and it must match one of the\r
1028 languages specified in SupportedLanguages. The\r
1029 number of languages supported by a driver is up\r
1030 to the driver writer. Language is specified in\r
1031 RFC 3066 or ISO 639-2 language code format.\r
1032\r
1033 @param ControllerName[out] A pointer to the Unicode string to return.\r
1034 This Unicode string is the name of the\r
1035 controller specified by ControllerHandle and\r
1036 ChildHandle in the language specified by\r
1037 Language from the point of view of the driver\r
1038 specified by This.\r
1039\r
1040 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
1041 the language specified by Language for the\r
1042 driver specified by This was returned in\r
1043 DriverName.\r
1044\r
1045 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
1046\r
1047 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
1048 EFI_HANDLE.\r
1049\r
1050 @retval EFI_INVALID_PARAMETER Language is NULL.\r
1051\r
1052 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
1053\r
1054 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
1055 managing the controller specified by\r
1056 ControllerHandle and ChildHandle.\r
1057\r
1058 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
1059 the language specified by Language.\r
1060\r
1061**/\r
95276127 1062EFI_STATUS\r
1063EFIAPI\r
1064ConSplitterConOutComponentNameGetControllerName (\r
1065 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
1066 IN EFI_HANDLE ControllerHandle,\r
1067 IN EFI_HANDLE ChildHandle OPTIONAL,\r
1068 IN CHAR8 *Language,\r
1069 OUT CHAR16 **ControllerName\r
1070 );\r
1071\r
5bca971e 1072\r
1073/**\r
1074 Retrieves a Unicode string that is the user readable name of the controller\r
1075 that is being managed by a driver.\r
1076\r
1077 This function retrieves the user readable name of the controller specified by\r
1078 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
1079 driver specified by This has a user readable name in the language specified by\r
1080 Language, then a pointer to the controller name is returned in ControllerName,\r
1081 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
1082 managing the controller specified by ControllerHandle and ChildHandle,\r
1083 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
1084 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
1085\r
1086 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
1087 EFI_COMPONENT_NAME_PROTOCOL instance.\r
1088\r
1089 @param ControllerHandle[in] The handle of a controller that the driver\r
1090 specified by This is managing. This handle\r
1091 specifies the controller whose name is to be\r
1092 returned.\r
1093\r
1094 @param ChildHandle[in] The handle of the child controller to retrieve\r
1095 the name of. This is an optional parameter that\r
1096 may be NULL. It will be NULL for device\r
1097 drivers. It will also be NULL for a bus drivers\r
1098 that wish to retrieve the name of the bus\r
1099 controller. It will not be NULL for a bus\r
1100 driver that wishes to retrieve the name of a\r
1101 child controller.\r
1102\r
1103 @param Language[in] A pointer to a Null-terminated ASCII string\r
1104 array indicating the language. This is the\r
1105 language of the driver name that the caller is\r
1106 requesting, and it must match one of the\r
1107 languages specified in SupportedLanguages. The\r
1108 number of languages supported by a driver is up\r
1109 to the driver writer. Language is specified in\r
1110 RFC 3066 or ISO 639-2 language code format.\r
1111\r
1112 @param ControllerName[out] A pointer to the Unicode string to return.\r
1113 This Unicode string is the name of the\r
1114 controller specified by ControllerHandle and\r
1115 ChildHandle in the language specified by\r
1116 Language from the point of view of the driver\r
1117 specified by This.\r
1118\r
1119 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
1120 the language specified by Language for the\r
1121 driver specified by This was returned in\r
1122 DriverName.\r
1123\r
1124 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
1125\r
1126 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
1127 EFI_HANDLE.\r
1128\r
1129 @retval EFI_INVALID_PARAMETER Language is NULL.\r
1130\r
1131 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
1132\r
1133 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
1134 managing the controller specified by\r
1135 ControllerHandle and ChildHandle.\r
1136\r
1137 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
1138 the language specified by Language.\r
1139\r
1140**/\r
95276127 1141EFI_STATUS\r
1142EFIAPI\r
1143ConSplitterStdErrComponentNameGetControllerName (\r
1144 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
1145 IN EFI_HANDLE ControllerHandle,\r
1146 IN EFI_HANDLE ChildHandle OPTIONAL,\r
1147 IN CHAR8 *Language,\r
1148 OUT CHAR16 **ControllerName\r
1149 );\r
1150\r
5bca971e 1151\r
95276127 1152//\r
1153// TextIn Constructor/Destructor functions\r
1154//\r
415df2a3 1155\r
1156/**\r
1157 Add Text Input Device in Consplitter Text Input list.\r
1158\r
1159 @param Private Text In Splitter pointer.\r
1160 @param TextIn Simple Text Input protocol pointer.\r
1161\r
1162 @retval EFI_SUCCESS Text Input Device added successfully.\r
1163 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1164\r
1165**/\r
95276127 1166EFI_STATUS\r
1167ConSplitterTextInAddDevice (\r
fc753d3b 1168 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1169 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn\r
ed66e1bc 1170 );\r
95276127 1171\r
415df2a3 1172/**\r
fc753d3b 1173 Remove Text Input Device from Consplitter Text Input list.\r
415df2a3 1174\r
1175 @param Private Text In Splitter pointer.\r
1176 @param TextIn Simple Text protocol pointer.\r
1177\r
1178 @retval EFI_SUCCESS Simple Text Device removed successfully.\r
1179 @retval EFI_NOT_FOUND No Simple Text Device found.\r
1180\r
1181**/\r
95276127 1182EFI_STATUS\r
1183ConSplitterTextInDeleteDevice (\r
fc753d3b 1184 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1185 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn\r
ed66e1bc 1186 );\r
95276127 1187\r
1188//\r
1189// SimplePointer Constuctor/Destructor functions\r
1190//\r
415df2a3 1191\r
1192/**\r
1193 Add Simple Pointer Device in Consplitter Simple Pointer list.\r
1194\r
1195 @param Private Text In Splitter pointer.\r
1196 @param SimplePointer Simple Pointer protocol pointer.\r
1197\r
1198 @retval EFI_SUCCESS Simple Pointer Device added successfully.\r
1199 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1200\r
1201**/\r
95276127 1202EFI_STATUS\r
1203ConSplitterSimplePointerAddDevice (\r
1204 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1205 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer\r
ed66e1bc 1206 );\r
95276127 1207\r
415df2a3 1208/**\r
fc753d3b 1209 Remove Simple Pointer Device from Consplitter Simple Pointer list.\r
415df2a3 1210\r
1211 @param Private Text In Splitter pointer.\r
1212 @param SimplePointer Simple Pointer protocol pointer.\r
1213\r
1214 @retval EFI_SUCCESS Simple Pointer Device removed successfully.\r
1215 @retval EFI_NOT_FOUND No Simple Pointer Device found.\r
1216\r
1217**/\r
95276127 1218EFI_STATUS\r
1219ConSplitterSimplePointerDeleteDevice (\r
1220 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1221 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer\r
ed66e1bc 1222 );\r
95276127 1223\r
1224//\r
1225// TextOut Constuctor/Destructor functions\r
1226//\r
415df2a3 1227\r
1228/**\r
1229 Add Text Output Device in Consplitter Text Output list.\r
1230\r
1231 @param Private Text Out Splitter pointer.\r
1232 @param TextOut Simple Text Output protocol pointer.\r
1233 @param GraphicsOutput Graphics Output protocol pointer.\r
1234 @param UgaDraw UGA Draw protocol pointer.\r
1235\r
1236 @retval EFI_SUCCESS Text Output Device added successfully.\r
1237 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1238\r
1239**/\r
95276127 1240EFI_STATUS\r
1241ConSplitterTextOutAddDevice (\r
1242 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1243 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut,\r
1244 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
1245 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
ed66e1bc 1246 );\r
95276127 1247\r
415df2a3 1248/**\r
1249 Remove Text Out Device in Consplitter Text Out list.\r
1250\r
1251 @param Private Text Out Splitter pointer.\r
1252 @param TextOut Simple Text Output Pointer protocol pointer.\r
1253\r
1254 @retval EFI_SUCCESS Text Out Device removed successfully.\r
1255 @retval EFI_NOT_FOUND No Text Out Device found.\r
1256\r
1257**/\r
95276127 1258EFI_STATUS\r
1259ConSplitterTextOutDeleteDevice (\r
1260 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1261 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut\r
ed66e1bc 1262 );\r
95276127 1263\r
1264//\r
1265// TextIn I/O Functions\r
1266//\r
415df2a3 1267\r
1268/**\r
1269 Reset the input device and optionaly run diagnostics\r
1270\r
1271 @param This Protocol instance pointer.\r
1272 @param ExtendedVerification Driver may perform diagnostics on reset.\r
1273\r
1274 @retval EFI_SUCCESS The device was reset.\r
1275 @retval EFI_DEVICE_ERROR The device is not functioning properly and could\r
1276 not be reset.\r
1277\r
1278**/\r
95276127 1279EFI_STATUS\r
1280EFIAPI\r
1281ConSplitterTextInReset (\r
fc753d3b 1282 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
1283 IN BOOLEAN ExtendedVerification\r
ed66e1bc 1284 );\r
95276127 1285\r
415df2a3 1286/**\r
1287 Reads the next keystroke from the input device. The WaitForKey Event can\r
1288 be used to test for existance of a keystroke via WaitForEvent () call.\r
1289 If the ConIn is password locked make it look like no keystroke is availible\r
1290\r
1291 @param This Protocol instance pointer.\r
1292 @param Key Driver may perform diagnostics on reset.\r
1293\r
1294 @retval EFI_SUCCESS The keystroke information was returned.\r
1295 @retval EFI_NOT_READY There was no keystroke data availiable.\r
1296 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due\r
1297 to hardware errors.\r
1298\r
1299**/\r
95276127 1300EFI_STATUS\r
1301EFIAPI\r
1302ConSplitterTextInReadKeyStroke (\r
fc753d3b 1303 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
1304 OUT EFI_INPUT_KEY *Key\r
ed66e1bc 1305 );\r
415df2a3 1306\r
1307/**\r
1308 Add Text Input Ex Device in Consplitter Text Input Ex list.\r
1309\r
1310 @param Private Text In Splitter pointer.\r
fc753d3b 1311 @param TextInEx Simple Text Input Ex Input protocol pointer.\r
415df2a3 1312\r
1313 @retval EFI_SUCCESS Text Input Ex Device added successfully.\r
1314 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1315\r
1316**/\r
66aa04e4 1317EFI_STATUS\r
1318ConSplitterTextInExAddDevice (\r
1319 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1320 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx\r
ed66e1bc 1321 );\r
66aa04e4 1322\r
415df2a3 1323/**\r
fc753d3b 1324 Remove Text Ex Device from Consplitter Text Input Ex list.\r
415df2a3 1325\r
1326 @param Private Text In Splitter pointer.\r
1327 @param TextInEx Simple Text Ex protocol pointer.\r
1328\r
fc753d3b 1329 @retval EFI_SUCCESS Simple Text Input Ex Device removed successfully.\r
1330 @retval EFI_NOT_FOUND No Simple Text Input Ex Device found.\r
415df2a3 1331\r
1332**/\r
66aa04e4 1333EFI_STATUS\r
1334ConSplitterTextInExDeleteDevice (\r
1335 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1336 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx\r
ed66e1bc 1337 );\r
66aa04e4 1338\r
1339//\r
1340// Simple Text Input Ex protocol function prototypes\r
1341//\r
1342\r
a4d608d1 1343/**\r
1344 Reset the input device and optionaly run diagnostics\r
1345\r
1346 @param This Protocol instance pointer.\r
1347 @param ExtendedVerification Driver may perform diagnostics on reset.\r
1348\r
1349 @retval EFI_SUCCESS The device was reset.\r
1350 @retval EFI_DEVICE_ERROR The device is not functioning properly and could\r
1351 not be reset.\r
1352\r
1353**/\r
66aa04e4 1354EFI_STATUS\r
1355EFIAPI\r
1356ConSplitterTextInResetEx (\r
1357 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1358 IN BOOLEAN ExtendedVerification\r
ed66e1bc 1359 );\r
66aa04e4 1360\r
66aa04e4 1361\r
a4d608d1 1362/**\r
1363 Reads the next keystroke from the input device. The WaitForKey Event can\r
1364 be used to test for existance of a keystroke via WaitForEvent () call.\r
66aa04e4 1365\r
a4d608d1 1366 @param This Protocol instance pointer.\r
1367 @param KeyData A pointer to a buffer that is filled in with the\r
1368 keystroke state data for the key that was\r
1369 pressed.\r
66aa04e4 1370\r
a4d608d1 1371 @retval EFI_SUCCESS The keystroke information was returned.\r
1372 @retval EFI_NOT_READY There was no keystroke data availiable.\r
1373 @retval EFI_DEVICE_ERROR The keystroke information was not returned due\r
1374 to hardware errors.\r
1375 @retval EFI_INVALID_PARAMETER KeyData is NULL.\r
66aa04e4 1376\r
a4d608d1 1377**/\r
66aa04e4 1378EFI_STATUS\r
1379EFIAPI\r
1380ConSplitterTextInReadKeyStrokeEx (\r
1381 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1382 OUT EFI_KEY_DATA *KeyData\r
ed66e1bc 1383 );\r
66aa04e4 1384\r
66aa04e4 1385\r
a4d608d1 1386/**\r
1387 Set certain state for the input device.\r
66aa04e4 1388\r
a4d608d1 1389 @param This Protocol instance pointer.\r
1390 @param KeyToggleState A pointer to the EFI_KEY_TOGGLE_STATE to set the\r
1391 state for the input device.\r
66aa04e4 1392\r
a4d608d1 1393 @retval EFI_SUCCESS The device state was set successfully.\r
1394 @retval EFI_DEVICE_ERROR The device is not functioning correctly and\r
1395 could not have the setting adjusted.\r
1396 @retval EFI_UNSUPPORTED The device does not have the ability to set its\r
1397 state.\r
1398 @retval EFI_INVALID_PARAMETER KeyToggleState is NULL.\r
66aa04e4 1399\r
a4d608d1 1400**/\r
66aa04e4 1401EFI_STATUS\r
1402EFIAPI\r
1403ConSplitterTextInSetState (\r
1404 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1405 IN EFI_KEY_TOGGLE_STATE *KeyToggleState\r
ed66e1bc 1406 );\r
aec072ad 1407\r
66aa04e4 1408\r
a4d608d1 1409/**\r
1410 Register a notification function for a particular keystroke for the input device.\r
1411\r
1412 @param This Protocol instance pointer.\r
1413 @param KeyData A pointer to a buffer that is filled in with the\r
1414 keystroke information data for the key that was\r
1415 pressed.\r
1416 @param KeyNotificationFunction Points to the function to be called when the key\r
1417 sequence is typed specified by KeyData.\r
1418 @param NotifyHandle Points to the unique handle assigned to the\r
1419 registered notification.\r
1420\r
1421 @retval EFI_SUCCESS The notification function was registered\r
1422 successfully.\r
1423 @retval EFI_OUT_OF_RESOURCES Unable to allocate resources for necesssary data\r
1424 structures.\r
f890b1e0 1425 @retval EFI_INVALID_PARAMETER KeyData or KeyNotificationFunction or NotifyHandle is NULL.\r
95276127 1426\r
a4d608d1 1427**/\r
66aa04e4 1428EFI_STATUS\r
1429EFIAPI\r
1430ConSplitterTextInRegisterKeyNotify (\r
1431 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1432 IN EFI_KEY_DATA *KeyData,\r
1433 IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction,\r
1434 OUT EFI_HANDLE *NotifyHandle\r
ed66e1bc 1435 );\r
66aa04e4 1436\r
66aa04e4 1437\r
a4d608d1 1438/**\r
1439 Remove a registered notification function from a particular keystroke.\r
66aa04e4 1440\r
a4d608d1 1441 @param This Protocol instance pointer.\r
1442 @param NotificationHandle The handle of the notification function being\r
1443 unregistered.\r
aec072ad 1444\r
a4d608d1 1445 @retval EFI_SUCCESS The notification function was unregistered\r
1446 successfully.\r
1447 @retval EFI_INVALID_PARAMETER The NotificationHandle is invalid.\r
1448 @retval EFI_NOT_FOUND Can not find the matching entry in database.\r
66aa04e4 1449\r
a4d608d1 1450**/\r
66aa04e4 1451EFI_STATUS\r
1452EFIAPI\r
1453ConSplitterTextInUnregisterKeyNotify (\r
1454 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1455 IN EFI_HANDLE NotificationHandle\r
ed66e1bc 1456 );\r
415df2a3 1457\r
1458/**\r
f890b1e0 1459 This event aggregates all the events of the ConIn devices in the spliter.\r
1460\r
415df2a3 1461 If the ConIn is password locked then return.\r
1462 If any events of physical ConIn devices are signaled, signal the ConIn\r
1463 spliter event. This will cause the calling code to call\r
1464 ConSplitterTextInReadKeyStroke ().\r
1465\r
1466 @param Event The Event assoicated with callback.\r
1467 @param Context Context registered when Event was created.\r
1468\r
415df2a3 1469**/\r
95276127 1470VOID\r
1471EFIAPI\r
1472ConSplitterTextInWaitForKey (\r
1473 IN EFI_EVENT Event,\r
1474 IN VOID *Context\r
ed66e1bc 1475 );\r
ed055f1b 1476\r
415df2a3 1477/**\r
1478 Return TRUE if StdIn is locked. The ConIn device on the virtual handle is\r
1479 the only device locked.\r
1480\r
415df2a3 1481 @retval TRUE StdIn locked\r
1482 @retval FALSE StdIn working normally\r
95276127 1483\r
415df2a3 1484**/\r
95276127 1485BOOLEAN\r
1486ConSpliterConssoleControlStdInLocked (\r
1487 VOID\r
ed66e1bc 1488 );\r
ed055f1b 1489\r
415df2a3 1490/**\r
f890b1e0 1491 Record and check key sequence on StdIn.\r
1492\r
1493 This timer event will fire when StdIn is locked. It will record the key sequence\r
1494 on StdIn and also check to see if it matches the password. Any error in the\r
1495 password will cause the check to reset. As long as a mConIn.PasswordEnabled is\r
1496 TRUE, the StdIn splitter will not report any input.\r
415df2a3 1497\r
1498 @param Event The Event this notify function registered to.\r
1499 @param Context Pointer to the context data registerd to the\r
1500 Event.\r
415df2a3 1501**/\r
95276127 1502VOID\r
1503EFIAPI\r
1504ConSpliterConsoleControlLockStdInEvent (\r
1505 IN EFI_EVENT Event,\r
1506 IN VOID *Context\r
ed66e1bc 1507 );\r
95276127 1508\r
415df2a3 1509/**\r
1510 If Password is NULL unlock the password state variable and set the event\r
1511 timer. If the Password is too big return an error. If the Password is valid\r
1512 Copy the Password and enable state variable and then arm the periodic timer\r
1513\r
33019a71 1514 @param This Console Control protocol pointer.\r
1515 @param Password The password input.\r
415df2a3 1516\r
1517 @retval EFI_SUCCESS Lock the StdIn device\r
1518 @retval EFI_INVALID_PARAMETER Password is NULL\r
1519 @retval EFI_OUT_OF_RESOURCES Buffer allocation to store the password fails\r
1520\r
1521**/\r
95276127 1522EFI_STATUS\r
1523EFIAPI\r
1524ConSpliterConsoleControlLockStdIn (\r
1525 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
1526 IN CHAR16 *Password\r
ed66e1bc 1527 );\r
95276127 1528\r
415df2a3 1529/**\r
1530 Reads the next keystroke from the input device. The WaitForKey Event can\r
1531 be used to test for existance of a keystroke via WaitForEvent () call.\r
1532\r
33019a71 1533 @param Private Protocol instance pointer.\r
415df2a3 1534 @param Key Driver may perform diagnostics on reset.\r
1535\r
1536 @retval EFI_SUCCESS The keystroke information was returned.\r
1537 @retval EFI_NOT_READY There was no keystroke data availiable.\r
1538 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due\r
1539 to hardware errors.\r
1540\r
1541**/\r
95276127 1542EFI_STATUS\r
1543EFIAPI\r
1544ConSplitterTextInPrivateReadKeyStroke (\r
1545 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1546 OUT EFI_INPUT_KEY *Key\r
ed66e1bc 1547 );\r
95276127 1548\r
415df2a3 1549/**\r
1550 Reset the input device and optionaly run diagnostics\r
1551\r
1552 @param This Protocol instance pointer.\r
1553 @param ExtendedVerification Driver may perform diagnostics on reset.\r
1554\r
1555 @retval EFI_SUCCESS The device was reset.\r
1556 @retval EFI_DEVICE_ERROR The device is not functioning properly and could\r
1557 not be reset.\r
1558\r
1559**/\r
95276127 1560EFI_STATUS\r
1561EFIAPI\r
1562ConSplitterSimplePointerReset (\r
1563 IN EFI_SIMPLE_POINTER_PROTOCOL *This,\r
1564 IN BOOLEAN ExtendedVerification\r
ed66e1bc 1565 );\r
95276127 1566\r
415df2a3 1567/**\r
1568 Reads the next keystroke from the input device. The WaitForKey Event can\r
1569 be used to test for existance of a keystroke via WaitForEvent () call.\r
1570 If the ConIn is password locked make it look like no keystroke is availible\r
1571\r
1572 @param This A pointer to protocol instance.\r
1573 @param State A pointer to state information on the pointer device\r
1574\r
1575 @retval EFI_SUCCESS The keystroke information was returned in State.\r
1576 @retval EFI_NOT_READY There was no keystroke data availiable.\r
1577 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due\r
1578 to hardware errors.\r
1579\r
1580**/\r
95276127 1581EFI_STATUS\r
1582EFIAPI\r
1583ConSplitterSimplePointerGetState (\r
1584 IN EFI_SIMPLE_POINTER_PROTOCOL *This,\r
1585 IN OUT EFI_SIMPLE_POINTER_STATE *State\r
ed66e1bc 1586 );\r
95276127 1587\r
a4d608d1 1588/**\r
1589 This event agregates all the events of the ConIn devices in the spliter.\r
1590 If the ConIn is password locked then return.\r
1591 If any events of physical ConIn devices are signaled, signal the ConIn\r
1592 spliter event. This will cause the calling code to call\r
1593 ConSplitterTextInReadKeyStroke ().\r
1594\r
1595 @param Event The Event assoicated with callback.\r
1596 @param Context Context registered when Event was created.\r
1597\r
a4d608d1 1598**/\r
95276127 1599VOID\r
1600EFIAPI\r
1601ConSplitterSimplePointerWaitForInput (\r
1602 IN EFI_EVENT Event,\r
1603 IN VOID *Context\r
ed66e1bc 1604 );\r
95276127 1605\r
1606//\r
1607// TextOut I/O Functions\r
1608//\r
95276127 1609\r
415df2a3 1610/**\r
1611 Reset the text output device hardware and optionaly run diagnostics\r
1612\r
1613 @param This Protocol instance pointer.\r
1614 @param ExtendedVerification Driver may perform more exhaustive verfication\r
1615 operation of the device during reset.\r
1616\r
1617 @retval EFI_SUCCESS The text output device was reset.\r
1618 @retval EFI_DEVICE_ERROR The text output device is not functioning\r
1619 correctly and could not be reset.\r
1620\r
1621**/\r
95276127 1622EFI_STATUS\r
1623EFIAPI\r
1624ConSplitterTextOutReset (\r
1625 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1626 IN BOOLEAN ExtendedVerification\r
ed66e1bc 1627 );\r
95276127 1628\r
415df2a3 1629/**\r
1630 Write a Unicode string to the output device.\r
1631\r
1632 @param This Protocol instance pointer.\r
33019a71 1633 @param WString The NULL-terminated Unicode string to be\r
415df2a3 1634 displayed on the output device(s). All output\r
1635 devices must also support the Unicode drawing\r
1636 defined in this file.\r
1637\r
1638 @retval EFI_SUCCESS The string was output to the device.\r
1639 @retval EFI_DEVICE_ERROR The device reported an error while attempting to\r
1640 output the text.\r
1641 @retval EFI_UNSUPPORTED The output device's mode is not currently in a\r
1642 defined text mode.\r
1643 @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the\r
1644 characters in the Unicode string could not be\r
1645 rendered and were skipped.\r
1646\r
1647**/\r
95276127 1648EFI_STATUS\r
1649EFIAPI\r
1650ConSplitterTextOutOutputString (\r
1651 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1652 IN CHAR16 *WString\r
ed66e1bc 1653 );\r
95276127 1654\r
415df2a3 1655/**\r
1656 Verifies that all characters in a Unicode string can be output to the\r
1657 target device.\r
1658\r
1659 @param This Protocol instance pointer.\r
33019a71 1660 @param WString The NULL-terminated Unicode string to be\r
415df2a3 1661 examined for the output device(s).\r
1662\r
1663 @retval EFI_SUCCESS The device(s) are capable of rendering the\r
1664 output string.\r
1665 @retval EFI_UNSUPPORTED Some of the characters in the Unicode string\r
1666 cannot be rendered by one or more of the output\r
1667 devices mapped by the EFI handle.\r
1668\r
1669**/\r
95276127 1670EFI_STATUS\r
1671EFIAPI\r
1672ConSplitterTextOutTestString (\r
1673 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1674 IN CHAR16 *WString\r
ed66e1bc 1675 );\r
95276127 1676\r
415df2a3 1677/**\r
1678 Returns information for an available text mode that the output device(s)\r
1679 supports.\r
1680\r
1681 @param This Protocol instance pointer.\r
1682 @param ModeNumber The mode number to return information on.\r
33019a71 1683 @param Columns Returns the columns of the text output device\r
1684 for the requested ModeNumber.\r
1685 @param Rows Returns the rows of the text output device\r
415df2a3 1686 for the requested ModeNumber.\r
1687\r
1688 @retval EFI_SUCCESS The requested mode information was returned.\r
1689 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1690 the request.\r
1691 @retval EFI_UNSUPPORTED The mode number was not valid.\r
1692\r
1693**/\r
95276127 1694EFI_STATUS\r
1695EFIAPI\r
1696ConSplitterTextOutQueryMode (\r
1697 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1698 IN UINTN ModeNumber,\r
1699 OUT UINTN *Columns,\r
1700 OUT UINTN *Rows\r
ed66e1bc 1701 );\r
95276127 1702\r
415df2a3 1703/**\r
1704 Sets the output device(s) to a specified mode.\r
1705\r
1706 @param This Protocol instance pointer.\r
1707 @param ModeNumber The mode number to set.\r
1708\r
1709 @retval EFI_SUCCESS The requested text mode was set.\r
1710 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1711 the request.\r
1712 @retval EFI_UNSUPPORTED The mode number was not valid.\r
1713\r
1714**/\r
95276127 1715EFI_STATUS\r
1716EFIAPI\r
1717ConSplitterTextOutSetMode (\r
1718 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1719 IN UINTN ModeNumber\r
ed66e1bc 1720 );\r
95276127 1721\r
415df2a3 1722/**\r
1723 Sets the background and foreground colors for the OutputString () and\r
1724 ClearScreen () functions.\r
1725\r
1726 @param This Protocol instance pointer.\r
1727 @param Attribute The attribute to set. Bits 0..3 are the\r
1728 foreground color, and bits 4..6 are the\r
1729 background color. All other bits are undefined\r
1730 and must be zero. The valid Attributes are\r
1731 defined in this file.\r
1732\r
1733 @retval EFI_SUCCESS The attribute was set.\r
1734 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1735 the request.\r
1736 @retval EFI_UNSUPPORTED The attribute requested is not defined.\r
1737\r
1738**/\r
95276127 1739EFI_STATUS\r
1740EFIAPI\r
1741ConSplitterTextOutSetAttribute (\r
1742 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1743 IN UINTN Attribute\r
ed66e1bc 1744 );\r
95276127 1745\r
415df2a3 1746/**\r
1747 Clears the output device(s) display to the currently selected background\r
1748 color.\r
1749\r
1750 @param This Protocol instance pointer.\r
1751\r
1752 @retval EFI_SUCCESS The operation completed successfully.\r
1753 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1754 the request.\r
1755 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.\r
1756\r
1757**/\r
95276127 1758EFI_STATUS\r
1759EFIAPI\r
1760ConSplitterTextOutClearScreen (\r
1761 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This\r
ed66e1bc 1762 );\r
95276127 1763\r
415df2a3 1764/**\r
1765 Sets the current coordinates of the cursor position\r
1766\r
1767 @param This Protocol instance pointer.\r
33019a71 1768 @param Column The column position to set the cursor to. Must be\r
415df2a3 1769 greater than or equal to zero and less than the\r
33019a71 1770 number of columns by QueryMode ().\r
1771 @param Row The row position to set the cursor to. Must be\r
1772 greater than or equal to zero and less than the\r
1773 number of rows by QueryMode ().\r
415df2a3 1774\r
1775 @retval EFI_SUCCESS The operation completed successfully.\r
1776 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1777 the request.\r
1778 @retval EFI_UNSUPPORTED The output device is not in a valid text mode,\r
1779 or the cursor position is invalid for the\r
1780 current mode.\r
1781\r
1782**/\r
95276127 1783EFI_STATUS\r
1784EFIAPI\r
1785ConSplitterTextOutSetCursorPosition (\r
1786 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1787 IN UINTN Column,\r
1788 IN UINTN Row\r
ed66e1bc 1789 );\r
95276127 1790\r
415df2a3 1791\r
1792/**\r
1793 Makes the cursor visible or invisible\r
1794\r
1795 @param This Protocol instance pointer.\r
1796 @param Visible If TRUE, the cursor is set to be visible. If\r
1797 FALSE, the cursor is set to be invisible.\r
1798\r
1799 @retval EFI_SUCCESS The operation completed successfully.\r
1800 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1801 the request, or the device does not support\r
1802 changing the cursor mode.\r
1803 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.\r
1804\r
1805**/\r
95276127 1806EFI_STATUS\r
1807EFIAPI\r
1808ConSplitterTextOutEnableCursor (\r
1809 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1810 IN BOOLEAN Visible\r
ed66e1bc 1811 );\r
95276127 1812\r
415df2a3 1813/**\r
1814 Take the passed in Buffer of size SizeOfCount and grow the buffer\r
1815 by MAX (CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT, MaxGrow) * SizeOfCount\r
1816 bytes. Copy the current data in Buffer to the new version of Buffer\r
1817 and free the old version of buffer.\r
1818\r
fc753d3b 1819 @param SizeOfCount Size of element in array.\r
1820 @param Count Current number of elements in array.\r
415df2a3 1821 @param Buffer Bigger version of passed in Buffer with all the\r
fc753d3b 1822 data.\r
415df2a3 1823\r
fc753d3b 1824 @retval EFI_SUCCESS Buffer size has grown.\r
415df2a3 1825 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1826\r
1827**/\r
95276127 1828EFI_STATUS\r
1829ConSplitterGrowBuffer (\r
1830 IN UINTN SizeOfCount,\r
1831 IN UINTN *Count,\r
1832 IN OUT VOID **Buffer\r
ed66e1bc 1833 );\r
95276127 1834\r
415df2a3 1835/**\r
1836 Return the current video mode information. Also returns info about existence\r
1837 of Graphics Output devices or UGA Draw devices in system, and if the Std In device is locked. All the\r
1838 arguments are optional and only returned if a non NULL pointer is passed in.\r
1839\r
1840 @param This Protocol instance pointer.\r
1841 @param Mode Are we in text of grahics mode.\r
fc753d3b 1842 @param GopUgaExists TRUE if Console Spliter has found a GOP or UGA device\r
415df2a3 1843 @param StdInLocked TRUE if StdIn device is keyboard locked\r
1844\r
1845 @retval EFI_SUCCESS Mode information returned.\r
1846 @retval EFI_INVALID_PARAMETER Invalid parameters.\r
1847\r
1848**/\r
95276127 1849EFI_STATUS\r
1850EFIAPI\r
1851ConSpliterConsoleControlGetMode (\r
1852 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
1853 OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,\r
fc753d3b 1854 OUT BOOLEAN *GopUgaExists,\r
95276127 1855 OUT BOOLEAN *StdInLocked\r
ed66e1bc 1856 );\r
95276127 1857\r
415df2a3 1858/**\r
1859 Set the current mode to either text or graphics. Graphics is\r
1860 for Quiet Boot.\r
1861\r
2da292f6 1862 @param This Console Control Protocol instance pointer.\r
1863 @param Mode Mode to set.\r
415df2a3 1864\r
1865 @retval EFI_SUCCESS Mode information returned.\r
1866 @retval EFI_INVALID_PARAMETER Invalid parameter.\r
1867 @retval EFI_UNSUPPORTED Operation unsupported.\r
1868\r
1869**/\r
95276127 1870EFI_STATUS\r
1871EFIAPI\r
1872ConSpliterConsoleControlSetMode (\r
1873 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
1874 IN EFI_CONSOLE_CONTROL_SCREEN_MODE Mode\r
ed66e1bc 1875 );\r
95276127 1876\r
415df2a3 1877/**\r
2da292f6 1878 Returns information for an available graphics mode that the graphics device\r
1879 and the set of active video output devices supports.\r
415df2a3 1880\r
2da292f6 1881 @param This The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.\r
1882 @param ModeNumber The mode number to return information on.\r
1883 @param SizeOfInfo A pointer to the size, in bytes, of the Info buffer.\r
1884 @param Info A pointer to callee allocated buffer that returns information about ModeNumber.\r
415df2a3 1885\r
2da292f6 1886 @retval EFI_SUCCESS Mode information returned.\r
1887 @retval EFI_BUFFER_TOO_SMALL The Info buffer was too small.\r
1888 @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the video mode.\r
1889 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()\r
1890 @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
1891 @retval EFI_OUT_OF_RESOURCES No resource available.\r
415df2a3 1892\r
1893**/\r
95276127 1894EFI_STATUS\r
1895EFIAPI\r
1896ConSpliterGraphicsOutputQueryMode (\r
fc753d3b 1897 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,\r
1898 IN UINT32 ModeNumber,\r
1899 OUT UINTN *SizeOfInfo,\r
66aa04e4 1900 OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info\r
ed66e1bc 1901 );\r
95276127 1902\r
415df2a3 1903/**\r
ed055f1b 1904 Set the video device into the specified mode and clears the visible portions of\r
2da292f6 1905 the output display to black.\r
415df2a3 1906\r
2da292f6 1907 @param This The EFI_GRAPHICS_OUTPUT_PROTOCOL instance.\r
1908 @param ModeNumber Abstraction that defines the current video mode.\r
415df2a3 1909\r
2da292f6 1910 @retval EFI_SUCCESS The graphics mode specified by ModeNumber was selected.\r
1911 @retval EFI_DEVICE_ERROR The device had an error and could not complete the request.\r
1912 @retval EFI_UNSUPPORTED ModeNumber is not supported by this device.\r
1913 @retval EFI_OUT_OF_RESOURCES No resource available.\r
415df2a3 1914\r
1915**/\r
95276127 1916EFI_STATUS\r
1917EFIAPI\r
1918ConSpliterGraphicsOutputSetMode (\r
1919 IN EFI_GRAPHICS_OUTPUT_PROTOCOL * This,\r
1920 IN UINT32 ModeNumber\r
ed66e1bc 1921 );\r
95276127 1922\r
415df2a3 1923/**\r
1924 The following table defines actions for BltOperations.\r
1925\r
1926 EfiBltVideoFill - Write data from the BltBuffer pixel (SourceX, SourceY)\r
1927 directly to every pixel of the video display rectangle\r
1928 (DestinationX, DestinationY)\r
1929 (DestinationX + Width, DestinationY + Height).\r
1930 Only one pixel will be used from the BltBuffer. Delta is NOT used.\r
1931 EfiBltVideoToBltBuffer - Read data from the video display rectangle\r
1932 (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in\r
1933 the BltBuffer rectangle (DestinationX, DestinationY )\r
1934 (DestinationX + Width, DestinationY + Height). If DestinationX or\r
1935 DestinationY is not zero then Delta must be set to the length in bytes\r
1936 of a row in the BltBuffer.\r
1937 EfiBltBufferToVideo - Write data from the BltBuffer rectangle\r
1938 (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the\r
1939 video display rectangle (DestinationX, DestinationY)\r
1940 (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is\r
1941 not zero then Delta must be set to the length in bytes of a row in the\r
1942 BltBuffer.\r
1943 EfiBltVideoToVideo - Copy from the video display rectangle\r
1944 (SourceX, SourceY) (SourceX + Width, SourceY + Height) .\r
1945 to the video display rectangle (DestinationX, DestinationY)\r
1946 (DestinationX + Width, DestinationY + Height).\r
1947 The BltBuffer and Delta are not used in this mode.\r
1948\r
1949 @param This Protocol instance pointer.\r
1950 @param BltBuffer Buffer containing data to blit into video buffer.\r
1951 This buffer has a size of\r
1952 Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
1953 @param BltOperation Operation to perform on BlitBuffer and video\r
1954 memory\r
1955 @param SourceX X coordinate of source for the BltBuffer.\r
1956 @param SourceY Y coordinate of source for the BltBuffer.\r
1957 @param DestinationX X coordinate of destination for the BltBuffer.\r
1958 @param DestinationY Y coordinate of destination for the BltBuffer.\r
1959 @param Width Width of rectangle in BltBuffer in pixels.\r
ed055f1b 1960 @param Height Hight of rectangle in BltBuffer in pixels.\r
33019a71 1961 @param Delta OPTIONAL.\r
415df2a3 1962\r
1963 @retval EFI_SUCCESS The Blt operation completed.\r
1964 @retval EFI_INVALID_PARAMETER BltOperation is not valid.\r
1965 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video\r
1966 buffer.\r
1967\r
1968**/\r
95276127 1969EFI_STATUS\r
1970EFIAPI\r
1971ConSpliterGraphicsOutputBlt (\r
1972 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,\r
1973 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL\r
1974 IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,\r
1975 IN UINTN SourceX,\r
1976 IN UINTN SourceY,\r
1977 IN UINTN DestinationX,\r
1978 IN UINTN DestinationY,\r
1979 IN UINTN Width,\r
1980 IN UINTN Height,\r
1981 IN UINTN Delta OPTIONAL\r
ed66e1bc 1982 );\r
95276127 1983\r
33019a71 1984/**\r
ed055f1b 1985 Write data from the buffer to video display based on Graphics Output setting.\r
33019a71 1986\r
1987 @param Private Consplitter Text Out pointer.\r
1988 @param GraphicsOutput Graphics Output protocol pointer.\r
1989 @param UgaDraw UGA Draw protocol pointer.\r
1990\r
1991 @retval EFI_UNSUPPORTED No graphics devcie available .\r
1992 @retval EFI_SUCCESS The Blt operation completed.\r
1993 @retval EFI_INVALID_PARAMETER BltOperation is not valid.\r
1994 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.\r
ed055f1b 1995\r
33019a71 1996\r
1997**/\r
95276127 1998EFI_STATUS\r
1999DevNullGopSync (\r
2000 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
2001 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
2002 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
ed66e1bc 2003 );\r
95276127 2004\r
415df2a3 2005/**\r
2006 Return the current video mode information.\r
2007\r
2da292f6 2008 @param This The EFI_UGA_DRAW_PROTOCOL instance.\r
2009 @param HorizontalResolution The size of video screen in pixels in the X dimension.\r
2010 @param VerticalResolution The size of video screen in pixels in the Y dimension.\r
2011 @param ColorDepth Number of bits per pixel, currently defined to be 32.\r
2012 @param RefreshRate The refresh rate of the monitor in Hertz.\r
415df2a3 2013\r
2da292f6 2014 @retval EFI_SUCCESS Mode information returned.\r
2015 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()\r
2016 @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
415df2a3 2017\r
2018**/\r
d0c64728 2019EFI_STATUS\r
2020EFIAPI\r
2021ConSpliterUgaDrawGetMode (\r
2022 IN EFI_UGA_DRAW_PROTOCOL *This,\r
2023 OUT UINT32 *HorizontalResolution,\r
2024 OUT UINT32 *VerticalResolution,\r
2025 OUT UINT32 *ColorDepth,\r
2026 OUT UINT32 *RefreshRate\r
ed66e1bc 2027 );\r
d0c64728 2028\r
415df2a3 2029/**\r
2da292f6 2030 Set the current video mode information.\r
415df2a3 2031\r
2da292f6 2032 @param This The EFI_UGA_DRAW_PROTOCOL instance.\r
2033 @param HorizontalResolution The size of video screen in pixels in the X dimension.\r
2034 @param VerticalResolution The size of video screen in pixels in the Y dimension.\r
2035 @param ColorDepth Number of bits per pixel, currently defined to be 32.\r
2036 @param RefreshRate The refresh rate of the monitor in Hertz.\r
415df2a3 2037\r
2da292f6 2038 @retval EFI_SUCCESS Mode information returned.\r
2039 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()\r
2040 @retval EFI_OUT_OF_RESOURCES Out of resources.\r
415df2a3 2041\r
2042**/\r
d0c64728 2043EFI_STATUS\r
2044EFIAPI\r
2045ConSpliterUgaDrawSetMode (\r
2046 IN EFI_UGA_DRAW_PROTOCOL *This,\r
2047 IN UINT32 HorizontalResolution,\r
2048 IN UINT32 VerticalResolution,\r
2049 IN UINT32 ColorDepth,\r
2050 IN UINT32 RefreshRate\r
ed66e1bc 2051 );\r
d0c64728 2052\r
415df2a3 2053/**\r
2da292f6 2054 Blt a rectangle of pixels on the graphics screen.\r
415df2a3 2055\r
2da292f6 2056 The following table defines actions for BltOperations.\r
415df2a3 2057\r
2da292f6 2058 EfiUgaVideoFill:\r
2059 Write data from the BltBuffer pixel (SourceX, SourceY)\r
2060 directly to every pixel of the video display rectangle\r
2061 (DestinationX, DestinationY)\r
2062 (DestinationX + Width, DestinationY + Height).\r
2063 Only one pixel will be used from the BltBuffer. Delta is NOT used.\r
ed055f1b 2064 EfiUgaVideoToBltBuffer:\r
2da292f6 2065 Read data from the video display rectangle\r
2066 (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in\r
2067 the BltBuffer rectangle (DestinationX, DestinationY )\r
2068 (DestinationX + Width, DestinationY + Height). If DestinationX or\r
2069 DestinationY is not zero then Delta must be set to the length in bytes\r
2070 of a row in the BltBuffer.\r
2071 EfiUgaBltBufferToVideo:\r
2072 Write data from the BltBuffer rectangle\r
2073 (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the\r
2074 video display rectangle (DestinationX, DestinationY)\r
2075 (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is\r
2076 not zero then Delta must be set to the length in bytes of a row in the\r
2077 BltBuffer.\r
2078 EfiUgaVideoToVideo:\r
2079 Copy from the video display rectangle\r
2080 (SourceX, SourceY) (SourceX + Width, SourceY + Height) .\r
2081 to the video display rectangle (DestinationX, DestinationY)\r
2082 (DestinationX + Width, DestinationY + Height).\r
2083 The BltBuffer and Delta are not used in this mode.\r
2084\r
2085 @param This Protocol instance pointer.\r
2086 @param BltBuffer Buffer containing data to blit into video buffer. This\r
2087 buffer has a size of Width*Height*sizeof(EFI_UGA_PIXEL)\r
2088 @param BltOperation Operation to perform on BlitBuffer and video memory\r
2089 @param SourceX X coordinate of source for the BltBuffer.\r
2090 @param SourceY Y coordinate of source for the BltBuffer.\r
2091 @param DestinationX X coordinate of destination for the BltBuffer.\r
2092 @param DestinationY Y coordinate of destination for the BltBuffer.\r
2093 @param Width Width of rectangle in BltBuffer in pixels.\r
2094 @param Height Hight of rectangle in BltBuffer in pixels.\r
2095 @param Delta OPTIONAL\r
2096\r
2097 @retval EFI_SUCCESS The Blt operation completed.\r
2098 @retval EFI_INVALID_PARAMETER BltOperation is not valid.\r
2099 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.\r
415df2a3 2100\r
2101**/\r
d0c64728 2102EFI_STATUS\r
2103EFIAPI\r
2104ConSpliterUgaDrawBlt (\r
2105 IN EFI_UGA_DRAW_PROTOCOL *This,\r
2106 IN EFI_UGA_PIXEL *BltBuffer, OPTIONAL\r
2107 IN EFI_UGA_BLT_OPERATION BltOperation,\r
2108 IN UINTN SourceX,\r
2109 IN UINTN SourceY,\r
2110 IN UINTN DestinationX,\r
2111 IN UINTN DestinationY,\r
2112 IN UINTN Width,\r
2113 IN UINTN Height,\r
2114 IN UINTN Delta OPTIONAL\r
ed66e1bc 2115 );\r
d0c64728 2116\r
33019a71 2117/**\r
ed055f1b 2118 Write data from the buffer to video display based on UGA Draw setting.\r
33019a71 2119\r
2120 @param Private Consplitter Text Out pointer.\r
2121 @param GraphicsOutput Graphics Output protocol pointer.\r
2122 @param UgaDraw UGA Draw protocol pointer.\r
2123\r
2124 @retval EFI_UNSUPPORTED No graphics devcie available .\r
2125 @retval EFI_SUCCESS The Blt operation completed.\r
2126 @retval EFI_INVALID_PARAMETER BltOperation is not valid.\r
2127 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.\r
ed055f1b 2128\r
33019a71 2129**/\r
d0c64728 2130EFI_STATUS\r
2131DevNullUgaSync (\r
2132 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
2133 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
2134 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
ed66e1bc 2135 );\r
95276127 2136\r
415df2a3 2137/**\r
2138 Write a Unicode string to the output device.\r
2139\r
2140 @param Private Pointer to the console output splitter's private\r
2141 data. It indicates the calling context.\r
2142 @param WString The NULL-terminated Unicode string to be\r
2143 displayed on the output device(s). All output\r
2144 devices must also support the Unicode drawing\r
2145 defined in this file.\r
2146\r
2147 @retval EFI_SUCCESS The string was output to the device.\r
2148 @retval EFI_DEVICE_ERROR The device reported an error while attempting to\r
2149 output the text.\r
2150 @retval EFI_UNSUPPORTED The output device's mode is not currently in a\r
2151 defined text mode.\r
2152 @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the\r
2153 characters in the Unicode string could not be\r
2154 rendered and were skipped.\r
2155\r
2156**/\r
95276127 2157EFI_STATUS\r
2158DevNullTextOutOutputString (\r
2159 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
2160 IN CHAR16 *WString\r
ed66e1bc 2161 );\r
95276127 2162\r
415df2a3 2163/**\r
2164 Sets the output device(s) to a specified mode.\r
2165\r
2da292f6 2166 @param Private Text Out Splitter pointer.\r
415df2a3 2167 @param ModeNumber The mode number to set.\r
2168\r
2169 @retval EFI_SUCCESS The requested text mode was set.\r
2170 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
2171 the request.\r
2172 @retval EFI_UNSUPPORTED The mode number was not valid.\r
2173 @retval EFI_OUT_OF_RESOURCES Out of resources.\r
2174\r
2175**/\r
95276127 2176EFI_STATUS\r
2177DevNullTextOutSetMode (\r
2178 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
2179 IN UINTN ModeNumber\r
ed66e1bc 2180 );\r
95276127 2181\r
415df2a3 2182/**\r
2183 Clears the output device(s) display to the currently selected background\r
2184 color.\r
2185\r
2da292f6 2186 @param Private Text Out Splitter pointer.\r
415df2a3 2187\r
2188 @retval EFI_SUCCESS The operation completed successfully.\r
2189 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
2190 the request.\r
2191 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.\r
2192\r
2193**/\r
95276127 2194EFI_STATUS\r
2195DevNullTextOutClearScreen (\r
2196 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
ed66e1bc 2197 );\r
95276127 2198\r
415df2a3 2199/**\r
f890b1e0 2200 Sets the current coordinates of the cursor position on NULL device.\r
415df2a3 2201\r
f890b1e0 2202 @param Private Text Out Splitter pointer.\r
2203 @param Column The column position to set the cursor to. Must be\r
2204 greater than or equal to zero and less than the\r
2205 number of columns by QueryMode ().\r
2206 @param Row The row position to set the cursor to. Must be\r
2207 greater than or equal to zero and less than the\r
2208 number of rows by QueryMode ().\r
415df2a3 2209\r
f890b1e0 2210 @retval EFI_SUCCESS Always returned.\r
415df2a3 2211\r
2212**/\r
95276127 2213EFI_STATUS\r
2214DevNullTextOutSetCursorPosition (\r
2215 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
2216 IN UINTN Column,\r
2217 IN UINTN Row\r
ed66e1bc 2218 );\r
95276127 2219\r
415df2a3 2220/**\r
f890b1e0 2221 Set cursor visibility property on NULL device.\r
415df2a3 2222\r
2da292f6 2223 @param Private Text Out Splitter pointer.\r
415df2a3 2224 @param Visible If TRUE, the cursor is set to be visible, If\r
2225 FALSE, the cursor is set to be invisible.\r
2226\r
f890b1e0 2227 @retval EFI_SUCCESS Always returned.\r
415df2a3 2228\r
2229**/\r
95276127 2230EFI_STATUS\r
2231DevNullTextOutEnableCursor (\r
2232 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
2233 IN BOOLEAN Visible\r
ed66e1bc 2234 );\r
95276127 2235\r
415df2a3 2236/**\r
2237 Take the DevNull TextOut device and update the Simple Text Out on every\r
2238 UGA device.\r
2239\r
2da292f6 2240 @param Private Text Out Splitter pointer.\r
415df2a3 2241\r
2242 @retval EFI_SUCCESS The request is valid.\r
2243 @retval other Return status of TextOut->OutputString ()\r
2244\r
2245**/\r
95276127 2246EFI_STATUS\r
aec072ad 2247DevNullSyncStdOut (\r
95276127 2248 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
ed66e1bc 2249 );\r
95276127 2250\r
2251#endif\r