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