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