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