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