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